You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2013/12/14 11:50:52 UTC
svn commit: r1550919 - in /webservices/axiom/trunk/modules:
axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/
axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/
axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ axiom-dom/sr...
Author: veithen
Date: Sat Dec 14 10:50:51 2013
New Revision: 1550919
URL: http://svn.apache.org/r1550919
Log:
Fixed an issue in the way DOOM internally represents default namespace declarations. This also fixes an issue with getSAXResult.
Added:
webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExistingDefaultNamespaceDeclaration.java
- copied, changed from r1548742, webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExisting.java
Modified:
webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/DOMTestSuiteBuilder.java
webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExisting.java
webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java
webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamedNodeHelper.java
webservices/axiom/trunk/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java
Modified: webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/DOMTestSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/DOMTestSuiteBuilder.java?rev=1550919&r1=1550918&r2=1550919&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/DOMTestSuiteBuilder.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/DOMTestSuiteBuilder.java Sat Dec 14 10:50:51 2013
@@ -151,6 +151,7 @@ public class DOMTestSuiteBuilder extends
addTest(new org.apache.axiom.ts.dom.element.TestSetAttributeNS(dbf, validAttrQNames[i], "value"));
}
addTest(new org.apache.axiom.ts.dom.element.TestSetAttributeNSExisting(dbf));
+ addTest(new org.apache.axiom.ts.dom.element.TestSetAttributeNSExistingDefaultNamespaceDeclaration(dbf));
for (int i=0; i<invalidAttrQNames.length; i++) {
addTest(new org.apache.axiom.ts.dom.element.TestSetAttributeNSInvalid(dbf, invalidAttrQNames[i]));
}
Modified: webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExisting.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExisting.java?rev=1550919&r1=1550918&r2=1550919&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExisting.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExisting.java Sat Dec 14 10:50:51 2013
@@ -43,7 +43,7 @@ public class TestSetAttributeNSExisting
attr.setValue("value1");
element.setAttributeNodeNS(attr);
- // Now change the attribute using setAttributeNS
+ // Now change the attribute using setAttributeNS (using a different prefix and value)
element.setAttributeNS("urn:test", "p2:attr", "value2");
// DOM is expected to change the original attribute, not to create a new one
Copied: webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExistingDefaultNamespaceDeclaration.java (from r1548742, webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExisting.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExistingDefaultNamespaceDeclaration.java?p2=webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExistingDefaultNamespaceDeclaration.java&p1=webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExisting.java&r1=1548742&r2=1550919&rev=1550919&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExisting.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom-testsuite/src/main/java/org/apache/axiom/ts/dom/element/TestSetAttributeNSExistingDefaultNamespaceDeclaration.java Sat Dec 14 10:50:51 2013
@@ -18,6 +18,7 @@
*/
package org.apache.axiom.ts.dom.element;
+import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilderFactory;
import org.apache.axiom.ts.dom.DOMTestCase;
@@ -26,11 +27,11 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
- * Tests the behavior of {@link Element#setAttributeNS(String, String, String)} if the element
- * already has an attribute with the same namespace URI and local name.
+ * Tests the behavior of {@link Element#setAttributeNS(String, String, String)} when used to modify
+ * a namespace declaration for the default namespace.
*/
-public class TestSetAttributeNSExisting extends DOMTestCase {
- public TestSetAttributeNSExisting(DocumentBuilderFactory dbf) {
+public class TestSetAttributeNSExistingDefaultNamespaceDeclaration extends DOMTestCase {
+ public TestSetAttributeNSExistingDefaultNamespaceDeclaration(DocumentBuilderFactory dbf) {
super(dbf);
}
@@ -38,16 +39,16 @@ public class TestSetAttributeNSExisting
Document document = dbf.newDocumentBuilder().newDocument();
Element element = document.createElementNS(null, "test");
- // Add the original attribute
- Attr attr = document.createAttributeNS("urn:test", "p1:attr");
- attr.setValue("value1");
+ // Add the original default namespace declaration
+ Attr attr = document.createAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, XMLConstants.XMLNS_ATTRIBUTE);
+ attr.setValue("urn:ns1");
element.setAttributeNodeNS(attr);
// Now change the attribute using setAttributeNS
- element.setAttributeNS("urn:test", "p2:attr", "value2");
+ element.setAttributeNS(XMLConstants.XMLNS_ATTRIBUTE_NS_URI, XMLConstants.XMLNS_ATTRIBUTE, "urn:ns2");
// DOM is expected to change the original attribute, not to create a new one
- assertEquals("value2", attr.getValue());
- assertEquals("p2", attr.getPrefix());
+ assertEquals("urn:ns2", attr.getValue());
+ assertNull(attr.getPrefix());
}
}
Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java?rev=1550919&r1=1550918&r2=1550919&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java Sat Dec 14 10:50:51 2013
@@ -375,8 +375,7 @@ public class AttrImpl extends RootNode i
* @see org.w3c.dom.Node#getPrefix()
*/
public String getPrefix() {
- // TODO Error checking
- return (this.namespace == null) ? null : this.namespace.getPrefix();
+ return NamedNodeHelper.getPrefix(this);
}
public void setPrefix(String prefix) throws DOMException {
Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java?rev=1550919&r1=1550918&r2=1550919&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java Sat Dec 14 10:50:51 2013
@@ -143,8 +143,7 @@ public class DocumentImpl extends RootNo
if (namespaceURI == null) {
namespace = null;
} else {
- namespace = new OMNamespaceImpl(namespaceURI,
- prefix == null && !XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI) ? "" : prefix);
+ namespace = new OMNamespaceImpl(namespaceURI, prefix == null ? "" : prefix);
}
return new AttrImpl(this, localName, namespace, this.factory);
}
Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java?rev=1550919&r1=1550918&r2=1550919&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java Sat Dec 14 10:50:51 2013
@@ -462,7 +462,7 @@ public class ElementImpl extends ParentN
} else {
if (namespaceURI != null) {
attr = new AttrImpl(ownerDocument(), localName, value, this.factory);
- attr.setOMNamespace(new OMNamespaceImpl(namespaceURI, prefix));
+ attr.setOMNamespace(new OMNamespaceImpl(namespaceURI, prefix == null ? "" : prefix));
this.setAttributeNodeNS(attr);
} else {
@@ -967,13 +967,7 @@ public class ElementImpl extends ParentN
* @see org.w3c.dom.Node#getPrefix()
*/
public String getPrefix() {
- OMNamespace ns = getNamespace();
- if (ns == null) {
- return null;
- } else {
- String prefix = ns.getPrefix();
- return prefix.length() == 0 ? null : prefix;
- }
+ return NamedNodeHelper.getPrefix(this);
}
public void setPrefix(String prefix) throws DOMException {
Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamedNodeHelper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamedNodeHelper.java?rev=1550919&r1=1550918&r2=1550919&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamedNodeHelper.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamedNodeHelper.java Sat Dec 14 10:50:51 2013
@@ -22,10 +22,20 @@ import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.impl.common.OMNamespaceImpl;
import org.w3c.dom.DOMException;
-public final class NamedNodeHelper {
+final class NamedNodeHelper {
private NamedNodeHelper() {}
- public static void setPrefix(NamedNode node, String prefix) throws DOMException {
+ static String getPrefix(NamedNode node) {
+ OMNamespace ns = node.getNamespace();
+ if (ns == null) {
+ return null;
+ } else {
+ String prefix = ns.getPrefix();
+ return prefix.length() == 0 ? null : prefix;
+ }
+ }
+
+ static void setPrefix(NamedNode node, String prefix) throws DOMException {
if (prefix == null) {
prefix = "";
}
Modified: webservices/axiom/trunk/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java?rev=1550919&r1=1550918&r2=1550919&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java Sat Dec 14 10:50:51 2013
@@ -27,7 +27,6 @@ import org.apache.axiom.ts.om.builder.Te
import org.apache.axiom.ts.om.container.TestSerialize;
import org.apache.axiom.ts.om.document.TestClone;
import org.apache.axiom.ts.om.document.TestDigest;
-import org.apache.axiom.ts.om.document.TestGetSAXResult;
import org.apache.axiom.ts.om.element.TestGetChildrenWithName4;
import org.apache.axiom.ts.om.element.TestSerializationWithTwoNonBuiltOMElements;
import org.apache.axiom.ts.om.element.sr.TestClose;
@@ -63,9 +62,6 @@ public class OMImplementationTest extend
// TODO: test case needing review
builder.exclude(TestClose.class);
-
- // TODO: fails because of an issue elsewhere in DOOM
- builder.exclude(TestGetSAXResult.class);
return builder.build();
}