From 786f08e2850c792fe867e7c984a66a4f1d03baf5 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Apr 2022 17:27:00 +0200 Subject: [PATCH 1/2] Bugfix/chunking cuts 2 bytes per chunk (#187) * Fix wrong boundaries while chunking. Fix test case and add valid recipient for integration testing. Remove unused methods. Fix test case. * Format. --- .../agrirouter/api/service/parameters/PayloadParameters.kt | 7 ------- .../impl/messaging/encoding/EncodeMessageServiceImpl.java | 6 ++---- .../messaging/encoding/EncodeMessageServiceImplTest.java | 2 +- .../test/messaging/rest/SendChunkedMessageTest.java | 2 +- .../test/usecase/SendAndReceiveChunkedMessagesTest.java | 7 ++++--- 5 files changed, 8 insertions(+), 16 deletions(-) diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/PayloadParameters.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/PayloadParameters.kt index 88498160..531649b0 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/PayloadParameters.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/PayloadParameters.kt @@ -36,13 +36,6 @@ class PayloadParameters : AbstractParameterBase(), ParameterValidation { return value!!.toStringUtf8().length > MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT } - /** - * The maximum length for messages / the payload. - */ - fun maxLengthForMessages(): Int { - return MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT - } - fun copyFrom(payload: PayloadParameters) { applicationMessageId = payload.applicationMessageId teamsetContextId = payload.teamsetContextId diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java index b8cb3370..d52e18ff 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java @@ -129,7 +129,7 @@ public List chunkAndBase64EncodeEachChunk( header.setApplicationMessageSeqNo(sequenceNumberForChunk); Chunk.ChunkComponent.Builder chunkInfo = Chunk.ChunkComponent.newBuilder(); chunkInfo.setContextId(chunkContextId); - chunkInfo.setCurrent(chunkNr.get()); + chunkInfo.setCurrent(chunkNr.getAndIncrement()); chunkInfo.setTotal(messageChunks.size()); chunkInfo.setTotalSize(wholeMessage.length); header.setChunkInfo(chunkInfo.build()); @@ -139,8 +139,6 @@ public List chunkAndBase64EncodeEachChunk( payload.setValue(ByteString.copyFromUtf8(Base64.getEncoder().encodeToString(chunk))); tuples.add(new MessageParameterTuple(header, payload)); - - chunkNr.getAndIncrement(); }); return tuples; } else { @@ -182,7 +180,7 @@ private List splitIntoChunks(byte[] wholeMessage) { chunks.add(chunk); remainingBytes = Arrays.copyOfRange( - remainingBytes, MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT + 1, remainingBytes.length - 1); + remainingBytes, MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT, remainingBytes.length); } while (remainingBytes.length > MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT); if (remainingBytes.length > 0) { chunks.add(remainingBytes); diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java index 8adb2459..c5c680ad 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java @@ -19,7 +19,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -class EncodeMessageServiceImplTest { +class AEncodeEncodeMessageServiceImplTest { @Test void givenEmptyMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java index 78d10969..112ee376 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java @@ -49,7 +49,7 @@ class SendChunkedMessageTest extends AbstractIntegrationTest { SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); messageHeaderParameters.setRecipients( - Collections.singletonList("37cd61d1-76eb-4145-a735-c938d05a32d8")); + Collections.singletonList("797b7f4b-79ec-4247-9fba-e726a55c4c7f")); PayloadParameters payloadParameters = new PayloadParameters(); payloadParameters.setValue( diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java index a10e7b84..eb54cd24 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java @@ -234,11 +234,12 @@ private void actionsForSender(ByteString messageContent, int expectedNrOfChunks) * @return - */ @SuppressWarnings("unused") - private static @NotNull Stream givenRealMessageContentWhenSendingMessagesTheContentShouldMatchAfterReceivingAndMergingIt() throws Throwable { + private static @NotNull Stream + givenRealMessageContentWhenSendingMessagesTheContentShouldMatchAfterReceivingAndMergingIt() + throws Throwable { return Stream.of( Arguments.of( - ByteString.copyFrom( - ContentReader.readRawData(ContentReader.Identifier.BIG_TASK_DATA)), + ByteString.copyFrom(ContentReader.readRawData(ContentReader.Identifier.BIG_TASK_DATA)), 3)); } From c0bb453d07967292b9a83d138c74829c05e4f058 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Apr 2022 17:31:10 +0200 Subject: [PATCH 2/2] Release 2.1.1 --- agrirouter-sdk-java-api/pom.xml | 2 +- agrirouter-sdk-java-convenience/pom.xml | 2 +- agrirouter-sdk-java-impl/pom.xml | 2 +- agrirouter-sdk-java-tests/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/agrirouter-sdk-java-api/pom.xml b/agrirouter-sdk-java-api/pom.xml index efabbd63..937361ab 100644 --- a/agrirouter-sdk-java-api/pom.xml +++ b/agrirouter-sdk-java-api/pom.xml @@ -6,7 +6,7 @@ com.agrirouter.api agrirouter-sdk-java - 2.1.0 + 2.1.1 AGRIROUTER SDK JAVA - API agrirouter-sdk-java-api diff --git a/agrirouter-sdk-java-convenience/pom.xml b/agrirouter-sdk-java-convenience/pom.xml index 10f0ce3a..0e90a441 100644 --- a/agrirouter-sdk-java-convenience/pom.xml +++ b/agrirouter-sdk-java-convenience/pom.xml @@ -5,7 +5,7 @@ com.agrirouter.api agrirouter-sdk-java - 2.1.0 + 2.1.1 AGRIROUTER SDK JAVA - CONVENIENCE agrirouter-sdk-java-convenience diff --git a/agrirouter-sdk-java-impl/pom.xml b/agrirouter-sdk-java-impl/pom.xml index 0e1693e9..b2110b6d 100644 --- a/agrirouter-sdk-java-impl/pom.xml +++ b/agrirouter-sdk-java-impl/pom.xml @@ -6,7 +6,7 @@ com.agrirouter.api agrirouter-sdk-java - 2.1.0 + 2.1.1 AGRIROUTER SDK JAVA - IMPL agrirouter-sdk-java-impl diff --git a/agrirouter-sdk-java-tests/pom.xml b/agrirouter-sdk-java-tests/pom.xml index a924583c..57cb66a8 100644 --- a/agrirouter-sdk-java-tests/pom.xml +++ b/agrirouter-sdk-java-tests/pom.xml @@ -5,7 +5,7 @@ agrirouter-sdk-java com.agrirouter.api - 2.1.0 + 2.1.1 4.0.0 AGRIROUTER SDK JAVA - TESTS diff --git a/pom.xml b/pom.xml index d446ecc2..cc0a55a4 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.agrirouter.api agrirouter-sdk-java - 2.1.0 + 2.1.1 pom AGRIROUTER SDK JAVA