[ https://issues.apache.org/activemq/browse/SM-553?page=comments#action_36834 ] Guillaume Nodet commented on SM-553: ------------------------------------
Author: gnodet Date: Wed Aug 23 12:26:29 2006 New Revision: 434130 URL: http://svn.apache.org/viewvc?rev=434130&view=rev Log: SM-553: add a system property to preserve jbi message content when calling toString() and avoid returning null when an exception is thrown > MessageExchangeImpl.toString() converts message content to DOMSource > -------------------------------------------------------------------- > > Key: SM-553 > URL: https://issues.apache.org/activemq/browse/SM-553 > Project: ServiceMix > Issue Type: Bug > Components: servicemix-core > Affects Versions: 3.0-M2 > Reporter: Robert H. Pollack > Attachments: patches.zip > > > The toString() method of MessageExchangeImpl, in an attempt to show the in, > out, and fault messages of the exchange, converts their content to DOM. If > this conversion succeeds, the user may be surprised, because the message has > changed from a stream source to a DOM source; this originally caused some > ClassCastExceptions in our code. > If the conversion fails, the situation is even worse. Now the message > content remains a stream source, but the stream has been consumed in the > attempted conversion, so the message is now empty. > The reason that this toString method is getting called, almost no matter what > you do, is that ServiceMix is distributed with log levels set to DEBUG > (oddly, you don't see any debug messages, probably because the log4j.xml file > does not specify an appender for these messages). This setting causes many > invocations of the form > log.debug ("Now I'm doing something to " + myMessageExchange); > which causes the toString method to be invoked whether or not anything is > actually printed. > This toString method also turns out to have another problem. If it does get > an exception, it returns null. It turns out that an object's toString method > should never do this, because it can cause NullPointerExceptions if the > object is printed. > I've created an alternate version of MessageExchangeImpl which corrects these > problems. To use it, unzip the enclosed file into your SERVICEMIX_HOME > directory and run ant in the directory it creates. This will create a new > class and insert it into a place that will cause ServiceMix 3.0 to use it in > preference to the original. Be sure that you unzip this file into the right > place, though, because the ant script contains specific references to "..". > A bit more detail is in the comments in the enclosed code. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/activemq/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira