1. Axiom
  2. AXIOM-400

OMFactory#createOMElement doesn't generate namespace declaration if the OMNamespace argument is null


    • Type: Bug Bug
    • Status: Resolved
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 1.2.12
    • Fix Version/s: 1.2.13
    • Component/s: DOOM, LLOM
    • Labels:


      Consider the following code:

      OMFactory factory = OMAbstractFactory.getOMFactory();
      OMNamespace ns = factory.createOMNamespace("urn:test", "");
      OMElement root = factory.createOMElement("root", ns);
      OMElement child = factory.createOMElement("child", null, root);
      System.out.println("child has namespace declarations: " + child.getAllDeclaredNamespaces().hasNext());
      System.out.println("xml = " + root.toString());
      System.out.println("default namespace on child = '" + child.getDefaultNamespace().getNamespaceURI() + "'");

      With the current Axiom code, the output is:

      child has namespace declarations: false
      xml = <root xmlns="urn:test"><child xmlns="" /></root>
      default namespace on child = 'urn:test'

      That means that the call to createOMElement that creates the child element doesn't generate a namespace declaration. The serialized XML is still correct because the serializer performs namespace repairing. However, because of the absence of a namespace declaration on the child OMElement, the result of getDefaultNamespace is incorrect.

      The createOMElement method is supposed to create a namespace declaration if no corresponding declaration is in scope on the parent element. This should also be the case if the OMNamespace argument is null and there is a default namespace declaration with a non empty namespace URI.


        Andreas Veithen created issue -
        Andreas Veithen made changes -
        Field Original Value New Value
        Assignee Andreas Veithen [ veithen ]
        Fix Version/s 1.2.13 [ 12316677 ]
        Priority Major [ 3 ] Minor [ 4 ]
        Andreas Veithen made changes -
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Fixed [ 1 ]


          • Assignee:
            Andreas Veithen
            Andreas Veithen
          • Votes:
            0 Vote for this issue
            0 Start watching this issue


            • Created: