From 6d79b2f4551cc68f7588534fa98cbc2c60ad649a Mon Sep 17 00:00:00 2001 From: Oleg Bondar Date: Wed, 8 Jan 2020 16:40:50 +0200 Subject: [PATCH 1/2] ECR-4083: long to int migration --- .../exonum/binding/common/blockchain/CallInBlocks.java | 5 ++--- .../binding/common/blockchain/TransactionLocation.java | 4 ++-- .../binding/common/blockchain/CallInBlocksTest.java | 8 ++++---- .../serialization/TransactionLocationSerializerTest.java | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/exonum-java-binding/common/src/main/java/com/exonum/binding/common/blockchain/CallInBlocks.java b/exonum-java-binding/common/src/main/java/com/exonum/binding/common/blockchain/CallInBlocks.java index 2de3f967f7..ababef6d60 100644 --- a/exonum-java-binding/common/src/main/java/com/exonum/binding/common/blockchain/CallInBlocks.java +++ b/exonum-java-binding/common/src/main/java/com/exonum/binding/common/blockchain/CallInBlocks.java @@ -33,9 +33,8 @@ public final class CallInBlocks { * @throws IndexOutOfBoundsException if position is negative or greater than * {@value Integer#MAX_VALUE} */ - public static CallInBlock transaction(/* todo: change to int once ECR-4083 is integrated */ - long txPosition) { - checkElementIndex(Math.toIntExact(txPosition), Integer.MAX_VALUE, "txPosition"); + public static CallInBlock transaction(int txPosition) { + checkElementIndex(txPosition, Integer.MAX_VALUE, "txPosition"); return CallInBlock.newBuilder() .setTransaction(txPosition) .build(); diff --git a/exonum-java-binding/common/src/main/java/com/exonum/binding/common/blockchain/TransactionLocation.java b/exonum-java-binding/common/src/main/java/com/exonum/binding/common/blockchain/TransactionLocation.java index bfb6626358..186308f556 100644 --- a/exonum-java-binding/common/src/main/java/com/exonum/binding/common/blockchain/TransactionLocation.java +++ b/exonum-java-binding/common/src/main/java/com/exonum/binding/common/blockchain/TransactionLocation.java @@ -27,7 +27,7 @@ @AutoValue public abstract class TransactionLocation { - public static TransactionLocation valueOf(long height, long indexInBlock) { + public static TransactionLocation valueOf(long height, int indexInBlock) { return new AutoValue_TransactionLocation(height, indexInBlock); } @@ -42,7 +42,7 @@ public static TransactionLocation valueOf(long height, long indexInBlock) { * order of these indices. */ @SerializedName("position_in_block") - public abstract long getIndexInBlock(); + public abstract int getIndexInBlock(); /** * Provides a Gson type adapter for this class. diff --git a/exonum-java-binding/common/src/test/java/com/exonum/binding/common/blockchain/CallInBlocksTest.java b/exonum-java-binding/common/src/test/java/com/exonum/binding/common/blockchain/CallInBlocksTest.java index 28ec031aed..1c6dffc6bf 100644 --- a/exonum-java-binding/common/src/test/java/com/exonum/binding/common/blockchain/CallInBlocksTest.java +++ b/exonum-java-binding/common/src/test/java/com/exonum/binding/common/blockchain/CallInBlocksTest.java @@ -26,16 +26,16 @@ class CallInBlocksTest { @ParameterizedTest - @ValueSource(longs = {0, 1, Integer.MAX_VALUE - 1}) - void transaction(long txPosition) { + @ValueSource(ints = {0, 1, Integer.MAX_VALUE - 1}) + void transaction(int txPosition) { CallInBlock transaction = CallInBlocks.transaction(txPosition); assertThat(transaction.getTransaction()).isEqualTo(txPosition); } @ParameterizedTest - @ValueSource(longs = {/* Negative: */ Integer.MIN_VALUE, -2, -1, + @ValueSource(ints = {/* Negative: */ Integer.MIN_VALUE, -2, -1, /* Too big: */ Integer.MAX_VALUE}) - void transactionInvalidPositions(long txPosition) { + void transactionInvalidPositions(int txPosition) { assertThrows(IndexOutOfBoundsException.class, () -> CallInBlocks.transaction(txPosition)); } } diff --git a/exonum-java-binding/core/src/test/java/com/exonum/binding/core/blockchain/serialization/TransactionLocationSerializerTest.java b/exonum-java-binding/core/src/test/java/com/exonum/binding/core/blockchain/serialization/TransactionLocationSerializerTest.java index 51d17e6a0d..2f1f8c91b0 100644 --- a/exonum-java-binding/core/src/test/java/com/exonum/binding/core/blockchain/serialization/TransactionLocationSerializerTest.java +++ b/exonum-java-binding/core/src/test/java/com/exonum/binding/core/blockchain/serialization/TransactionLocationSerializerTest.java @@ -42,7 +42,7 @@ void roundTrip(TransactionLocation expected) { private static Stream testSource() { return Stream.of( TransactionLocation.valueOf(1, 1), - TransactionLocation.valueOf(Long.MAX_VALUE, Long.MAX_VALUE)); + TransactionLocation.valueOf(Long.MAX_VALUE, Integer.MAX_VALUE)); } } From 141e8161b88eb55fdedb14b1ffba3d387b2a5489 Mon Sep 17 00:00:00 2001 From: Oleg Bondar Date: Thu, 9 Jan 2020 10:29:22 +0200 Subject: [PATCH 2/2] changelog --- exonum-java-binding/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/exonum-java-binding/CHANGELOG.md b/exonum-java-binding/CHANGELOG.md index 11da51d60e..6d58a1c10c 100644 --- a/exonum-java-binding/CHANGELOG.md +++ b/exonum-java-binding/CHANGELOG.md @@ -48,6 +48,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - The specification of `Configurable` operations and `Service#initialize` to require throwing `ExecutionException` instead of `IllegalArgumentException`. +- Transaction index in block type changed from `long` to `int`. (#1348) ### Removed - Classes supporting no longer used tree-like list proof representation.