This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch backport/25330-to-camel-4.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 37672f1335994a8a4b47b6180851d5123eedfdfe
Author: Omar Atie <[email protected]>
AuthorDate: Tue Aug 4 13:43:52 2026 -0700

    CAMEL-24355: Use absolute ByteBuffer.get for simpler conversion
    
    Switch to buffer.get(0, bArray) after review feedback and add read-only
    buffer coverage. Drop unnecessary public modifier from test class.
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
    Co-authored-by: Cursor <[email protected]>
---
 .../main/java/org/apache/camel/converter/NIOConverter.java |  6 +-----
 .../java/org/apache/camel/converter/NIOConverterTest.java  | 14 +++++++++++++-
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git 
a/core/camel-base/src/main/java/org/apache/camel/converter/NIOConverter.java 
b/core/camel-base/src/main/java/org/apache/camel/converter/NIOConverter.java
index 8e08c9eb4bde..55eb58eef253 100644
--- a/core/camel-base/src/main/java/org/apache/camel/converter/NIOConverter.java
+++ b/core/camel-base/src/main/java/org/apache/camel/converter/NIOConverter.java
@@ -50,11 +50,7 @@ public final class NIOConverter {
     @Converter(order = 1)
     public static byte[] toByteArray(ByteBuffer buffer) {
         byte[] bArray = new byte[buffer.limit()];
-        if (bArray.length > 0) {
-            ByteBuffer copy = buffer.duplicate();
-            copy.rewind();
-            copy.get(bArray);
-        }
+        buffer.get(0, bArray);
         return bArray;
     }
 
diff --git 
a/core/camel-core/src/test/java/org/apache/camel/converter/NIOConverterTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/converter/NIOConverterTest.java
index 8afe34a0cbdf..a8bf1349b9de 100644
--- 
a/core/camel-core/src/test/java/org/apache/camel/converter/NIOConverterTest.java
+++ 
b/core/camel-core/src/test/java/org/apache/camel/converter/NIOConverterTest.java
@@ -29,7 +29,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
-public class NIOConverterTest extends ContextTestSupport {
+class NIOConverterTest extends ContextTestSupport {
     private static final String TEST_FILE_NAME = "hello" + UUID.randomUUID() + 
".txt";
 
     @Test
@@ -91,6 +91,18 @@ public class NIOConverterTest extends ContextTestSupport {
         assertThat(out).isEmpty();
     }
 
+    @Test
+    void testToByteArrayReadOnlyFullyConsumedBuffer() {
+        ByteBuffer bb = ByteBuffer.wrap("Hello".getBytes()).asReadOnlyBuffer();
+        while (bb.hasRemaining()) {
+            bb.get();
+        }
+
+        byte[] out = NIOConverter.toByteArray(bb);
+
+        assertThat(out).containsExactly("Hello".getBytes());
+    }
+
     @Test
     void testToStringFullyConsumedBuffer() throws Exception {
         ByteBuffer bb = ByteBuffer.wrap("Hello".getBytes());

Reply via email to