Author: veithen
Date: Sun Dec 21 15:41:53 2008
New Revision: 728554

URL: http://svn.apache.org/viewvc?rev=728554&view=rev
Log:
Modified ElementImpl#getNamespaceURI() so that it always returns null (an not 
an empty string) if the element has no namespace. The DOM spec is not 
particularly clear about this, but this is the behavior of Xerces and it is 
also expected by XMLUnit.

Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/dom/ElementImplTest.java

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java?rev=728554&r1=728553&r2=728554&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
 Sun Dec 21 15:41:53 2008
@@ -176,7 +176,14 @@
 
     /** Returns the value of the namespace URI. */
     public String getNamespaceURI() {
-        return (this.namespace != null) ? 
this.namespace.getNamespaceURI().intern() : null;
+        if (this.namespace == null) {
+            return null;
+        } else {
+            // If the element has no namespace, the result should be null, not
+            // an empty string.
+            String uri = this.namespace.getNamespaceURI();
+            return uri.length() == 0 ? null : uri.intern();
+        }
     }
 
     // /

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/dom/ElementImplTest.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/dom/ElementImplTest.java?rev=728554&r1=728553&r2=728554&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/dom/ElementImplTest.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/dom/ElementImplTest.java
 Sun Dec 21 15:41:53 2008
@@ -178,4 +178,18 @@
             }
         });
     }
+    
+    public void testGetNamespaceURIWithNoNamespace() throws Exception {
+        DOMTestUtil.execute(new DOMTestUtil.Test() {
+            public void execute(DocumentBuilderFactory dbf) throws Exception {
+                Document doc = dbf.newDocumentBuilder().newDocument();
+                Element element = doc.createElement("test");
+                assertNull(element.getNamespaceURI());
+                element = doc.createElementNS(null, "test");
+                assertNull(element.getNamespaceURI());
+                element = doc.createElementNS("", "test");
+                assertNull(element.getNamespaceURI());
+            }
+        });
+    }
 }


Reply via email to