You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by "Andreas Veithen (JIRA)" <ji...@apache.org> on 2010/08/24 21:38:15 UTC

[jira] Resolved: (WSCOMMONS-557) org.apache.axiom.om.impl.dom.ElementImpl class's hasAttributes() and getAttributes() methods are not compatible with DOM interfaces.

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

Andreas Veithen resolved WSCOMMONS-557.
---------------------------------------

    Fix Version/s: Axiom 1.2.10
       Resolution: Fixed

I've removed all the strange code identified above (the parentHasSameDefaultNS thing and the OMConstants.XMLNS_NS_PREFIX check), and the hasAttributes and getAttributes methods in ElementImpl now look like I would expect them to be. I've added some more test cases, and there are no regressions in the existing test cases (neither in Axiom, nor in Rampart). I consider this issue as fixed until somebody comes up with a test case that proves that the code I've removed was still necessary.

> org.apache.axiom.om.impl.dom.ElementImpl class's hasAttributes() and getAttributes() methods are not compatible with DOM interfaces.
> ------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: WSCOMMONS-557
>                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-557
>             Project: WS-Commons
>          Issue Type: Bug
>          Components: AXIOM
>    Affects Versions: Axiom 1.2.9
>         Environment: Ubuntu, JDK 1.6
>            Reporter: Amila Jayasekara
>            Assignee: Andreas Veithen
>             Fix For: Axiom 1.2.10
>
>         Attachments: WSCOMMONS-557_CORRECTED.diff
>
>
> The class org.apache.axiom.om.impl.dom.ElementImpl implements both DOM Element and OMElement interfaces. According to DOM API the method hasAttrbutes() should return true if there are attributes attached to current node. Also this method will return true if there are namespaces attached to current node. But according to current implementation the ElementImpl class only checks for namespace nullability. This code will fail if we have a xml like follows,
> <?xml version='1.0' encoding='utf-8'?>
> <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Id-739587016">
>   <GetDirectionsResponse xmlns="http://www.example.org/webservices/">
>     <GetDirectionsResult>
>       <drivingdirections xmlns="">
>         <route distanceToTravel="500m" finalStep="false" id="0">Head south on Grove St</route>
>       </drivingdirections>
>     </GetDirectionsResult>
>   </GetDirectionsResponse>
> </soapenv:Body>
> In above xml the node "drivingdirections" is having an empty namespace. But for "drivingdirections" node, the method "hasAttribute()" should return true, as there is a namespace attached to it. But current implementation of ElementImpl returns false.
> Also getAttributes() method should return empty namespace ("xmlns=\"\"") for "drivingdirections" node. Current implementation doesnt return empty namespace as an attribute. Since namespace of drivingdirections is empty, namespace of child elements of "drivingdirections" are also null. Therefore hasAttribute() method will return false for even elements like "route". ("route" element has attributes, therefore hasAttribute() should return true)
> There are 2 rampart issues which depends on this.
> [1] https://issues.apache.org/jira/browse/RAMPART-303
> [2] https://issues.apache.org/jira/browse/RAMPART-128

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