Uploaded image for project: 'Axiom'
  1. Axiom
  2. AXIOM-97

org.apache.axiom.om.impl.dom.ElementImpl class's hasAttributes() and getAttributes() methods are not compatible with DOM interfaces.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.2.9
    • 1.2.10
    • None
    • None
    • Ubuntu, JDK 1.6

    Description

      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

      Attachments

        1. WSCOMMONS-557_CORRECTED.diff
          8 kB
          Amila Jayasekara

        Issue Links

          Activity

            People

              veithen Andreas Veithen
              amilaj Amila Jayasekara
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: