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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]