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 2015/07/19 11:12:05 UTC

svn commit: r1691805 - in /webservices/axiom/trunk: aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/

Author: veithen
Date: Sun Jul 19 09:12:05 2015
New Revision: 1691805

URL: http://svn.apache.org/r1691805
Log:
Reorganize the lookupPrefix/lookupNamespaceURI code.

Modified:
    webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMAttributeSupport.aj
    webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentFragmentSupport.aj
    webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj
    webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj
    webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMEntityReferenceSupport.aj
    webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMLeafNodeSupport.aj
    webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNode.java
    webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.aj
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java

Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMAttributeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMAttributeSupport.aj?rev=1691805&r1=1691804&r2=1691805&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMAttributeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMAttributeSupport.aj Sun Jul 19 09:12:05 2015
@@ -18,6 +18,7 @@
  */
 package org.apache.axiom.dom;
 
+import org.apache.axiom.core.CoreElement;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -62,4 +63,8 @@ public aspect DOMAttributeSupport {
     public final void DOMAttribute.setValue(String value) {
         coreSetTextContent(value, Policies.DETACH_POLICY);
     }
+    
+    public final CoreElement DOMAttribute.getNamespaceContext() {
+        return coreGetOwnerElement();
+    }
 }

Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentFragmentSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentFragmentSupport.aj?rev=1691805&r1=1691804&r2=1691805&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentFragmentSupport.aj (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentFragmentSupport.aj Sun Jul 19 09:12:05 2015
@@ -20,6 +20,7 @@ package org.apache.axiom.dom;
 
 import static org.apache.axiom.dom.DOMExceptionUtil.newDOMException;
 
+import org.apache.axiom.core.CoreElement;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -40,11 +41,7 @@ public aspect DOMDocumentFragmentSupport
     public final void DOMDocumentFragment.setNodeValue(String nodeValue) {
     }
 
-    public final String DOMDocumentFragment.lookupNamespaceURI(String specifiedPrefix) {
-        return null;
-    }
-
-    public final String DOMDocumentFragment.lookupPrefix(String namespaceURI) {
+    public final CoreElement DOMDocumentFragment.getNamespaceContext() {
         return null;
     }
 

Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj?rev=1691805&r1=1691804&r2=1691805&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj Sun Jul 19 09:12:05 2015
@@ -20,6 +20,7 @@ package org.apache.axiom.dom;
 
 import javax.xml.XMLConstants;
 
+import org.apache.axiom.core.CoreElement;
 import org.w3c.dom.Attr;
 import org.w3c.dom.CDATASection;
 import org.w3c.dom.DOMConfiguration;
@@ -80,16 +81,8 @@ public aspect DOMDocumentSupport {
         return (Element)coreGetDocumentElement();
     }
     
-    public final String DOMDocument.lookupNamespaceURI(String specifiedPrefix) {
-        Element documentElement = getDocumentElement();
-        return documentElement == null ? null
-                : documentElement.lookupNamespaceURI(specifiedPrefix);
-    }
-    
-    public final String DOMDocument.lookupPrefix(String namespaceURI) {
-        Element documentElement = getDocumentElement();
-        return documentElement == null ? null
-                : getDocumentElement().lookupPrefix(namespaceURI);
+    public final CoreElement DOMDocument.getNamespaceContext() {
+        return coreGetDocumentElement();
     }
 
     public final DOMConfiguration DOMDocument.getDomConfig() {

Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj?rev=1691805&r1=1691804&r2=1691805&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj Sun Jul 19 09:12:05 2015
@@ -21,6 +21,7 @@ package org.apache.axiom.dom;
 import javax.xml.XMLConstants;
 
 import org.apache.axiom.core.AttributeMatcher;
+import org.apache.axiom.core.CoreElement;
 import org.apache.axiom.core.CoreModelException;
 import org.apache.axiom.core.CoreNSAwareAttribute;
 import org.apache.axiom.core.CoreNamespaceDeclaration;
@@ -52,23 +53,8 @@ public aspect DOMElementSupport {
         throw new UnsupportedOperationException();
     }
 
-    public final String DOMElement.lookupNamespaceURI(String prefix) {
-        if (prefix == null) {
-            prefix = "";
-        } else if (prefix.length() == 0) {
-            return null;
-        }
-        String namespaceURI = coreLookupNamespaceURI(prefix, false);
-        return namespaceURI == null || namespaceURI.length() == 0 ? null : namespaceURI;
-    }
-
-    public final String DOMElement.lookupPrefix(String namespaceURI) {
-        if (namespaceURI == null) {
-            return null;
-        } else {
-            String prefix = coreLookupPrefix(namespaceURI, false);
-            return prefix == null || prefix.length() == 0 ? null : prefix;
-        }
+    public final CoreElement DOMElement.getNamespaceContext() {
+        return this;
     }
 
     public final boolean DOMElement.hasAttributes() {

Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMEntityReferenceSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMEntityReferenceSupport.aj?rev=1691805&r1=1691804&r2=1691805&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMEntityReferenceSupport.aj (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMEntityReferenceSupport.aj Sun Jul 19 09:12:05 2015
@@ -20,6 +20,7 @@ package org.apache.axiom.dom;
 
 import static org.apache.axiom.dom.DOMExceptionUtil.newDOMException;
 
+import org.apache.axiom.core.CoreElement;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.NamedNodeMap;
 
@@ -62,4 +63,8 @@ public aspect DOMEntityReferenceSupport
     public final void DOMEntityReference.setTextContent(String textContent) {
         throw new UnsupportedOperationException();
     }
+    
+    public final CoreElement DOMEntityReference.getNamespaceContext() {
+        return coreGetParentElement();
+    }
 }

Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMLeafNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMLeafNodeSupport.aj?rev=1691805&r1=1691804&r2=1691805&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMLeafNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMLeafNodeSupport.aj Sun Jul 19 09:12:05 2015
@@ -20,6 +20,7 @@ package org.apache.axiom.dom;
 
 import static org.apache.axiom.dom.DOMExceptionUtil.newDOMException;
 
+import org.apache.axiom.core.CoreElement;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -89,4 +90,8 @@ public aspect DOMLeafNodeSupport {
     public final void DOMLeafNode.setTextContent(String textContent) {
         setNodeValue(textContent);
     }
+    
+    public final CoreElement DOMLeafNode.getNamespaceContext() {
+        return coreGetParentElement();
+    }
 }

Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNode.java?rev=1691805&r1=1691804&r2=1691805&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNode.java (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNode.java Sun Jul 19 09:12:05 2015
@@ -18,9 +18,20 @@
  */
 package org.apache.axiom.dom;
 
+import org.apache.axiom.core.CoreElement;
 import org.apache.axiom.core.CoreNode;
 import org.w3c.dom.Node;
 
 public interface DOMNode extends Node, CoreNode {
-
+    /**
+     * Get the element that defines this node's namespace context. The returned element is used by
+     * the implementations of {@link Node#lookupNamespaceURI(String)},
+     * {@link Node#lookupPrefix(String)} and {@link Node#isDefaultNamespace(String)}. The
+     * implementation must be compatible with the provisions in appendix B of the DOM Level 3 Core
+     * specification.
+     * 
+     * @return the element defining the namespace context of this node or <code>null</code> if the
+     *         namespace context of this node is defined to be empty
+     */
+    CoreElement getNamespaceContext();
 }

Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.aj?rev=1691805&r1=1691804&r2=1691805&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.aj Sun Jul 19 09:12:05 2015
@@ -18,9 +18,38 @@
  */
 package org.apache.axiom.dom;
 
+import org.apache.axiom.core.CoreElement;
+
 public aspect DOMNodeSupport {
     // TODO: should eventually have package access
     public void DOMNode.normalize(DOMConfigurationImpl config) {
         // Default: do nothing
     }
+
+    public final String DOMNode.lookupNamespaceURI(String prefix) {
+        CoreElement context = getNamespaceContext();
+        if (context == null) {
+            return null;
+        }
+        if (prefix == null) {
+            prefix = "";
+        } else if (prefix.length() == 0) {
+            return null;
+        }
+        String namespaceURI = context.coreLookupNamespaceURI(prefix, false);
+        return namespaceURI == null || namespaceURI.length() == 0 ? null : namespaceURI;
+    }
+
+    public final String DOMNode.lookupPrefix(String namespaceURI) {
+        CoreElement context = getNamespaceContext();
+        if (context == null) {
+            return null;
+        }
+        if (namespaceURI == null) {
+            return null;
+        } else {
+            String prefix = context.coreLookupPrefix(namespaceURI, false);
+            return prefix == null || prefix.length() == 0 ? null : prefix;
+        }
+    }
 }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java?rev=1691805&r1=1691804&r2=1691805&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java Sun Jul 19 09:12:05 2015
@@ -66,14 +66,4 @@ public abstract class AttrImpl extends P
     public boolean isId() {
         return isId;
     }
-
-    public final String lookupNamespaceURI(String specifiedPrefix) {
-        Element ownerElement = getOwnerElement();
-        return ownerElement == null ? null : ownerElement.lookupNamespaceURI(specifiedPrefix);
-    }
-
-    public final String lookupPrefix(String namespaceURI) {
-        Element ownerElement = getOwnerElement();
-        return ownerElement == null ? null : ownerElement.lookupPrefix(namespaceURI);
-    }
 }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java?rev=1691805&r1=1691804&r2=1691805&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java Sun Jul 19 09:12:05 2015
@@ -24,7 +24,6 @@ import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.common.AxiomChildNode;
-import org.w3c.dom.Element;
 
 public abstract class ChildNode extends NodeImpl implements DOMChildNode, AxiomChildNode {
     public ChildNode(OMFactory factory) {
@@ -67,17 +66,4 @@ public abstract class ChildNode extends
     public final void build() {
         // Do nothing; a leaf node is always complete
     }
-
-    public final String lookupNamespaceURI(String specifiedPrefix) {
-        ParentNode parent = (ParentNode)coreGetParent();
-        // Note: according to the DOM specs, we need to delegate the lookup if the parent
-        // is an element or an entity reference. However, since we don't support entity
-        // references fully, we only check for elements.
-        return parent instanceof Element ? parent.lookupNamespaceURI(specifiedPrefix) : null;
-    }
-    
-    public final String lookupPrefix(String namespaceURI) {
-        ParentNode parent = (ParentNode)coreGetParent();
-        return parent instanceof Element ? parent.lookupPrefix(namespaceURI) : null;
-    }
 }