Hi

I just committed a patch of CAMEL-2407, please feel free to check it out and test it.

Willem

Willem Jiang wrote:
It's a bug of XStream DataFormat.
I created a JIRA[1] for it.

[1] https://issues.apache.org/activemq/browse/CAMEL-2407

Willem

jonathanq wrote:
I should also mention - this is Camel 2.0.0


jonathanq wrote:
I am trying to unmarshal an xml message from JMS that was originally
marshaled using Xstream.

When I create the message I am doing this:

XStream xstream = new XStream(new DomDriver("ISO-8859-1"));
template.sendBody(xstream.toXml(myObject));


On the consuming process I have this in my route:

from(endpoint).unmarshal().xstream().process(myProcessor);

The XStream unmarshal always fails due to non-UTF-8 characters.  And the
stacktrace shows that it was a UTF8 reader that failed.

So my question is - is there a way to initialize XStream to use a specific
DomDriver (with an encoding).  Or any way to specify the encoding to use
by default?

I tried adding this to the route (right after the from, and before the
unmarshal):
.setProperty(Exchange.CONTENT_ENCODING, constant("iso-8859-1"))

Didn't make a difference.


Here is the stack trace:

Caused by: com.thoughtworks.xstream.io.StreamException:  : Invalid UTF-8
start byte 0xa0 (at char #638, byte #-1)
    at
com.thoughtworks.xstream.io.xml.StaxReader.pullNextEvent(StaxReader.java:64)
    at
com.thoughtworks.xstream.io.xml.AbstractPullReader.readRealEvent(AbstractPullReader.java:137)
    at
com.thoughtworks.xstream.io.xml.AbstractPullReader.readEvent(AbstractPullReader.java:130)
    at
com.thoughtworks.xstream.io.xml.AbstractPullReader.move(AbstractPullReader.java:109)
    at
com.thoughtworks.xstream.io.xml.AbstractPullReader.moveDown(AbstractPullReader.java:94) at com.thoughtworks.xstream.io.xml.StaxReader.<init>(StaxReader.java:44) at com.thoughtworks.xstream.io.xml.StaxReader.<init>(StaxReader.java:34)
    at
org.apache.camel.dataformat.xstream.XStreamDataFormat.createHierarchicalStreamReader(XStreamDataFormat.java:83)
    at
org.apache.camel.dataformat.xstream.AbstractXStreamWrapper.unmarshal(AbstractXStreamWrapper.java:88)
    at
org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:51)
    at
org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:61)
    at
org.apache.camel.processor.RedeliveryErrorHandler.processExchange(RedeliveryErrorHandler.java:186)
    at
org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:155)
    at
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:88)
    at
org.apache.camel.processor.DefaultErrorHandler.process(DefaultErrorHandler.java:49)
    at
org.apache.camel.processor.DefaultChannel.process(DefaultChannel.java:148)
    at org.apache.camel.processor.Pipeline.process(Pipeline.java:74)
    at
org.apache.camel.processor.UnitOfWorkProcessor.processNext(UnitOfWorkProcessor.java:54)
    at
org.apache.camel.processor.DelegateProcessor.process(DelegateProcessor.java:48)
    at
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:45)
    at
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:170)
    at
org.apache.camel.impl.ProducerCache$1.doInProducer(ProducerCache.java:156)
    at
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:141)
    at
org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:155)
    at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:93)
    at
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:97)
    at
org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeader(DefaultProducerTemplate.java:136)
    ... 29 more
Caused by: com.ctc.wstx.exc.WstxIOException: Invalid UTF-8 start byte 0xa0
(at char #638, byte #-1)
at com.ctc.wstx.sr.StreamScanner.throwFromIOE(StreamScanner.java:708) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1086)
    at
com.thoughtworks.xstream.io.xml.StaxReader.pullNextEvent(StaxReader.java:49)
    ... 55 more
Caused by: java.io.CharConversionException: Invalid UTF-8 start byte 0xa0
(at char #638, byte #-1)
at com.ctc.wstx.io.UTF8Reader.reportInvalidInitial(UTF8Reader.java:302)
    at com.ctc.wstx.io.UTF8Reader.read(UTF8Reader.java:188)
    at com.ctc.wstx.io.ReaderSource.readInto(ReaderSource.java:84)
    at
com.ctc.wstx.io.BranchingReaderSource.readInto(BranchingReaderSource.java:57)
    at com.ctc.wstx.sr.StreamScanner.loadMore(StreamScanner.java:992)
    at com.ctc.wstx.sr.StreamScanner.getNext(StreamScanner.java:763)
    at
com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:1995) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)





Reply via email to