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

Amila Jayasekara updated WSCOMMONS-557:
---------------------------------------

    Attachment: WSCOMMONS-557.diff

Attaching a fix for this issue.

The resolution includes following,
        Modify hasAttribute() method to return true if there are attributes 
attached to current node or if there are namespaces attached to current node
        Modify getAttributes() method to return empty namespaces also

A test case also included.

> 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.10
>         Environment: Ubuntu, JDK 1.6
>            Reporter: Amila Jayasekara
>         Attachments: WSCOMMONS-557.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.

Reply via email to