I'm upgrading to camel 2.0 and hit a snag with the type conversions that didn't occur with camel 1.5. Basically I have a route like this:
<route id="tasks"> <from uri="timer://taskTimer?fixedRate=true&period=60000" /> <bean ref="taskQueue" method="fireTask" /> <bean ref="taskSrv" method="runTask" /> </route> The taskQueue's fireTask() will return null if there are no tasks in the queue. That gets passed along to the taskSrv's runTask(String msg) method, which instead of receiving null, it receives "Message: [Body is null]". Since it tries to process all the strings it receives that are not null, it fails. I traced into the camel code, and the ToStringTypeConverter.convertTo(Class, Object) method is called and gets into value.toString(). The value is of type DefaultMessage, which has a toString() method @Override public String toString() { return MessageHelper.extractBodyForLogging(this); } which returns the bad "Message: [Body is null]" message. I think DefaultMessage should check for a null body and return null if the body really is null. To get around this in all cases, I tried to add my own converter for DefaultMessage to String, which is successfully detected but then not called. The issue is that the ToStringTypeConverter had been promoted from a fallback type converter to a regular typeconverter (see rev 793935), which apparently was being found instead of my custom type converter. I've worked around this by putting a filter on this route that ensures the message is not null, but you should be able to send a null to a method expecting a string and receive a null. Also FYI, the links to camel 2.0 on the Download page don't work (I'm using Firefox 3.5). -- View this message in context: http://www.nabble.com/ToStringTypeConverter-and-null-message-bodies-tp25978515p25978515.html Sent from the Camel - Users mailing list archive at Nabble.com.