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/08/30 22:15:22 UTC

svn commit: r1700156 - in /webservices/axiom/trunk: aspects/core-aspects/src/main/java/org/apache/axiom/core/ aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/ implementations/axio...

Author: veithen
Date: Sun Aug 30 20:15:21 2015
New Revision: 1700156

URL: http://svn.apache.org/r1700156
Log:
Improve the consistency of the NodeFactory interface.

Modified:
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclaration.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeFactory.java
    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/Policies.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareAttribute.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamespaceDeclaration.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMFactory.java
    webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListImplFactory.java

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java Sun Aug 30 20:15:21 2015
@@ -72,8 +72,6 @@ public interface AttributeMatcher {
      * 
      * @param nodeFactory
      *            the node factory the should be used to create the attribute
-     * @param document
-     *            the document in which the attribute is created
      * @param namespaceURI
      *            see above
      * @param name
@@ -84,7 +82,7 @@ public interface AttributeMatcher {
      *            see above
      * @return
      */
-    CoreAttribute createAttribute(NodeFactory nodeFactory, CoreDocument document, String namespaceURI, String name, String prefix, String value);
+    CoreAttribute createAttribute(NodeFactory nodeFactory, String namespaceURI, String name, String prefix, String value);
     
     /**
      * Update an existing attribute. The values of the <code>prefix</code> and <code>value</code>

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElementSupport.aj Sun Aug 30 20:15:21 2015
@@ -118,8 +118,7 @@ public aspect CoreElementSupport {
             attr = attr.coreGetNextAttribute();
         }
         if (attr == null) {
-            CoreDocument document = coreGetOwnerDocument(false);
-            CoreAttribute newAttr = matcher.createAttribute(coreGetNodeFactory(), document, namespaceURI, name, prefix, value);
+            CoreAttribute newAttr = matcher.createAttribute(coreGetNodeFactory(), namespaceURI, name, prefix, value);
             if (previousAttr == null) {
                 internalAppendAttribute(newAttr);
             } else {

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclaration.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclaration.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclaration.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclaration.java Sun Aug 30 20:15:21 2015
@@ -29,4 +29,6 @@ public interface CoreNamespaceDeclaratio
      *         namespace
      */
     String coreGetDeclaredPrefix();
+    
+    void coreSetDeclaredNamespace(String prefix, String namespaceURI);
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java Sun Aug 30 20:15:21 2015
@@ -84,8 +84,7 @@ public final class NSAwareAttributeMatch
         return ((CoreNSAwareAttribute)attr).coreGetLocalName();
     }
 
-    // TODO: get rid of the CoreDocument argument here
-    public CoreAttribute createAttribute(NodeFactory nodeFactory, CoreDocument document, String namespaceURI, String name, String prefix, String value) {
+    public CoreAttribute createAttribute(NodeFactory nodeFactory, String namespaceURI, String name, String prefix, String value) {
         CoreNSAwareAttribute attr = nodeFactory.createNSAwareAttribute();
         attr.coreSetName(namespaceURI, name, prefix);
         attr.coreSetCharacterData(value, null);

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java Sun Aug 30 20:15:21 2015
@@ -49,8 +49,10 @@ public final class NamespaceDeclarationM
         }
     }
 
-    public CoreAttribute createAttribute(NodeFactory nodeFactory, CoreDocument document, String namespaceURI, String name, String prefix, String value) {
-        return nodeFactory.createNamespaceDeclaration(document, name, value);
+    public CoreAttribute createAttribute(NodeFactory nodeFactory, String namespaceURI, String name, String prefix, String value) {
+        CoreNamespaceDeclaration decl = nodeFactory.createNamespaceDeclaration();
+        decl.coreSetDeclaredNamespace(name, value);
+        return decl;
     }
 
     public String getNamespaceURI(CoreAttribute attr) {

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeFactory.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeFactory.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeFactory.java Sun Aug 30 20:15:21 2015
@@ -24,9 +24,9 @@ public interface NodeFactory {
     CoreCharacterDataNode createCharacterDataNode();
     CoreCDATASection createCDATASection();
     <T extends CoreNSAwareElement> T createNSAwareElement(Class<T> type);
-    CoreNSUnawareAttribute createAttribute(CoreDocument document, String name, String value, String type);
+    CoreNSUnawareAttribute createNSUnawareAttribute();
     CoreNSAwareAttribute createNSAwareAttribute();
-    CoreNamespaceDeclaration createNamespaceDeclaration(CoreDocument document, String prefix, String namespaceURI);
+    CoreNamespaceDeclaration createNamespaceDeclaration();
     CoreProcessingInstruction createProcessingInstruction();
     CoreEntityReference createEntityReference();
     CoreComment createComment();

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=1700156&r1=1700155&r2=1700156&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 Aug 30 20:15:21 2015
@@ -151,7 +151,11 @@ public aspect DOMDocumentSupport {
     
     public final Attr DOMDocument.createAttribute(String name) {
         NSUtil.validateName(name);
-        return (DOMAttribute)coreGetNodeFactory().createAttribute(this, name, "", "CDATA");
+        DOMNSUnawareAttribute attr = (DOMNSUnawareAttribute)coreGetNodeFactory().createNSUnawareAttribute();
+        attr.coreSetOwnerDocument(this);
+        attr.coreSetName(name);
+        attr.coreSetType("CDATA");
+        return attr;
     }
 
     public final Attr DOMDocument.createAttributeNS(String namespaceURI, String qualifiedName) {
@@ -166,7 +170,10 @@ public aspect DOMDocumentSupport {
             localName = qualifiedName.substring(i+1);
         }
         if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) {
-            return (DOMAttribute)coreGetNodeFactory().createNamespaceDeclaration(this, NSUtil.getDeclaredPrefix(localName, prefix), null);
+            DOMNamespaceDeclaration decl = (DOMNamespaceDeclaration)coreGetNodeFactory().createNamespaceDeclaration();
+            decl.coreSetOwnerDocument(this);
+            decl.coreSetDeclaredNamespace(NSUtil.getDeclaredPrefix(localName, prefix), "");
+            return decl;
         } else {
             namespaceURI = NSUtil.normalizeNamespaceURI(namespaceURI);
             NSUtil.validateAttributeName(namespaceURI, localName, prefix);
@@ -235,7 +242,12 @@ public aspect DOMDocumentSupport {
                 return node;
             case NS_AWARE_ATTRIBUTE_NODE:
                 if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) {
-                    return (DOMAttribute)coreGetNodeFactory().createNamespaceDeclaration(this, NSUtil.getDeclaredPrefix(localName, prefix), ((DOMNSAwareAttribute)node).getValue());
+                    DOMNamespaceDeclaration decl = (DOMNamespaceDeclaration)coreGetNodeFactory().createNamespaceDeclaration();
+                    decl.coreSetOwnerDocument(this);
+                    // TODO: we should have a generic method to move the content over to the new node
+                    decl.coreSetDeclaredNamespace(NSUtil.getDeclaredPrefix(localName, prefix), ((DOMNSAwareAttribute)node).getValue());
+                    // TODO: what about replacing the node in the tree??
+                    return decl;
                 } else {
                     NSUtil.validateAttributeName(namespaceURI, localName, prefix);
                     ((DOMNSAwareAttribute)node).coreSetName(namespaceURI, localName, prefix);

Modified: webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java (original)
+++ webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java Sun Aug 30 20:15:21 2015
@@ -22,6 +22,7 @@ import org.apache.axiom.core.AttributeMa
 import org.apache.axiom.core.ClonePolicy;
 import org.apache.axiom.core.CoreAttribute;
 import org.apache.axiom.core.CoreDocument;
+import org.apache.axiom.core.CoreNSUnawareAttribute;
 import org.apache.axiom.core.CoreNode;
 import org.apache.axiom.core.CoreParentNode;
 import org.apache.axiom.core.DetachPolicy;
@@ -70,8 +71,12 @@ public final class Policies {
             return ((DOMAttribute)attr).getName();
         }
 
-        public CoreAttribute createAttribute(NodeFactory nodeFactory, CoreDocument document, String namespaceURI, String name, String prefix, String value) {
-            return nodeFactory.createAttribute(document, name, value, null);
+        public CoreAttribute createAttribute(NodeFactory nodeFactory, String namespaceURI, String name, String prefix, String value) {
+            CoreNSUnawareAttribute attr = nodeFactory.createNSUnawareAttribute();
+            attr.coreSetName(name);
+            attr.coreSetCharacterData(value, null);
+            // TODO: set type?
+            return attr;
         }
 
         public void update(CoreAttribute attr, String prefix, String value) {

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj Sun Aug 30 20:15:21 2015
@@ -35,6 +35,10 @@ public aspect AxiomNamespaceDeclarationS
         return declaredNamespace;
     }
     
+    public final void AxiomNamespaceDeclaration.coreSetDeclaredNamespace(String prefix, String namespaceURI) {
+        setDeclaredNamespace(new OMNamespaceImpl(namespaceURI, prefix));
+    }
+    
     public final void AxiomNamespaceDeclaration.setDeclaredNamespace(OMNamespace declaredNamespace) {
         this.declaredNamespace = declaredNamespace;
         coreSetCharacterData(declaredNamespace.getNamespaceURI(), Policies.DETACH_POLICY);

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareAttribute.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareAttribute.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareAttribute.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareAttribute.java Sun Aug 30 20:15:21 2015
@@ -25,8 +25,8 @@ import org.apache.axiom.om.OMCloneOption
 import org.apache.axiom.om.OMFactory;
 
 public class NSUnawareAttribute extends AttrImpl implements DOMNSUnawareAttribute {
-    public NSUnawareAttribute(DocumentImpl ownerDocument, OMFactory factory) {
-        super(ownerDocument, factory);
+    public NSUnawareAttribute(OMFactory factory) {
+        super(null, factory);
     }
 
     public final NodeFactory coreGetNodeFactory() {

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamespaceDeclaration.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamespaceDeclaration.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamespaceDeclaration.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NamespaceDeclaration.java Sun Aug 30 20:15:21 2015
@@ -22,19 +22,13 @@ import org.apache.axiom.core.ClonePolicy
 import org.apache.axiom.dom.DOMNamespaceDeclaration;
 import org.apache.axiom.om.OMCloneOptions;
 import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.impl.common.AxiomNamespaceDeclaration;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
 
 public final class NamespaceDeclaration extends AttrImpl implements DOMNamespaceDeclaration, AxiomNamespaceDeclaration {
-    private NamespaceDeclaration(OMFactory factory) {
+    public NamespaceDeclaration(OMFactory factory) {
         super(null, factory);
     }
-    
-    public NamespaceDeclaration(DocumentImpl ownerDocument, OMNamespace namespace, OMFactory factory) {
-        super(ownerDocument, factory);
-        setDeclaredNamespace(namespace);
-    }
 
     @Override
     final ParentNode shallowClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMFactory.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMFactory.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMFactory.java Sun Aug 30 20:15:21 2015
@@ -49,7 +49,6 @@ import org.apache.axiom.om.impl.builder.
 import org.apache.axiom.om.impl.common.AxiomElement;
 import org.apache.axiom.om.impl.common.AxiomNamespaceDeclaration;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
-import org.apache.axiom.om.impl.common.Policies;
 import org.apache.axiom.om.impl.common.factory.AxiomNodeFactory;
 import org.apache.axiom.om.impl.dom.CDATASectionImpl;
 import org.apache.axiom.om.impl.dom.CommentImpl;
@@ -295,25 +294,22 @@ public class OMDOMFactory implements Axi
         return type.cast(element);
     }
 
-    public final CoreNSUnawareAttribute createAttribute(CoreDocument document, String name, String value, String type) {
-        NSUnawareAttribute attr = new NSUnawareAttribute((DocumentImpl)document, this);
-        attr.coreSetName(name);
-        attr.coreSetCharacterData(value, Policies.DETACH_POLICY);
-//        attr.coreSetType(type);
-        return attr;
+    public final CoreNSUnawareAttribute createNSUnawareAttribute() {
+        return new NSUnawareAttribute(this);
     }
 
     public final CoreNSAwareAttribute createNSAwareAttribute() {
         return new NSAwareAttribute(this);
     }
 
-    public final CoreNamespaceDeclaration createNamespaceDeclaration(CoreDocument document,
-            String prefix, String namespaceURI) {
-        return new NamespaceDeclaration((DocumentImpl)document, new OMNamespaceImpl(namespaceURI == null ? "" : namespaceURI, prefix), this);
+    public final CoreNamespaceDeclaration createNamespaceDeclaration() {
+        return new NamespaceDeclaration(this);
     }
 
     public final AxiomNamespaceDeclaration createNamespaceDeclaration(OMNamespace namespace) {
-        return new NamespaceDeclaration(null, namespace, this);
+        NamespaceDeclaration decl = new NamespaceDeclaration(this);
+        decl.setDeclaredNamespace(namespace);
+        return decl;
     }
 
     public final CoreProcessingInstruction createProcessingInstruction() {

Modified: webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListImplFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListImplFactory.java?rev=1700156&r1=1700155&r2=1700156&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListImplFactory.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListImplFactory.java Sun Aug 30 20:15:21 2015
@@ -300,8 +300,7 @@ public class OMLinkedListImplFactory imp
         return type.cast(element);
     }
 
-    public CoreNSUnawareAttribute createAttribute(CoreDocument document, String name, String value,
-            String type) {
+    public CoreNSUnawareAttribute createNSUnawareAttribute() {
         // TODO
         throw new UnsupportedOperationException();
     }
@@ -310,8 +309,7 @@ public class OMLinkedListImplFactory imp
         return new OMAttributeImpl(this);
     }
 
-    public final CoreNamespaceDeclaration createNamespaceDeclaration(CoreDocument document,
-            String prefix, String namespaceURI) {
+    public final CoreNamespaceDeclaration createNamespaceDeclaration() {
         // TODO
         throw new UnsupportedOperationException();
     }