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

Simon Nash resolved TUSCANY-3689.
---------------------------------

    Resolution: Fixed

Fixed under revision r1001528 in the 1.6.1 branch and revision r1027406 in the 
1.x trunk.

> databinding-saxon corrupts XML documents when transforming from 
> XMLStreamReader to NodeInfo
> -------------------------------------------------------------------------------------------
>
>                 Key: TUSCANY-3689
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-3689
>             Project: Tuscany
>          Issue Type: Bug
>          Components: SCA Java Runtime
>    Affects Versions: Java-SCA-1.6
>            Reporter: Simon Nash
>            Assignee: Simon Nash
>             Fix For: Java-SCA-1.6.1
>
>
> The xml-bigbank demo fails on Tuscany SCA 1.5, 1.5.1, and 1.6 because of a 
> problem with the databinding-saxon transformation from XMLStreamReader to 
> NodeInfo.  It works on Tuscany SCA 1.4.
> This problem isn't related to the frequent unavailability of the live 
> exchange rate RSS feed and the live stock quote web service used by this 
> demo. For test purposes I have proved this by stubbing out these remote calls 
> and using known good data instead.
> The problem is caused by the two-step transformation from XMLStreamReader to 
> NodeInfo.  The first step transforms the XMLStreamReader to a DOM using 
> org.apache.tuscany.sca.databinding.xml.XMLStreamReader2Node, and the second 
> step transforms the DOM to a NodeInfo using 
> org.apache.tuscany.sca.databinding.saxon.Node2NodeInfoTransformer.  The first 
> step is corrupting the name of the top-level node in the XML document by 
> changing it to "arg1".  The second step works OK.
> The following code in XMLStreamReader2Node is causing the name of the 
> top-level node to be corrupted:
>             if (node instanceof Document) {
>                 Document doc = (Document)node;
>                 return DOMHelper.adjustElementName(context, 
> doc.getDocumentElement());
>             } else {
>                 return node;
>             }
> The node name is corrupted by the call to DOMHelper.adjustElementName(). This 
> name adjustment is necessary when transforming an XML instance document for 
> use as a SOAP parameter, but it shouldn't happen when transforming an XML 
> document for passing to a Saxon XQuery script..
> I've looked in the obvious places for differences in the code between 1.4 and 
> 1.6 that would explain why this corruption didn't occur on 1.4, but I haven't 
> been able to find out exactly what changed and triggered the problem.
> The simplest and safest way to fix this without risking disturbing other 
> transformation code paths is to write a new dedicated databinding transformer 
> for the specific case that isn't working.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to