[
https://issues.apache.org/jira/browse/CAMEL-20854?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen updated CAMEL-20854:
--------------------------------
Fix Version/s: 4.x
> camel-jaxb fails to unmarshal after changes in TypeConverter logic
> ------------------------------------------------------------------
>
> Key: CAMEL-20854
> URL: https://issues.apache.org/jira/browse/CAMEL-20854
> Project: Camel
> Issue Type: Bug
> Components: camel-jaxb
> Affects Versions: 4.4.1
> Reporter: Billy Jaime Beltran
> Priority: Major
> Fix For: 4.x
>
>
> When upgrading a JAXB+CXF application from Camel 4.x to Camel 4.4.x we
> encountered a `jakarta.xml.bind.UnmarshalException` with a linked exception
> of `com.sun.istack.SAXParseException2` Namespace URIs and local names to the
> unmarshaller needs to be interned.
> Through bisection, we believe this change happens after the changes in
> Camel-14028 .
> When the inbound data in a CxfCachedPayload object is converted with the new
> non-stream cast unmarshal(), the method attempts to find a TypeConverter fail
> repeatedly until a fallback CXF converter is found that instantiates a
> WstxDOMWrappingReader (instance of XmlStreamReader) - however this one has a
> flag _cfgInternNames set to false which causes the exception above to be
> thrown.
>
> When we force the code to flow into the old InputStream path, we end up in
> `camel.converter.jaxp` where factory methods create a ValidatingStreamReader
> (instance of XmlStreamReader) to read a ByteArrayInputStream.
>
> The latter object contains the flag mInternStrings=true and works as in
> previous iterations of Camel.
>
> To continue working as before, the WstxDOMWrappingReader needs interning to
> be activated or have the CXFCachedPayload handled by the jaxp logic
--
This message was sent by Atlassian Jira
(v8.20.10#820010)