You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Nicolas Filotto (Jira)" <ji...@apache.org> on 2022/02/01 09:20:00 UTC
[jira] [Created] (CAMEL-17579) Message DataType lost on copy
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)