The particular error happens in both 1.6.0 and 2.0, but it turns out the Claus found the source of the problem. I was using an endpoint which never explicitly set the camel context and the null is just the default value from DefaultEndpoint. Thanks for the help! - Ethan
On Wed, Jun 3, 2009 at 11:33 PM, Willem Jiang <[email protected]> wrote: > Which version of Camel are you using? > Can you try the last released Camel 1.6.1 ? > I just check the latest code repository, we did some improvements on the > LogFormatter and you should not get ClassCastException here :). > > Willem > > > Ethan Aubin wrote: >> Hi, I'm trying to write a camel component which reads a value from a >> socket and logs the results. I'm doing something wrong in the >> component or in the configuration of my route as the value always is >> delivered to the dead letter channel and fails with the following >> exception >> >> SEVERE: Failed delivery for exchangeId: >> ID-eaubin-1/51474-1243953466200/1-3. On delivery attempt: 0 caught: >> java.lang.ClassCastException: >> com.sun.org.apache.xerces.internal.dom.DocumentImpl cannot be cast to >> org.apache.camel.converter.stream.StreamCache >> java.lang.ClassCastException: >> com.sun.org.apache.xerces.internal.dom.DocumentImpl cannot be cast to >> org.apache.camel.converter.stream.StreamCache >> at >> org.apache.camel.component.log.LogFormatter.getBodyAsString(LogFormatter.java:182) >> at org.apache.camel.component.log.LogFormatter.format(LogFormatter.java:74) >> at org.apache.camel.processor.Logger.logMessage(Logger.java:234) >> at org.apache.camel.processor.Logger.process(Logger.java:88) >> at >> org.apache.camel.impl.ProcessorEndpoint.onExchange(ProcessorEndpoint.java:92) >> at >> org.apache.camel.impl.ProcessorEndpoint$1.process(ProcessorEndpoint.java:66) >> at >> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43) >> at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:84) >> at >> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:189) >> at >> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:133) >> at >> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52) >> at >> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41) >> at >> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66) >> at >> edu.mit.ll.ncint.camel.XmlTcpConsumer$SocketProcessor.passDocument(XmlTcpConsumer.java:221) >> at >> edu.mit.ll.ncint.camel.XmlTcpConsumer$SocketProcessor.readDocument(XmlTcpConsumer.java:167) >> at >> edu.mit.ll.ncint.camel.XmlTcpConsumer$SocketProcessor.run(XmlTcpConsumer.java:201) >> at java.lang.Thread.run(Thread.java:637) >> java.lang.NullPointerException >> at org.apache.camel.impl.DefaultMessage.getHeader(DefaultMessage.java:49) >> at >> org.apache.camel.processor.DeadLetterChannel.incrementRedeliveryCounter(DeadLetterChannel.java:430) >> at >> org.apache.camel.processor.DeadLetterChannel.handleException(DeadLetterChannel.java:287) >> at >> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:162) >> at >> org.apache.camel.processor.DeadLetterChannel.process(DeadLetterChannel.java:133) >> at >> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:52) >> at >> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41) >> at >> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66) >> at >> edu.mit.ll.ncint.camel.XmlTcpConsumer$SocketProcessor.passDocument(XmlTcpConsumer.java:221) >> at >> edu.mit.ll.ncint.camel.XmlTcpConsumer$SocketProcessor.readDocument(XmlTcpConsumer.java:167) >> at >> edu.mit.ll.ncint.camel.XmlTcpConsumer$SocketProcessor.run(XmlTcpConsumer.java:201) >> at java.lang.Thread.run(Thread.java:637) >> >> >> Camel is started using >> >> context = new DefaultCamelContext(new JndiRegistry()); >> context.addComponent("xmltcp", new XmlTcpComponent(context)); >> ccEndpoint = context.getEndpoint("xmltcp://127.0.0.1:15001"); >> context.addRoutes(new RouteBuilder() { >> �...@override >> public void configure() { >> from(ccEndpoint).to("log:loggingCategoryFoo?level=INFO"); >> } >> }); >> context.start(); >> >> After the value has been read from the socket the consumer delivers it with: >> >> DefaultMessage msg = new DefaultMessage(); >> msg.setBody(obj); >> XmlTcpExchange ex = endpoint.createExchange(); >> ex.setIn(msg); >> getProcessor().process(ex); >> >> >> The consumer, component, endpoint and exchange all inherit from >> default classes and don't do anything particularly interesting (I can >> send the code if that would help). What could be going on here? Many >> thanks - Ethan
