camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rene Avontuur (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CAMEL-6922) XmlConverter cannot convert from ElementNSImpl to Document
Date Wed, 18 Dec 2013 22:25:07 GMT

     [ https://issues.apache.org/jira/browse/CAMEL-6922?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Rene Avontuur updated CAMEL-6922:
---------------------------------

    Attachment: NodeListToDocumentTest.java

I wrote a unit test for this issue, which is attached as NodeListToDoumentTest.java.
It shows that ElementNSImpl implements the NodeList interface, the responsible superclass
is NodeImpl.
This unit test passes on my machine, running an Oracle JDK.

The same unit test fails, after making the following change in
class BaseTypeConverterRegistry:

            // try the interfaces (in reverse order)
            for (int i=fromType.getInterfaces().length-1;i>=0;i--) {
                Class<?> type = fromType.getInterfaces()[i];

instead of:
            // try the interfaces
            for (Class<?> type : fromType.getInterfaces()) 

This may explain why a different JDK may have an issue with this conversion.

> XmlConverter cannot convert from ElementNSImpl to Document
> ----------------------------------------------------------
>
>                 Key: CAMEL-6922
>                 URL: https://issues.apache.org/jira/browse/CAMEL-6922
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.11.2
>         Environment: HP-UX, JDK 6.14, 7.06
>            Reporter: Arseniy Tashoyan
>            Priority: Minor
>              Labels: converter, dom, xml
>         Attachments: NodeListToDocumentTest.java
>
>
> XmlConvertor cannot convert from org.apache.xerces.dom.ElementNSImpl to org.w3c.dom.Document.
Class ElementNSImpl implements both interfaces org.w3c.dom.Node and org.w3c.dom.NodeList.
While type converter lookup iterates from ElementNSImpl through it's superclasses and implemented
interfaces, it reaches NodeList first. Therefore the
> {color:green}
> Node toDOMNodeFromSingleNodeList(NodeList)
> {color}
> method is selected for conversion. However this method returns null for any NodeList
with more than one node. This leads to null in a message's body.
> This issue is not detected on Linux, because on Oracle JDK lookup reaches Node before
NodeList and the
> {color:green}
> Document toDOMDocument(Node)
> {color}
> method is selected for conversion.



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Mime
View raw message