FallbackTypeConverter method throws JAXBException when marshalling nested,
non-ObjectFactory, JAXB annotated, classes
---------------------------------------------------------------------------------------------------------------------
Key: CAMEL-3865
URL: https://issues.apache.org/jira/browse/CAMEL-3865
Project: Camel
Issue Type: Bug
Components: camel-jaxb
Affects Versions: 2.7.0
Reporter: Clifton Eaton
FallbackTypeConverter method throws JAXBException when marshalling nested,
non-ObjectFactory, JAXB annotated, classes. These are classes that are
annotated with the @XmlRootElement, but not generated using XJC, so there is no
ObjectFactory class for them. The intention is to provide the package names
containing the jaxb.index files to build the context.
FallbackTypeConverter does not marshal or unmarshal using the package names,
but rather uses the value's Class as the context. Thus everytime a JAXB
annotated object contains another JAXB annotated object, there is an exception
that looks like this:
Caused by: org.apache.camel.CamelExecutionException: Exception occurred during
execution on the exchange: Exchange[Message: com.foo.bar.MyObject@15e6463]
at
org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1155)
at
org.apache.camel.converter.jaxb.FallbackTypeConverter.convertTo(FallbackTypeConverter.java:93)
at
org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:190)
at
org.apache.camel.impl.converter.BaseTypeConverterRegistry.convertTo(BaseTypeConverterRegistry.java:101)
at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:73)
at org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:47)
at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:115)
at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:103)
at
org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:74)
at
org.apache.camel.language.bean.BeanExpression$InvokeProcessor.process(BeanExpression.java:136)
... 39 more
Caused by: javax.xml.bind.MarshalException
- with linked exception:
[javax.xml.bind.JAXBException: class com.foo.bar.nested.MyNested nor any of its
super class is known to this context.]
at
com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:318)
at
com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:244)
at
javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl.java:96)
at
org.apache.camel.converter.jaxb.FallbackTypeConverter.marshall(FallbackTypeConverter.java:174)
at
org.apache.camel.converter.jaxb.FallbackTypeConverter.convertTo(FallbackTypeConverter.java:88)
... 47 more
Caused by: javax.xml.bind.JAXBException: class com.foo.bar.nested.MyNested nor
any of its super class is known to this context.
at
com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:246)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.reportError(XMLSerializer.java:261)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:653)
at
com.sun.xml.bind.v2.runtime.property.SingleMapNodeProperty.serializeBody(SingleMapNodeProperty.java:272)
at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImpl.java:340)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.java:593)
at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImpl.java:324)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:494)
at
com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:315)
... 51 more
Caused by: javax.xml.bind.JAXBException: class com.foo.bar.nested.MyNested nor
any of its super class is known to this context.
at
com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:594)
at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:648)
... 57 more
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira