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();
     }


Reply via email to