[ 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_CORRECTED.diff Attaching a modified patch based on following assumptions, 1. All Namespaces attached to an elemt in a serialized xml stream is included in ElementImpl.namespaces varriable 2. The key of a namespace and namespace nsPrefix of org.apache.axiom.om.impl.dom.NamespaceImpl will be an empty string if the representing namespace is xmlns. So in the case of <child xmlns=""/>, ElementImpl.namespaces[0].key = "" and ElementImpl.namespaces[0].value.nsPrefix = "" and ElementImpl.namespaces[0].value.nsUri = "". Thanks AmilaJ > 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 > Assignee: Andreas Veithen > 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.