Author: davsclaus
Date: Mon Mar 30 15:09:39 2009
New Revision: 760001

URL: http://svn.apache.org/viewvc?rev=760001&view=rev
Log:
Reworked the UDP protocol a bit to see if we can get it working with UDP 
without hanging after long time use. Works in Camel 2.0 but hangs in 1.6.x.

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=760001&r1=760000&r2=760001&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
 Mon Mar 30 15:09:39 2009
@@ -87,22 +87,26 @@
         boolean tryConvert = true;
         TypeConverter converter = context.getTypeConverter();
         if (message != null && converter instanceof DefaultTypeConverter) {
+            // see if we have a String type converter
             DefaultTypeConverter defaultTypeConverter = (DefaultTypeConverter) 
converter;
-            tryConvert = 
!defaultTypeConverter.hasNoConverterFor(ByteBuffer.class, message.getClass());
+            tryConvert = !defaultTypeConverter.hasNoConverterFor(String.class, 
message.getClass());
         }
         if (tryConvert) {
             try {
-                return converter.convertTo(ByteBuffer.class, message);
+                // use the string converter
+                String value = converter.convertTo(String.class, message);
+                if (value != null) {
+                    ByteBuffer answer = 
ByteBuffer.allocate(value.length()).setAutoExpand(true);
+                    answer.putString(value, encoder);
+                    return answer;
+                }
             } 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;
+        // failback to use a byte buffer converter
+        return context.getTypeConverter().convertTo(ByteBuffer.class, message);
     }
 
 }


Reply via email to