You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/05/28 09:39:02 UTC

svn commit: r949124 - in /camel/trunk/components/camel-mina/src: main/java/org/apache/camel/component/mina/MinaConverter.java test/java/org/apache/camel/component/mina/MinaConverterTest.java

Author: davsclaus
Date: Fri May 28 07:39:02 2010
New Revision: 949124

URL: http://svn.apache.org/viewvc?rev=949124&view=rev
Log:
CAMEL-2762: Fixing Mina ByteBuffer toString coverter leaving ByteBuffer back in a its existing state.

Modified:
    camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java
    camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java

Modified: camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java?rev=949124&r1=949123&r2=949124&view=diff
==============================================================================
--- camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java (original)
+++ camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java Fri May 28 07:39:02 2010
@@ -39,9 +39,14 @@ public final class MinaConverter {
 
     @Converter
     public static byte[] toByteArray(ByteBuffer buffer) {
-        byte[] answer = new byte[buffer.remaining()];
-        buffer.get(answer);
-        return answer;
+        buffer.mark();
+        try {
+            byte[] answer = new byte[buffer.remaining()];
+            buffer.get(answer);
+            return answer;
+        } finally {
+            buffer.reset();
+        }
     }
 
     @Converter

Modified: camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java?rev=949124&r1=949123&r2=949124&view=diff
==============================================================================
--- camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java (original)
+++ camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java Fri May 28 07:39:02 2010
@@ -52,6 +52,20 @@ public class MinaConverterTest extends T
         assertEquals("Hello World \u4f60\u597d", out);
     }
 
+    public void testToStringTwoTimes() throws UnsupportedEncodingException {
+        String in = "Hello World \u4f60\u597d";
+        ByteBuffer bb = ByteBuffer.wrap(in.getBytes("UTF-8"));
+        Exchange exchange = new DefaultExchange(new DefaultCamelContext());
+        exchange.setProperty(Exchange.CHARSET_NAME, "UTF-8");
+
+        String out = MinaConverter.toString(bb, exchange);
+        assertEquals("Hello World \u4f60\u597d", out);
+
+        // should be possible to convert to string without affecting the ByteBuffer
+        out = MinaConverter.toString(bb, exchange);
+        assertEquals("Hello World \u4f60\u597d", out);
+    }
+
     public void testToInputStream() throws Exception {
         byte[] in = "Hello World".getBytes();
         ByteBuffer bb = ByteBuffer.wrap(in);