[ 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.