Sounds good. And btw I dont think there was a good reason for the String conversion. It should have been bytes from the start.
On Wed, Apr 24, 2013 at 10:13 AM, Thomas Termin <thomas.ter...@gmail.com> wrote: > Hello Claus, Mike, > > I can attach also the patch for mina2 this evening. > > Thomas > > > On Wed, Apr 24, 2013 at 10:09 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: > >> Hi >> >> Yeah should also be done on camel-mina2. >> >> >> On Wed, Apr 24, 2013 at 8:23 AM, Mikael Fernandus Simalango >> <mika...@gmail.com> wrote: >> > Hi Claus, >> > >> > If such change is to be applied to MinaUdpProtocolCodecFactory, the >> > equivalent codec in camel-mina2, Mina2UdpProtocolCodecFactory should also >> > be patched so that it can reflect consistent default codec behavior. >> > Currently, the default udp codec in camel-mina2 also converts the byte >> into >> > String before encoding them in an IoBuffer. >> > >> > Mina2UdpProtocolCodecFactory: >> > ... >> > private IoBuffer toIoBuffer(Object message, CharsetEncoder encoder) >> > throws CharacterCodingException, >> NoTypeConversionAvailableException >> > { >> > String value = context.getTypeConverter().convertTo(String.class, >> > message); >> > if (value != null) { >> > IoBuffer answer = >> > IoBuffer.allocate(value.length()).setAutoExpand(true); >> > answer.putString(value, encoder); >> > return answer; >> > } >> > >> > // failback to use a byte buffer converter >> > return >> > context.getTypeConverter().mandatoryConvertTo(IoBuffer.class, message); >> > } >> > .. >> > >> > Patch should be similar with the one provided by Thomas. Yet, I'm >> somewhat >> > curious about the reason to convert to the bytes into string in the >> default >> > udp codec encoding logic. There must be a reason why it was designed that >> > way. >> > >> > Regards, >> > Mike >> > >> > >> > On Mon, Apr 22, 2013 at 6:18 PM, Claus Ibsen <claus.ib...@gmail.com> >> wrote: >> > >> >> Hi >> >> >> >> Yeah udp should keep the data as byte[]. Fell free to log a JIRA and >> >> work on a patch. >> >> eg just change to use byte[] as that makes the most sense for UDP. >> >> >> >> On Mon, Apr 22, 2013 at 11:16 AM, Thomas Termin < >> thomas.ter...@gmail.com> >> >> wrote: >> >> > Hi, >> >> > >> >> > no I don't use ByteBuffer as body type. The easiest example what I >> did is >> >> > to create the following route: >> >> > <from uri="mina:udp://localhost:2002?sync=false"/> >> >> > <to uri="mina:udp://localhost:2000?sync=false"/> >> >> > >> >> > Just route it from on port to another port on the same host. Nothing >> >> > between it. >> >> > >> >> > >> >> > The MinaUdpProtocolCodecFactory on the consumer side decodes it from >> an >> >> udp >> >> > datagram to a byte[]. >> >> > >> >> > byte[] bytes = context.getTypeConverter().convertTo(byte[].class, >> >> in); >> >> > >> >> > On the provider side where it gets back to the wire it gets converted >> to >> >> a >> >> > string: >> >> > >> >> > String value = context.getTypeConverter().convertTo(String.class, >> >> > message); >> >> > >> >> > and then set to the ByteBuffer with the given charset. >> >> > >> >> > The result is that the original datagram is not anymore valid. What I >> >> > thought what would be right is, to not convert it to a String but >> leave >> >> it >> >> > as a byte array and put it into the ByteBuffer. >> >> > >> >> > I know of course that I can create an own codec. I do it currently to >> >> get >> >> > the route work but I thought it would be not necessary to just route >> UDP >> >> > datagramms. >> >> > >> >> > Cheers, >> >> > Thomas >> >> > >> >> > >> >> > On Fri, Apr 19, 2013 at 8:43 AM, Claus Ibsen <claus.ib...@gmail.com> >> >> wrote: >> >> > >> >> >> Hi >> >> >> >> >> >> You can always create your own codec and use that. >> >> >> >> >> >> And do you really use ByteBuffer as the body type? That is a Mina >> type? >> >> >> >> >> >> What we can do is to check the type of the body. If its already a >> >> >> ByteBuffer then use it as is. >> >> >> Otherwise we can try converting to byte[] and String. Which we need >> to >> >> >> create the ByteBuffer. >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> On Thu, Apr 18, 2013 at 5:17 PM, Thomas Termin < >> thomas.ter...@gmail.com >> >> > >> >> >> wrote: >> >> >> > Hi Claus, >> >> >> > >> >> >> > yeah it is the camel-mina. Sorry. >> >> >> > >> >> >> > We could make this configurable within the camel uri. Something >> like >> >> >> > encode=raw or whatever. Let me know if I should provide a >> fix/patch or >> >> >> > whatever. >> >> >> > >> >> >> > Cheers, >> >> >> > Thomas >> >> >> > >> >> >> > >> >> >> > On Thu, Apr 18, 2013 at 3:29 PM, Claus Ibsen < >> claus.ib...@gmail.com> >> >> >> wrote: >> >> >> > >> >> >> >> Hi >> >> >> >> >> >> >> >> Yeah it should probably be byte[] instead of a String. >> >> >> >> >> >> >> >> And I assume you refer to camel-mina ? >> >> >> >> >> >> >> >> On Thu, Apr 18, 2013 at 1:35 PM, Thomas Termin < >> >> thomas.ter...@gmail.com >> >> >> > >> >> >> >> wrote: >> >> >> >> > Hello, >> >> >> >> > >> >> >> >> > is there a special reason, that the MinaUdpProtocolCodecFactory >> >> encode >> >> >> >> > method always try to convert the message body to a string? Is >> >> there a >> >> >> way >> >> >> >> > to avoid the conversion to a String? I would need the falilback >> >> method >> >> >> >> > which is a conversion to a ByteBuffer. It would be nice to have >> >> that >> >> >> >> > configurable. >> >> >> >> > >> >> >> >> > String value = >> context.getTypeConverter().convertTo(String.class, >> >> >> >> message); >> >> >> >> > if (value != null) { >> >> >> >> > ByteBuffer answer = >> >> >> >> > ByteBuffer.allocate(value.length()).setAutoExpand(false); >> >> >> >> > answer.putString(value, encoder); >> >> >> >> > return answer; >> >> >> >> > } >> >> >> >> > >> >> >> >> > // failback to use a byte buffer converter >> >> >> >> > return >> >> context.getTypeConverter().mandatoryConvertTo(ByteBuffer.class, >> >> >> >> > message); >> >> >> >> > >> >> >> >> > Cheers, >> >> >> >> > Thomas >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> >> >> Claus Ibsen >> >> >> >> ----------------- >> >> >> >> Red Hat, Inc. >> >> >> >> FuseSource is now part of Red Hat >> >> >> >> Email: cib...@redhat.com >> >> >> >> Web: http://fusesource.com >> >> >> >> Twitter: davsclaus >> >> >> >> Blog: http://davsclaus.com >> >> >> >> Author of Camel in Action: http://www.manning.com/ibsen >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> >> Claus Ibsen >> >> >> ----------------- >> >> >> Red Hat, Inc. >> >> >> FuseSource is now part of Red Hat >> >> >> Email: cib...@redhat.com >> >> >> Web: http://fusesource.com >> >> >> Twitter: davsclaus >> >> >> Blog: http://davsclaus.com >> >> >> Author of Camel in Action: http://www.manning.com/ibsen >> >> >> >> >> >> >> >> >> >> >> -- >> >> Claus Ibsen >> >> ----------------- >> >> Red Hat, Inc. >> >> FuseSource is now part of Red Hat >> >> Email: cib...@redhat.com >> >> Web: http://fusesource.com >> >> Twitter: davsclaus >> >> Blog: http://davsclaus.com >> >> Author of Camel in Action: http://www.manning.com/ibsen >> >> >> >> >> >> -- >> Claus Ibsen >> ----------------- >> Red Hat, Inc. >> FuseSource is now part of Red Hat >> Email: cib...@redhat.com >> Web: http://fusesource.com >> Twitter: davsclaus >> Blog: http://davsclaus.com >> Author of Camel in Action: http://www.manning.com/ibsen >> -- Claus Ibsen ----------------- Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen