Just tested it against the 2.1 snapshot.  That fixed it, the method now
receives null when null was sent.  Thanks!



Claus Ibsen-2 wrote:
> 
> Hi
> 
> I have committed a fix. Would be cool if you could test it on your system.
> 
> You can build from the source or wait for a new SNAPSHOT being deployed
> http://camel.apache.org/download.html
> 
> 
> On Tue, Oct 20, 2009 at 6:43 PM, ndjensen <ndjen...@gmail.com> wrote:
>>
>> 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&amp;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.
>>
>>
> 
> 
> 
> -- 
> Claus Ibsen
> Apache Camel Committer
> 
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
> 
> 

-- 
View this message in context: 
http://www.nabble.com/ToStringTypeConverter-and-null-message-bodies-tp25978515p25994104.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to