Skip to content

Commit ad2f34b

Browse files
author
Ilya Bogdanov
authored
Update core and support Service resume [ECR-4130] (#1389)
Updates to revision c46b533 of Core. Adds service resuming support to the Java Runtime proxy in Rust. Also fixes the error conversion for exceptions in the service constructor.
1 parent 3a2019d commit ad2f34b

File tree

25 files changed

+564
-549
lines changed

25 files changed

+564
-549
lines changed

exonum-java-binding/common/src/main/java/com/exonum/binding/common/message/ParsedTransactionMessage.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020

2121
import com.exonum.binding.common.crypto.PublicKey;
2222
import com.exonum.binding.common.hash.HashCode;
23-
import com.exonum.core.messages.Consensus;
2423
import com.exonum.core.messages.Consensus.ExonumMessage;
24+
import com.exonum.core.messages.Messages;
2525
import com.exonum.core.messages.Runtime.AnyTx;
2626
import com.google.common.base.MoreObjects;
2727
import com.google.protobuf.ByteString;
@@ -36,7 +36,7 @@ final class ParsedTransactionMessage implements TransactionMessage {
3636

3737
// signedMessage is the source protocol buffers message; parsedMessage is its parsed
3838
// representation.
39-
private final Consensus.SignedMessage signedMessage;
39+
private final Messages.SignedMessage signedMessage;
4040
private final SignedMessage parsedMessage;
4141
private final AnyTx tx;
4242

@@ -46,7 +46,7 @@ final class ParsedTransactionMessage implements TransactionMessage {
4646
* @throws IllegalArgumentException if the signed message does not contain an Exonum transaction
4747
* message
4848
*/
49-
ParsedTransactionMessage(Consensus.SignedMessage signedMessage) {
49+
ParsedTransactionMessage(Messages.SignedMessage signedMessage) {
5050
this.signedMessage = signedMessage;
5151
// Decode the signed message
5252
try {

exonum-java-binding/common/src/main/java/com/exonum/binding/common/message/SignedMessage.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,12 @@
2222
import com.exonum.binding.common.hash.HashCode;
2323
import com.exonum.core.messages.Consensus;
2424
import com.exonum.core.messages.Consensus.ExonumMessage;
25+
import com.exonum.core.messages.Messages;
2526
import com.google.protobuf.ByteString;
2627
import com.google.protobuf.InvalidProtocolBufferException;
2728

2829
/**
29-
* A wrapper around {@link Consensus.SignedMessage} protobuf message containing
30+
* A wrapper around {@link Messages.SignedMessage} protobuf message containing
3031
* {@link Consensus.ExonumMessage}, which converts protobuf types into internal types.
3132
*
3233
* <p>It currently does not support verification of the signature against the author's public
@@ -54,13 +55,13 @@ private SignedMessage(ExonumMessage payload, PublicKey authorPk,
5455
* @param messageBytes the serialized message to parse
5556
* @return a signed message with exonum message as its payload
5657
* @throws InvalidProtocolBufferException if the given bytes are not a serialized
57-
* {@link Consensus.SignedMessage}; or if the payload of the message is not
58+
* {@link Messages.SignedMessage}; or if the payload of the message is not
5859
* {@link Consensus.ExonumMessage}
5960
*/
6061
public static SignedMessage parseFrom(byte[] messageBytes) throws InvalidProtocolBufferException {
6162
// Try to decode the SignedMessage container
6263
HashCode hash = sha256().hashBytes(messageBytes);
63-
Consensus.SignedMessage message = Consensus.SignedMessage.parseFrom(messageBytes);
64+
Messages.SignedMessage message = Messages.SignedMessage.parseFrom(messageBytes);
6465
return fromProto(message, hash);
6566
}
6667

@@ -71,13 +72,13 @@ public static SignedMessage parseFrom(byte[] messageBytes) throws InvalidProtoco
7172
* @throws InvalidProtocolBufferException if a signed message does not contain a valid payload
7273
* that is a serialized {@link Consensus.ExonumMessage}
7374
*/
74-
public static SignedMessage fromProto(Consensus.SignedMessage message)
75+
public static SignedMessage fromProto(Messages.SignedMessage message)
7576
throws InvalidProtocolBufferException {
7677
HashCode hash = sha256().hashBytes(message.toByteArray());
7778
return fromProto(message, hash);
7879
}
7980

80-
private static SignedMessage fromProto(Consensus.SignedMessage message,
81+
private static SignedMessage fromProto(Messages.SignedMessage message,
8182
HashCode messageHash) throws InvalidProtocolBufferException {
8283
// Try to decode the payload, which is stored as bytes. It is expected to be an ExonumMessage
8384
ByteString payloadBytes = message.getPayload();

exonum-java-binding/common/src/main/java/com/exonum/binding/common/message/TransactionMessage.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import com.exonum.binding.common.crypto.KeyPair;
2727
import com.exonum.binding.common.crypto.PublicKey;
2828
import com.exonum.binding.common.hash.HashCode;
29-
import com.exonum.core.messages.Consensus;
3029
import com.exonum.core.messages.Consensus.ExonumMessage;
30+
import com.exonum.core.messages.Messages;
3131
import com.exonum.core.messages.Runtime.AnyTx;
3232
import com.exonum.core.messages.Runtime.CallInfo;
3333
import com.exonum.core.messages.Types;
@@ -100,7 +100,7 @@ static Builder builder() {
100100
*/
101101
static TransactionMessage fromBytes(byte[] bytes) {
102102
try {
103-
Consensus.SignedMessage signedMessage = Consensus.SignedMessage.parseFrom(bytes);
103+
Messages.SignedMessage signedMessage = Messages.SignedMessage.parseFrom(bytes);
104104
return new ParsedTransactionMessage(signedMessage);
105105
} catch (InvalidProtocolBufferException e) {
106106
throw new IllegalArgumentException(e);
@@ -228,7 +228,7 @@ public TransactionMessage build() {
228228

229229
byte[] signature = cryptoFunction.signMessage(exonumMessage, keys.getPrivateKey());
230230

231-
Consensus.SignedMessage signedMessage = Consensus.SignedMessage.newBuilder()
231+
Messages.SignedMessage signedMessage = Messages.SignedMessage.newBuilder()
232232
.setAuthor(Types.PublicKey.newBuilder()
233233
.setData(ByteString.copyFrom(authorPublicKey.toBytes()))
234234
.build())

exonum-java-binding/common/src/test/java/com/exonum/binding/common/message/ParsedTransactionMessageTest.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.exonum.core.messages.Consensus;
2626
import com.exonum.core.messages.Consensus.ExonumMessage;
2727
import com.exonum.core.messages.Consensus.Prevote;
28+
import com.exonum.core.messages.Messages;
2829
import com.exonum.core.messages.Runtime.AnyTx;
2930
import com.exonum.core.messages.Runtime.CallInfo;
3031
import com.exonum.core.messages.Types;
@@ -47,7 +48,7 @@ class WithSignedMessage {
4748
final ByteString signature = ByteString.copyFrom(new byte[Ed25519.SIGNATURE_BYTES]);
4849
final PublicKey authorPublicKey = PublicKey.fromHexString("abcd");
4950

50-
Consensus.SignedMessage signedMessage;
51+
Messages.SignedMessage signedMessage;
5152

5253
@BeforeEach
5354
void createSignedMessage() {
@@ -94,8 +95,8 @@ void toBytesRoundtrip() throws InvalidProtocolBufferException {
9495
byte[] serializedMessage = message.toBytes();
9596

9697
// Decode as the protobuf message
97-
Consensus.SignedMessage signedProtoFromBytes =
98-
Consensus.SignedMessage.parseFrom(serializedMessage);
98+
Messages.SignedMessage signedProtoFromBytes =
99+
Messages.SignedMessage.parseFrom(serializedMessage);
99100

100101
// Check it is equal to the original proto message
101102
assertThat(signedProtoFromBytes).isEqualTo(signedMessage);
@@ -114,7 +115,7 @@ void createMessageNotTx() {
114115
.build()
115116
.toByteArray();
116117

117-
Consensus.SignedMessage signedMessage = aSignedMessageProto()
118+
Messages.SignedMessage signedMessage = aSignedMessageProto()
118119
.setPayload(ByteString.copyFrom(prevoteMessage))
119120
.build();
120121

@@ -135,7 +136,7 @@ void testEquals() throws InvalidProtocolBufferException {
135136
.suppress(Warning.NULL_FIELDS)
136137
// Only the source signedMessage is compared
137138
.withOnlyTheseFields("signedMessage")
138-
.withPrefabValues(Consensus.SignedMessage.class,
139+
.withPrefabValues(Messages.SignedMessage.class,
139140
signedConsensusMessage(red),
140141
signedConsensusMessage(black))
141142
.withPrefabValues(SignedMessage.class,
@@ -151,7 +152,7 @@ private static SignedMessage signedMessage(String payload) throws InvalidProtoco
151152
return SignedMessage.fromProto(signedConsensusMessage(payload));
152153
}
153154

154-
private static Consensus.SignedMessage signedConsensusMessage(String payload) {
155+
private static Messages.SignedMessage signedConsensusMessage(String payload) {
155156
return aSignedMessageProto()
156157
.setPayload(ExonumMessage.newBuilder()
157158
.setAnyTx(anyTx(payload))
@@ -160,8 +161,8 @@ private static Consensus.SignedMessage signedConsensusMessage(String payload) {
160161
.build();
161162
}
162163

163-
private static Consensus.SignedMessage.Builder aSignedMessageProto() {
164-
return Consensus.SignedMessage.newBuilder()
164+
private static Messages.SignedMessage.Builder aSignedMessageProto() {
165+
return Messages.SignedMessage.newBuilder()
165166
// Set the author only and keep the rest as defaults as the parser requires a non-empty key
166167
.setAuthor(Types.PublicKey.newBuilder()
167168
.setData(ByteString.copyFrom(bytes(1, 2, 3, 4)))

exonum-java-binding/common/src/test/java/com/exonum/binding/common/message/SignedMessageTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import com.exonum.binding.common.crypto.KeyPair;
2727
import com.exonum.binding.common.crypto.PublicKey;
2828
import com.exonum.binding.common.hash.HashCode;
29-
import com.exonum.core.messages.Consensus;
3029
import com.exonum.core.messages.Consensus.ExonumMessage;
30+
import com.exonum.core.messages.Messages;
3131
import com.exonum.core.messages.Types;
3232
import com.exonum.core.messages.Types.Signature;
3333
import com.google.protobuf.ByteString;
@@ -45,7 +45,7 @@ class SignedMessageTest {
4545
class ParsedFromTestData {
4646
private ExonumMessage payload;
4747
private byte[] testSignature;
48-
private Consensus.SignedMessage message;
48+
private Messages.SignedMessage message;
4949

5050
@BeforeEach
5151
void createProtoMessage() {
@@ -57,7 +57,7 @@ void createProtoMessage() {
5757
Types.Signature signature = aSignature()
5858
.setData(ByteString.copyFrom(testSignature))
5959
.build();
60-
message = Consensus.SignedMessage.newBuilder()
60+
message = Messages.SignedMessage.newBuilder()
6161
.setPayload(payload.toByteString())
6262
.setAuthor(authorPk)
6363
.setSignature(signature)
@@ -102,7 +102,7 @@ void parseFromPayloadNotExonumMessage() {
102102
bytes("Invalid payload: not an ExonumMessage"));
103103
Types.PublicKey authorPk = aPublicKey().build();
104104
Types.Signature signature = aSignature().build();
105-
byte[] message = Consensus.SignedMessage.newBuilder()
105+
byte[] message = Messages.SignedMessage.newBuilder()
106106
.setPayload(invalidPayload)
107107
.setAuthor(authorPk)
108108
.setSignature(signature)

0 commit comments

Comments
 (0)