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


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