This is an automated email from the ASF dual-hosted git repository. tabish pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/qpid-protonj2.git
The following commit(s) were added to refs/heads/main by this push: new ca26da4b PROTON-2869 Fix smalllong decoding ca26da4b is described below commit ca26da4b18913bf2825cacc097d0cb0c25bc77ec Author: Arnaud Cogoluègnes <acogolueg...@tuta.io> AuthorDate: Tue Feb 11 17:30:53 2025 +0100 PROTON-2869 Fix smalllong decoding --- .../qpid/protonj2/codec/decoders/ProtonDecoder.java | 4 ++-- .../protonj2/codec/decoders/ProtonStreamDecoder.java | 4 ++-- .../codec/decoders/primitives/Long8TypeDecoder.java | 2 +- .../protonj2/codec/primitives/LongTypeCodecTest.java | 16 ++++++++++------ 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/ProtonDecoder.java b/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/ProtonDecoder.java index f9b2b447..bb30aba7 100644 --- a/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/ProtonDecoder.java +++ b/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/ProtonDecoder.java @@ -621,7 +621,7 @@ public final class ProtonDecoder implements Decoder { switch (encodingCode) { case EncodingCodes.SMALLLONG: - return (long) buffer.readByte() & 0xff; + return (long) buffer.readByte(); case EncodingCodes.LONG: return buffer.readLong(); case EncodingCodes.NULL: @@ -637,7 +637,7 @@ public final class ProtonDecoder implements Decoder { switch (encodingCode) { case EncodingCodes.SMALLLONG: - return (long) buffer.readByte() & 0xff; + return buffer.readByte(); case EncodingCodes.LONG: return buffer.readLong(); case EncodingCodes.NULL: diff --git a/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/ProtonStreamDecoder.java b/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/ProtonStreamDecoder.java index 32b26ed2..8e595aec 100644 --- a/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/ProtonStreamDecoder.java +++ b/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/ProtonStreamDecoder.java @@ -645,7 +645,7 @@ public final class ProtonStreamDecoder implements StreamDecoder { switch (encodingCode) { case EncodingCodes.SMALLLONG: - return Long.valueOf(ProtonStreamUtils.readByte(stream) & 0xffl); + return (long) ProtonStreamUtils.readByte(stream); case EncodingCodes.LONG: return ProtonStreamUtils.readLong(stream); case EncodingCodes.NULL: @@ -661,7 +661,7 @@ public final class ProtonStreamDecoder implements StreamDecoder { switch (encodingCode) { case EncodingCodes.SMALLLONG: - return ProtonStreamUtils.readByte(stream) & 0xffl; + return ProtonStreamUtils.readByte(stream); case EncodingCodes.LONG: return ProtonStreamUtils.readLong(stream); case EncodingCodes.NULL: diff --git a/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/primitives/Long8TypeDecoder.java b/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/primitives/Long8TypeDecoder.java index a2fdd82b..eb402d51 100644 --- a/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/primitives/Long8TypeDecoder.java +++ b/protonj2/src/main/java/org/apache/qpid/protonj2/codec/decoders/primitives/Long8TypeDecoder.java @@ -32,7 +32,7 @@ public final class Long8TypeDecoder extends LongTypeDecoder { @Override public Long readValue(ProtonBuffer buffer, DecoderState state) throws DecodeException { - return (long) buffer.readByte() & 0xff; + return (long) buffer.readByte(); } @Override diff --git a/protonj2/src/test/java/org/apache/qpid/protonj2/codec/primitives/LongTypeCodecTest.java b/protonj2/src/test/java/org/apache/qpid/protonj2/codec/primitives/LongTypeCodecTest.java index 678bd211..e59abc2d 100644 --- a/protonj2/src/test/java/org/apache/qpid/protonj2/codec/primitives/LongTypeCodecTest.java +++ b/protonj2/src/test/java/org/apache/qpid/protonj2/codec/primitives/LongTypeCodecTest.java @@ -113,6 +113,8 @@ public class LongTypeCodecTest extends CodecTestSupport { buffer.writeLong(44); buffer.writeByte(EncodingCodes.SMALLLONG); buffer.writeByte((byte) 43); + buffer.writeByte(EncodingCodes.SMALLLONG); + buffer.writeByte((byte) -1); buffer.writeByte(EncodingCodes.NULL); buffer.writeByte(EncodingCodes.NULL); @@ -122,12 +124,14 @@ public class LongTypeCodecTest extends CodecTestSupport { assertEquals(42, streamDecoder.readLong(stream, streamDecoderState).intValue()); assertEquals(44, streamDecoder.readLong(stream, streamDecoderState, 42)); assertEquals(43, streamDecoder.readLong(stream, streamDecoderState, 42)); + assertEquals(-1, streamDecoder.readLong(stream, streamDecoderState, 42)); assertNull(streamDecoder.readLong(stream, streamDecoderState)); assertEquals(42, streamDecoder.readLong(stream, streamDecoderState, 42l)); } else { assertEquals(42, decoder.readLong(buffer, decoderState).intValue()); assertEquals(44, decoder.readLong(buffer, decoderState, 42)); assertEquals(43, decoder.readLong(buffer, decoderState, 42)); + assertEquals(-1, decoder.readLong(buffer, decoderState, 42)); assertNull(decoder.readLong(buffer, decoderState)); assertEquals(42, decoder.readLong(buffer, decoderState, 42l)); } @@ -183,13 +187,13 @@ public class LongTypeCodecTest extends CodecTestSupport { ProtonBuffer buffer = ProtonBufferAllocator.defaultAllocator().allocate(); buffer.writeByte(EncodingCodes.SMALLLONG); - buffer.writeByte((byte) 42); + buffer.writeByte((byte) -42); if (fromStream) { InputStream stream = new ProtonBufferInputStream(buffer); - assertEquals(42l, streamDecoder.readLong(stream, streamDecoderState).longValue()); + assertEquals(-42l, streamDecoder.readLong(stream, streamDecoderState).longValue()); } else { - assertEquals(42l, decoder.readLong(buffer, decoderState).longValue()); + assertEquals(-42l, decoder.readLong(buffer, decoderState).longValue()); } } @@ -360,14 +364,14 @@ public class LongTypeCodecTest extends CodecTestSupport { buffer.writeInt(2); // Count buffer.writeByte(EncodingCodes.LONG); buffer.writeLong(1l); // [0] - buffer.writeLong(2l); // [1] + buffer.writeLong(-2l); // [1] } else if (encoding == EncodingCodes.SMALLLONG) { buffer.writeByte(EncodingCodes.ARRAY32); buffer.writeInt(11); // Size buffer.writeInt(2); // Count buffer.writeByte(EncodingCodes.SMALLLONG); buffer.writeByte((byte) 1); // [0] - buffer.writeByte((byte) 2); // [1] + buffer.writeByte((byte) -2); // [1] } final Object result; @@ -386,7 +390,7 @@ public class LongTypeCodecTest extends CodecTestSupport { assertEquals(2, array.length); assertEquals(1, array[0]); - assertEquals(2, array[1]); + assertEquals(-2, array[1]); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org