Nicolas Filotto created CAMEL-17579:
---------------------------------------

             Summary: Message DataType lost on copy
                 Key: CAMEL-17579
                 URL: https://issues.apache.org/jira/browse/CAMEL-17579
             Project: Camel
          Issue Type: Bug
          Components: camel-core
    Affects Versions: 3.15.0
            Reporter: Nicolas Filotto


While working on the example 
[`transformer-demo`|[https://github.com/apache/camel-examples/tree/main/examples/transformer-demo],]
 I realized that it fails with the next error:

 

 
{code:java}
2022-01-31 10:46:43,910 [elClient.main()] ERROR DefaultErrorHandler            
- Failed delivery for (MessageId: 2BE86653B2ADF34-0000000000000002 on 
ExchangeId: 2BE86653B2ADF34-0000000000000002). Exhausted after delivery 
attempt: 1 caught: org.apache.camel.InvalidPayloadException: No body available 
of type: org.apache.camel.example.transformer.demo.Order but has value: 
{"orderId":"Order-JSON-0001", "itemId":"MIZUYO-KAN", "quantity":"16350"} of 
type: java.lang.String on: Message. Caused by: Error during type conversion 
from type: java.lang.String to the required type: 
org.apache.camel.example.transformer.demo.Order with value 
{"orderId":"Order-JSON-0001", "itemId":"MIZUYO-KAN", "quantity":"16350"} due to 
javax.xml.bind.UnmarshalException: null. 
Exchange[2BE86653B2ADF34-0000000000000002]. Caused by: 
[org.apache.camel.TypeConversionException - Error during type conversion from 
type: java.lang.String to the required type: 
org.apache.camel.example.transformer.demo.Order with value 
{"orderId":"Order-JSON-0001", "itemId":"MIZUYO-KAN", "quantity":"16350"} due to 
javax.xml.bind.UnmarshalException: null]
 
Message History (source location and message history is disabled)
---------------------------------------------------------------------------------------------------------------------------------------
Source                                   ID                             
Processor                                          Elapsed (ms)
                                         json/json                      
from[direct://json]                                          29
 ...
                                         java/wireTap1                  
wireTap[direct:csv]                                           0
 
Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
org.apache.camel.InvalidPayloadException: No body available of type: 
org.apache.camel.example.transformer.demo.Order but has value: 
{"orderId":"Order-JSON-0001", "itemId":"MIZUYO-KAN", "quantity":"16350"} of 
type: java.lang.String on: Message. Caused by: Error during type conversion 
from type: java.lang.String to the required type: 
org.apache.camel.example.transformer.demo.Order with value 
{"orderId":"Order-JSON-0001", "itemId":"MIZUYO-KAN", "quantity":"16350"} due to 
javax.xml.bind.UnmarshalException: null. 
Exchange[2BE86653B2ADF34-0000000000000002]. Caused by: 
[org.apache.camel.TypeConversionException - Error during type conversion from 
type: java.lang.String to the required type: 
org.apache.camel.example.transformer.demo.Order with value 
{"orderId":"Order-JSON-0001", "itemId":"MIZUYO-KAN", "quantity":"16350"} due to 
javax.xml.bind.UnmarshalException: null]
 at 
org.apache.camel.support.MessageSupport.getMandatoryBody(MessageSupport.java:125)
 ~[camel-support-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.processor.ContractAdvice.convertIfRequired(ContractAdvice.java:154)
 ~[camel-core-processor-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.processor.ContractAdvice.doTransform(ContractAdvice.java:134) 
~[camel-core-processor-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at org.apache.camel.processor.ContractAdvice.before(ContractAdvice.java:69) 
~[camel-core-processor-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:342)
 ~[camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:96)
 ~[camel-direct-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:172) 
~[camel-core-processor-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.processor.errorhandler.RedeliveryErrorHandler$SimpleTask.run(RedeliveryErrorHandler.java:471)
 [camel-core-processor-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.DefaultReactiveExecutor$Worker.schedule(DefaultReactiveExecutor.java:187)
 [camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.DefaultReactiveExecutor.scheduleMain(DefaultReactiveExecutor.java:64)
 [camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at org.apache.camel.processor.Pipeline.process(Pipeline.java:184) 
[camel-core-processor-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.CamelInternalProcessor.process(CamelInternalProcessor.java:399)
 [camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:96)
 [camel-direct-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:214)
 [camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.SharedCamelInternalProcessor$1.process(SharedCamelInternalProcessor.java:111)
 [camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager.process(DefaultAsyncProcessorAwaitManager.java:83)
 [camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.SharedCamelInternalProcessor.process(SharedCamelInternalProcessor.java:108)
 [camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.support.cache.DefaultProducerCache.send(DefaultProducerCache.java:199)
 [camel-support-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:176)
 [camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:172)
 [camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.engine.DefaultProducerTemplate.send(DefaultProducerTemplate.java:137)
 [camel-base-engine-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.example.transformer.demo.client.CamelClient.main(CamelClient.java:84)
 [classes/:?]
 at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
 at 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 ~[?:?]
 at 
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:?]
 at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
 at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:282) 
[exec-maven-plugin-1.6.0.jar:?]
 at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.apache.camel.TypeConversionException: Error during type 
conversion from type: java.lang.String to the required type: 
org.apache.camel.example.transformer.demo.Order with value 
{"orderId":"Order-JSON-0001", "itemId":"MIZUYO-KAN", "quantity":"16350"} due to 
javax.xml.bind.UnmarshalException: null
 at 
org.apache.camel.converter.jaxb.FallbackTypeConverter.convertTo(FallbackTypeConverter.java:144)
 ~[camel-jaxb-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.converter.jaxb.FallbackTypeConverterLoader.lambda$registerFallbackConverters$0(FallbackTypeConverterLoader.java:44)
 ~[camel-jaxb-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.support.SimpleTypeConverter.convertTo(SimpleTypeConverter.java:101)
 ~[camel-support-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:516)
 ~[camel-base-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:356)
 ~[camel-base-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:272)
 ~[camel-base-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.support.MessageSupport.getMandatoryBody(MessageSupport.java:123)
 ~[camel-support-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 ... 27 more
Caused by: javax.xml.bind.UnmarshalException
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:455)
 ~[jaxb-impl-2.3.3.jar:2.3.3]
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:387)
 ~[jaxb-impl-2.3.3.jar:2.3.3]
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:356)
 ~[jaxb-impl-2.3.3.jar:2.3.3]
 at 
org.apache.camel.converter.jaxb.FallbackTypeConverter.unmarshal(FallbackTypeConverter.java:298)
 ~[camel-jaxb-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.converter.jaxb.FallbackTypeConverter.unmarshall(FallbackTypeConverter.java:199)
 ~[camel-jaxb-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.converter.jaxb.FallbackTypeConverter.convertTo(FallbackTypeConverter.java:129)
 ~[camel-jaxb-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.converter.jaxb.FallbackTypeConverterLoader.lambda$registerFallbackConverters$0(FallbackTypeConverterLoader.java:44)
 ~[camel-jaxb-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.support.SimpleTypeConverter.convertTo(SimpleTypeConverter.java:101)
 ~[camel-support-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:516)
 ~[camel-base-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:356)
 ~[camel-base-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:272)
 ~[camel-base-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.support.MessageSupport.getMandatoryBody(MessageSupport.java:123)
 ~[camel-support-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 ... 27 more
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1]
Message: Content is not allowed in prolog.
 at 
com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:652)
 ~[?:?]
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:134)
 ~[jaxb-impl-2.3.3.jar:2.3.3]
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:385)
 ~[jaxb-impl-2.3.3.jar:2.3.3]
 at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:356)
 ~[jaxb-impl-2.3.3.jar:2.3.3]
 at 
org.apache.camel.converter.jaxb.FallbackTypeConverter.unmarshal(FallbackTypeConverter.java:298)
 ~[camel-jaxb-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.converter.jaxb.FallbackTypeConverter.unmarshall(FallbackTypeConverter.java:199)
 ~[camel-jaxb-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.converter.jaxb.FallbackTypeConverter.convertTo(FallbackTypeConverter.java:129)
 ~[camel-jaxb-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.converter.jaxb.FallbackTypeConverterLoader.lambda$registerFallbackConverters$0(FallbackTypeConverterLoader.java:44)
 ~[camel-jaxb-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.support.SimpleTypeConverter.convertTo(SimpleTypeConverter.java:101)
 ~[camel-support-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:516)
 ~[camel-base-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:356)
 ~[camel-base-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.impl.converter.CoreTypeConverterRegistry.mandatoryConvertTo(CoreTypeConverterRegistry.java:272)
 ~[camel-base-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
 at 
org.apache.camel.support.MessageSupport.getMandatoryBody(MessageSupport.java:123)
 ~[camel-support-3.15.0-SNAPSHOT.jar:3.15.0-SNAPSHOT]
{code}
 

 

After a deeper investigation, it appears that it occurs because the datatype of 
the message is lost after been copied by the ProcessorValidatorsuch that it 
ends up trying to convert a json payload with the JAXB fallback type converter 
which fails with the previous error.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to