This is an automated email from the ASF dual-hosted git repository.
tabish121 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 208bf3ea PROTON-2997 Fix array encoding for Timestamp types
208bf3ea is described below
commit 208bf3ea152e90b6cc907b2324fff5a00ad2abba
Author: Timothy Bish <[email protected]>
AuthorDate: Mon Nov 2 17:08:14 2026 -0500
PROTON-2997 Fix array encoding for Timestamp types
Write the correct encoding code and update the tests to correctly detect
the encode / decode expectations
---
.../encoders/primitives/TimestampTypeEncoder.java | 2 +-
.../codec/primitives/TimestampTypeCodecTest.java | 38 +++++++++++++++++++---
2 files changed, 35 insertions(+), 5 deletions(-)
diff --git
a/protonj2/src/main/java/org/apache/qpid/protonj2/codec/encoders/primitives/TimestampTypeEncoder.java
b/protonj2/src/main/java/org/apache/qpid/protonj2/codec/encoders/primitives/TimestampTypeEncoder.java
index 2a7c94c3..c27015ed 100644
---
a/protonj2/src/main/java/org/apache/qpid/protonj2/codec/encoders/primitives/TimestampTypeEncoder.java
+++
b/protonj2/src/main/java/org/apache/qpid/protonj2/codec/encoders/primitives/TimestampTypeEncoder.java
@@ -61,7 +61,7 @@ public final class TimestampTypeEncoder extends
AbstractPrimitiveTypeEncoder<Dat
@Override
public void writeRawArray(ProtonBuffer buffer, EncoderState state,
Object[] values) {
- buffer.writeByte(EncodingCodes.LONG);
+ buffer.writeByte(EncodingCodes.TIMESTAMP);
for (Object value : values) {
buffer.writeLong(((Date) value).getTime());
}
diff --git
a/protonj2/src/test/java/org/apache/qpid/protonj2/codec/primitives/TimestampTypeCodecTest.java
b/protonj2/src/test/java/org/apache/qpid/protonj2/codec/primitives/TimestampTypeCodecTest.java
index 10e52c90..f0ee8b62 100644
---
a/protonj2/src/test/java/org/apache/qpid/protonj2/codec/primitives/TimestampTypeCodecTest.java
+++
b/protonj2/src/test/java/org/apache/qpid/protonj2/codec/primitives/TimestampTypeCodecTest.java
@@ -17,6 +17,7 @@
package org.apache.qpid.protonj2.codec.primitives;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -248,9 +249,10 @@ public class TimestampTypeCodecTest extends
CodecTestSupport {
assertNotNull(result);
assertTrue(result.getClass().isArray());
- assertTrue(result.getClass().getComponentType().isPrimitive());
+ assertFalse(result.getClass().getComponentType().isPrimitive());
+ assertEquals(Long.class, result.getClass().getComponentType());
- long[] array = (long[]) result;
+ Long[] array = (Long[]) result;
assertEquals(size, array.length);
for (int i = 0; i < size; ++i) {
@@ -285,9 +287,10 @@ public class TimestampTypeCodecTest extends
CodecTestSupport {
assertNotNull(result);
assertTrue(result.getClass().isArray());
- assertTrue(result.getClass().getComponentType().isPrimitive());
+ assertFalse(result.getClass().getComponentType().isPrimitive());
+ assertEquals(Long.class, result.getClass().getComponentType());
- long[] array = (long[]) result;
+ Long[] array = (Long[]) result;
assertEquals(source.length, array.length);
}
@@ -315,4 +318,31 @@ public class TimestampTypeCodecTest extends
CodecTestSupport {
assertEquals(8, typeDecoder.readSize(buffer, decoderState));
}
}
+
+ @Test
+ public void testEncodeArrayOfTimestampsAndValidateOutput() throws
IOException {
+ ProtonBuffer buffer =
ProtonBufferAllocator.defaultAllocator().allocate();
+ Random random = new Random();
+ random.setSeed(System.nanoTime());
+
+ final int size = 10;
+
+ Date[] source = new Date[size];
+ for (int i = 0; i < size; ++i) {
+ source[i] = new Date(random.nextLong());
+ }
+
+ encoder.writeArray(buffer, encoderState, source);
+
+ assertEquals(EncodingCodes.ARRAY32, buffer.readByte());
+ // Size = count + type code + elements (10 * Long.BYTES)
+ assertEquals(Integer.BYTES + Byte.BYTES + size * Long.BYTES,
buffer.readInt());
+ assertEquals(10, buffer.readInt());
+
+ assertEquals(EncodingCodes.TIMESTAMP, buffer.readByte());
+
+ for (int i = 0; i < size; ++i) {
+ assertEquals(source[i].getTime(), buffer.readLong());
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]