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); } }