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 2009/03/26 08:05:57 UTC

svn commit: r758538 - /camel/branches/camel-1.x/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaUdpProtocolCodecFactory.java

Author: davsclaus
Date: Thu Mar 26 07:05:54 2009
New Revision: 758538

URL: http://svn.apache.org/viewvc?rev=758538&view=rev
Log:
CAMEL-1444: Mina UDP type converter performance issue fixed.

Modified:
    camel/branches/camel-1.x/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaUdpProtocolCodecFactory.java

Modified: camel/branches/camel-1.x/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaUdpProtocolCodecFactory.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaUdpProtocolCodecFactory.java?rev=758538&r1=758537&r2=758538&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaUdpProtocolCodecFactory.java (original)
+++ camel/branches/camel-1.x/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaUdpProtocolCodecFactory.java Thu Mar 26 07:05:54 2009
@@ -22,6 +22,8 @@
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.NoTypeConversionAvailableException;
+import org.apache.camel.TypeConverter;
+import org.apache.camel.impl.converter.DefaultTypeConverter;
 import org.apache.mina.common.ByteBuffer;
 import org.apache.mina.common.IoSession;
 import org.apache.mina.filter.codec.ProtocolCodecFactory;
@@ -82,16 +84,25 @@
     }
 
     private ByteBuffer toByteBuffer(Object message, CharsetEncoder encoder) throws CharacterCodingException {
-        ByteBuffer answer;
-        try {
-            answer = context.getTypeConverter().convertTo(ByteBuffer.class, message);
-        } catch (NoTypeConversionAvailableException e) {
-            String value = context.getTypeConverter().convertTo(String.class, message);
-            answer = ByteBuffer.allocate(value.length()).setAutoExpand(true);
-            answer.putString(value, encoder);
+        boolean tryConvert = true;
+        TypeConverter converter = context.getTypeConverter();
+        if (message != null && converter instanceof DefaultTypeConverter) {
+            DefaultTypeConverter defaultTypeConverter = (DefaultTypeConverter) converter;
+            tryConvert = !defaultTypeConverter.hasNoConverterFor(ByteBuffer.class, message.getClass());
+        }
+        if (tryConvert) {
+            try {
+                return converter.convertTo(ByteBuffer.class, message);
+            } catch (NoTypeConversionAvailableException ex) {
+                // ignore
+            }
         }
+
+        ByteBuffer answer;
+        String value = context.getTypeConverter().convertTo(String.class, message);
+        answer = ByteBuffer.allocate(value.length()).setAutoExpand(true);
+        answer.putString(value, encoder);
         return answer;
     }
 
-
 }