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/31 18:40:54 UTC

svn commit: r1700274 - 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/ aspects/om-aspects/s...

Author: veithen
Date: Mon Aug 31 16:40:53 2015
New Revision: 1700274

URL: http://svn.apache.org/r1700274
Log:
In DOOM, use the cloning infrastructure provided by the core model.

Modified:
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ClonePolicy.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNodeSupport.aj
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentFragmentSupport.aj
    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/CoreNSAwareElementSupport.aj
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSUnawareElementSupport.aj
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclarationSupport.aj
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNodeSupport.aj
    webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMNodeSupport.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/AxiomElementSupport.aj
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Policies.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPHeaderBlockSupport.aj
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentFragmentImpl.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSAwareAttribute.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSAwareElement.java
    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/NSUnawareElement.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/NodeImpl.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ClonePolicy.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ClonePolicy.java?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ClonePolicy.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ClonePolicy.java Mon Aug 31 16:40:53 2015
@@ -26,4 +26,16 @@ public interface ClonePolicy<T> {
     boolean repairNamespaces(T options);
     boolean cloneAttributes(T options);
     boolean cloneChildren(T options, NodeType nodeType);
+
+    /**
+     * Post-process a cloned node. This method is called after all information from the original
+     * node has been copied (for elements, this includes the attributes of the element) and the node
+     * has been inserted into the cloned tree, but before any children are added.
+     * 
+     * @param options
+     *            API specific options
+     * @param clone
+     *            the clone to be post-processed
+     */
+    void postProcess(T options, CoreNode clone);
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNodeSupport.aj?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNodeSupport.aj Mon Aug 31 16:40:53 2015
@@ -214,6 +214,7 @@ public aspect CoreChildNodeSupport {
         if (targetParent != null) {
             targetParent.coreAppendChild(clone, false);
         }
+        policy.postProcess(options, clone);
         cloneChildrenIfNecessary(policy, options, clone);
         return clone;
     }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentFragmentSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentFragmentSupport.aj?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentFragmentSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentFragmentSupport.aj Mon Aug 31 16:40:53 2015
@@ -38,7 +38,6 @@ public aspect CoreDocumentFragmentSuppor
     }
     
     public final <T> CoreNode CoreDocumentFragment.shallowClone(ClonePolicy<T> policy, T options) {
-        // TODO
-        throw new UnsupportedOperationException();
+        return coreGetNodeFactory().createNode(CoreDocumentFragment.class);
     }
 }

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=1700274&r1=1700273&r2=1700274&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 Mon Aug 31 16:40:53 2015
@@ -250,4 +250,24 @@ public aspect CoreElementSupport {
             return null;
         }
     }
+
+    public final <T> CoreNode CoreElement.shallowClone(ClonePolicy<T> policy, T options) {
+        CoreElement clone = (CoreElement)coreGetNodeFactory().createNode(
+                policy.preserveModel(options) ? coreGetNodeClass() : coreGetNodeType().getInterface());
+        copyName(clone);
+        CoreAttribute attr = coreGetFirstAttribute();
+        while (attr != null) {
+            clone.internalAppendAttribute((CoreAttribute)attr.coreClone(policy, options));
+            // TODO: needed?
+//            clonedAttr.coreSetSpecified(attr.coreGetSpecified());
+            attr = attr.coreGetNextAttribute();
+        }
+        copyData(policy, options, clone);
+        return clone;
+    }
+
+    abstract void CoreElement.copyName(CoreElement clone);
+    
+    public <T> void CoreElement.copyData(ClonePolicy<T> policy, T options, CoreElement clone) {
+    }
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareElementSupport.aj?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareElementSupport.aj Mon Aug 31 16:40:53 2015
@@ -31,8 +31,7 @@ public aspect CoreNSAwareElementSupport
         return namespaceURI.equals(coreGetNamespaceURI()) ? coreGetPrefix() : null;
     }
     
-    public final <T> CoreNode CoreNSAwareElement.shallowClone(ClonePolicy<T> policy, T options) {
-        // TODO
-        throw new UnsupportedOperationException();
+    final void CoreNSAwareElement.copyName(CoreElement clone) {
+        ((CoreNSAwareElement)clone).coreSetName(this);
     }
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSUnawareElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSUnawareElementSupport.aj?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSUnawareElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSUnawareElementSupport.aj Mon Aug 31 16:40:53 2015
@@ -31,8 +31,7 @@ public aspect CoreNSUnawareElementSuppor
         return null;
     }
     
-    public final <T> CoreNode CoreNSUnawareElement.shallowClone(ClonePolicy<T> policy, T options) {
-        // TODO
-        throw new UnsupportedOperationException();
+    final void CoreNSUnawareElement.copyName(CoreElement clone) {
+        ((CoreNSUnawareElement)clone).coreSetName(coreGetName());
     }
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclarationSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclarationSupport.aj?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclarationSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNamespaceDeclarationSupport.aj Mon Aug 31 16:40:53 2015
@@ -24,7 +24,9 @@ public aspect CoreNamespaceDeclarationSu
     }
     
     public final <T> CoreNode CoreNamespaceDeclaration.shallowClone(ClonePolicy<T> policy, T options) {
-        // TODO
-        throw new UnsupportedOperationException();
+        CoreNamespaceDeclaration clone = coreGetNodeFactory().createNode(CoreNamespaceDeclaration.class);
+        // TODO: this is correct but bad for performance with the Axiom API
+        clone.coreSetDeclaredNamespace(coreGetDeclaredPrefix(), "");
+        return clone;
     }
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNodeSupport.aj?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNodeSupport.aj Mon Aug 31 16:40:53 2015
@@ -68,6 +68,7 @@ public aspect CoreNodeSupport {
     
     public final <T> CoreNode CoreNode.coreClone(ClonePolicy<T> policy, T options) {
         CoreNode clone = shallowClone(policy, options);
+        policy.postProcess(options, clone);
         cloneChildrenIfNecessary(policy, options, clone);
         return clone;
     }

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=1700274&r1=1700273&r2=1700274&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 Mon Aug 31 16:40:53 2015
@@ -19,6 +19,7 @@
 package org.apache.axiom.dom;
 
 import org.apache.axiom.core.CoreElement;
+import org.w3c.dom.Node;
 
 public aspect DOMNodeSupport {
     // TODO: should eventually have package access
@@ -67,4 +68,12 @@ public aspect DOMNodeSupport {
         }
         return namespaceURI.equals(context.coreLookupNamespaceURI("", false));
     }
+
+    public final Node DOMNode.cloneNode(boolean deep) {
+        DOMNode clone = (DOMNode)coreClone(deep ? Policies.DEEP_CLONE : Policies.SHALLOW_CLONE, null);
+        if (!(clone instanceof DOMDocument)) {
+            clone.coreSetOwnerDocument(coreGetOwnerDocument(true));
+        }
+        return clone;
+    }
 }

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=1700274&r1=1700273&r2=1700274&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 Mon Aug 31 16:40:53 2015
@@ -23,6 +23,7 @@ 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;
 import org.apache.axiom.core.NSAwareAttributeMatcher;
@@ -117,6 +118,9 @@ public final class Policies {
         public boolean cloneChildren(Void options, NodeType nodeType) {
             return true;
         }
+
+        public void postProcess(Void options, CoreNode clone) {
+        }
     };
 
     public static final ClonePolicy<Void> SHALLOW_CLONE = new ClonePolicy<Void>() {
@@ -136,5 +140,8 @@ public final class Policies {
         public boolean cloneChildren(Void options, NodeType nodeType) {
             return nodeType == NodeType.NS_UNAWARE_ATTRIBUTE || nodeType == NodeType.NS_AWARE_ATTRIBUTE;
         }
+
+        public void postProcess(Void options, CoreNode clone) {
+        }
     };
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomElementSupport.aj?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomElementSupport.aj Mon Aug 31 16:40:53 2015
@@ -551,9 +551,6 @@ public aspect AxiomElementSupport {
         return clone;
     }
 
-    public <T> void AxiomElement.copyData(ClonePolicy<T> policy, T options, AxiomElement clone) {
-    }
-
     public final void AxiomElement.buildWithAttachments() {
         if (getState() == INCOMPLETE) {
             build();

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Policies.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Policies.java?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Policies.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Policies.java Mon Aug 31 16:40:53 2015
@@ -20,7 +20,9 @@ package org.apache.axiom.om.impl.common;
 
 import org.apache.axiom.core.AttributeMatcher;
 import org.apache.axiom.core.ClonePolicy;
+import org.apache.axiom.core.CoreAttribute;
 import org.apache.axiom.core.CoreDocument;
+import org.apache.axiom.core.CoreNode;
 import org.apache.axiom.core.CoreParentNode;
 import org.apache.axiom.core.DetachPolicy;
 import org.apache.axiom.core.NSAwareAttributeMatcher;
@@ -74,5 +76,20 @@ public final class Policies {
         public boolean cloneChildren(OMCloneOptions options, NodeType nodeType) {
             return true;
         }
+
+        public void postProcess(OMCloneOptions options, CoreNode clone) {
+            if (clone instanceof AxiomElement) {
+                // Repair namespaces
+                AxiomElement element = (AxiomElement)clone;
+                NSUtil.handleNamespace(element, element.getNamespace(), false, true);
+                CoreAttribute attr = element.coreGetFirstAttribute();
+                while (attr != null) {
+                    if (attr instanceof AxiomAttribute) {
+                        NSUtil.handleNamespace(element, ((AxiomAttribute)attr).getNamespace(), true, true);
+                    }
+                    attr = attr.coreGetNextAttribute();
+                }
+            }
+        }
     };
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPHeaderBlockSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPHeaderBlockSupport.aj?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPHeaderBlockSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPHeaderBlockSupport.aj Mon Aug 31 16:40:53 2015
@@ -21,9 +21,9 @@ package org.apache.axiom.soap.impl.commo
 import javax.xml.namespace.QName;
 
 import org.apache.axiom.core.ClonePolicy;
+import org.apache.axiom.core.CoreElement;
 import org.apache.axiom.om.OMDataSource;
 import org.apache.axiom.om.OMDataSourceExt;
-import org.apache.axiom.om.impl.common.AxiomElement;
 import org.apache.axiom.soap.SOAPCloneOptions;
 import org.apache.axiom.soap.SOAPHeaderBlock;
 import org.apache.axiom.soap.SOAPProcessingException;
@@ -121,7 +121,7 @@ public aspect AxiomSOAPHeaderBlockSuppor
         }
     }
 
-    public final <T> void AxiomSOAPHeaderBlock.copyData(ClonePolicy<T> policy, T options, AxiomElement clone) {
+    public final <T> void AxiomSOAPHeaderBlock.copyData(ClonePolicy<T> policy, T options, CoreElement clone) {
         // Copy the processed flag.  The other SOAPHeaderBlock information 
         // (e.g. role, mustUnderstand) are attributes on the tag and are copied elsewhere.
         Boolean processedFlag = options instanceof SOAPCloneOptions ? ((SOAPCloneOptions)options).getProcessedFlag() : null;

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=1700274&r1=1700273&r2=1700274&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 Mon Aug 31 16:40:53 2015
@@ -18,7 +18,6 @@
  */
 package org.apache.axiom.om.impl.dom;
 
-import org.apache.axiom.core.ClonePolicy;
 import org.apache.axiom.dom.DOMChildNode;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.impl.common.AxiomChildNode;
@@ -27,8 +26,4 @@ public abstract class ChildNode extends
     public ChildNode(OMFactory factory) {
         super(factory);
     }
-
-    final <T> NodeImpl clone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
-        return (ChildNode)coreClone(policy, options, targetParent);
-    }
 }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentFragmentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentFragmentImpl.java?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentFragmentImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentFragmentImpl.java Mon Aug 31 16:40:53 2015
@@ -19,7 +19,6 @@
 
 package org.apache.axiom.om.impl.dom;
 
-import org.apache.axiom.core.ClonePolicy;
 import org.apache.axiom.core.NodeFactory;
 import org.apache.axiom.dom.DOMDocumentFragment;
 import org.apache.axiom.om.OMFactory;
@@ -33,8 +32,4 @@ public class DocumentFragmentImpl extend
     public final NodeFactory coreGetNodeFactory() {
         return (NodeFactory)getOMFactory();
     }
-
-    <T> ParentNode shallowClone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
-        return new DocumentFragmentImpl(getOMFactory());
-    }
 }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java Mon Aug 31 16:40:53 2015
@@ -232,10 +232,6 @@ public class DocumentImpl extends Parent
         throw new UnsupportedOperationException("TODO");
     }
 
-    <T> ParentNode shallowClone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
-        return (ParentNode)shallowClone(policy, options);
-    }
-
     public final void build() {
         defaultBuild();
     }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java Mon Aug 31 16:40:53 2015
@@ -21,78 +21,17 @@ package org.apache.axiom.om.impl.dom;
 
 import static org.apache.axiom.dom.DOMExceptionTranslator.newDOMException;
 
-import javax.xml.XMLConstants;
-
-import org.apache.axiom.core.ClonePolicy;
-import org.apache.axiom.core.NodeMigrationException;
-import org.apache.axiom.core.NodeMigrationPolicy;
 import org.apache.axiom.dom.DOMAttribute;
 import org.apache.axiom.dom.DOMElement;
-import org.apache.axiom.dom.DOMExceptionTranslator;
-import org.apache.axiom.dom.Policies;
-import org.apache.axiom.om.OMCloneOptions;
 import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.impl.util.OMSerializerUtil;
 import org.w3c.dom.Attr;
 import org.w3c.dom.DOMException;
-import org.w3c.dom.NamedNodeMap;
 
 public abstract class ElementImpl extends ParentNode implements DOMElement {
     public ElementImpl(OMFactory factory) {
         super(factory);
     }
 
-    private final String checkNamespaceIsDeclared(String prefix, String namespaceURI, boolean allowDefaultNamespace, boolean declare) {
-        if (XMLConstants.XML_NS_PREFIX.equals(prefix) && XMLConstants.XML_NS_URI.equals(namespaceURI)) {
-            return XMLConstants.XML_NS_PREFIX;
-        }
-        if (prefix == null) {
-            if (namespaceURI.length() == 0) {
-                prefix = "";
-                declare = false;
-            } else {
-                prefix = coreLookupPrefix(namespaceURI, true);
-                if (prefix != null && (allowDefaultNamespace || prefix.length() != 0)) {
-                    declare = false;
-                } else {
-                    prefix = OMSerializerUtil.getNextNSPrefix();
-                }
-            }
-        } else {
-            String existingNamespaceURI = coreLookupNamespaceURI(prefix, true);
-            declare = declare && !namespaceURI.equals(existingNamespaceURI);
-        }
-        if (declare) {
-            coreSetAttribute(Policies.NAMESPACE_DECLARATION_MATCHER, null, prefix, null, namespaceURI);
-        }
-        return prefix;
-    }
-
-    final <T> ParentNode shallowClone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
-        ElementImpl clone = createClone(options, targetParent, policy);
-        NamedNodeMap attributes = getAttributes();
-        for (int i=0, l=attributes.getLength(); i<l; i++) {
-            AttrImpl attr = (AttrImpl)attributes.item(i);
-            AttrImpl clonedAttr = (AttrImpl)attr.clone(options, null, policy);
-            clonedAttr.coreSetSpecified(attr.coreGetSpecified());
-            if (policy.repairNamespaces(options) && attr instanceof NSAwareAttribute) {
-                NSAwareAttribute nsAwareAttr = (NSAwareAttribute)attr;
-                String namespaceURI = nsAwareAttr.coreGetNamespaceURI();
-                if (namespaceURI.length() != 0) {
-                    clone.checkNamespaceIsDeclared(nsAwareAttr.coreGetPrefix(), namespaceURI, false, true);
-                }
-            }
-            try {
-                clone.coreAppendAttribute(clonedAttr, NodeMigrationPolicy.MOVE_ALWAYS);
-            } catch (NodeMigrationException ex) {
-                DOMExceptionTranslator.translate(ex);
-            }
-        }
-        return clone;
-    }
-
-    abstract <T> ElementImpl createClone(T options, ParentNode targetParent, ClonePolicy<T> policy);
-    
     /*
      * DOM-Level 3 methods
      */

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSAwareAttribute.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSAwareAttribute.java?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSAwareAttribute.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSAwareAttribute.java Mon Aug 31 16:40:53 2015
@@ -18,7 +18,6 @@
  */
 package org.apache.axiom.om.impl.dom;
 
-import org.apache.axiom.core.ClonePolicy;
 import org.apache.axiom.dom.DOMNSAwareAttribute;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
@@ -37,9 +36,4 @@ public final class NSAwareAttribute exte
                 .getPrefix()
                 + ":" + localName;
     }
-
-    @Override
-    final <T> ParentNode shallowClone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
-        return (ParentNode)shallowClone(policy, options);
-    }
 }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSAwareElement.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSAwareElement.java?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSAwareElement.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSAwareElement.java Mon Aug 31 16:40:53 2015
@@ -19,7 +19,6 @@
 
 package org.apache.axiom.om.impl.dom;
 
-import org.apache.axiom.core.ClonePolicy;
 import org.apache.axiom.dom.DOMConfigurationImpl;
 import org.apache.axiom.dom.DOMNSAwareElement;
 import org.apache.axiom.om.OMCloneOptions;
@@ -52,11 +51,6 @@ public class NSAwareElement extends Elem
         return (OMElement)clone(new OMCloneOptions());
     }
 
-    @Override
-    final <T> ElementImpl createClone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
-        return (ElementImpl)shallowCloneWithoutAttributes(policy, options, targetParent, policy.repairNamespaces(options));
-    }
-
     public void setLineNumber(int lineNumber) {
         this.lineNumber = lineNumber;
     }

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=1700274&r1=1700273&r2=1700274&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 Mon Aug 31 16:40:53 2015
@@ -18,7 +18,6 @@
  */
 package org.apache.axiom.om.impl.dom;
 
-import org.apache.axiom.core.ClonePolicy;
 import org.apache.axiom.core.NodeFactory;
 import org.apache.axiom.dom.DOMNSUnawareAttribute;
 import org.apache.axiom.om.OMFactory;
@@ -31,12 +30,4 @@ public class NSUnawareAttribute extends
     public final NodeFactory coreGetNodeFactory() {
         return ((NodeFactory)getOMFactory());
     }
-
-    @Override
-    <T> ParentNode shallowClone(T options, ParentNode targetParent,
-            ClonePolicy<T> policy) {
-        // TODO Auto-generated method stub
-        throw new UnsupportedOperationException();
-    }
-
 }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareElement.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareElement.java?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareElement.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NSUnawareElement.java Mon Aug 31 16:40:53 2015
@@ -18,7 +18,6 @@
  */
 package org.apache.axiom.om.impl.dom;
 
-import org.apache.axiom.core.ClonePolicy;
 import org.apache.axiom.core.NodeFactory;
 import org.apache.axiom.dom.DOMNSUnawareElement;
 import org.apache.axiom.om.OMFactory;
@@ -35,10 +34,4 @@ public class NSUnawareElement extends El
     public void build() {
         // Do nothing: the builder never creates NS unaware elements
     }
-
-    @Override
-    <T> ElementImpl createClone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
-        // TODO
-        throw new UnsupportedOperationException();
-    }
 }

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=1700274&r1=1700273&r2=1700274&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 Mon Aug 31 16:40:53 2015
@@ -28,13 +28,4 @@ public final class NamespaceDeclaration
     public NamespaceDeclaration(OMFactory factory) {
         super(factory);
     }
-
-    @Override
-    final <T> ParentNode shallowClone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
-        NamespaceDeclaration clone = new NamespaceDeclaration(getOMFactory());
-        // TODO: this is ugly, but we are expected to create a shallow clone and can't copy the value;
-        //       this will be fixed when the clone code is moved to om-aspects
-        clone.setDeclaredNamespace(new OMNamespaceImpl("", getDeclaredNamespace().getPrefix()));
-        return clone;
-    }
 }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java Mon Aug 31 16:40:53 2015
@@ -21,9 +21,7 @@ package org.apache.axiom.om.impl.dom;
 
 import static org.apache.axiom.dom.DOMExceptionTranslator.newDOMException;
 
-import org.apache.axiom.core.ClonePolicy;
 import org.apache.axiom.dom.DOMNode;
-import org.apache.axiom.dom.Policies;
 import org.apache.axiom.om.OMCloneOptions;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMInformationItem;
@@ -57,14 +55,6 @@ public abstract class NodeImpl implement
         //Parent node should override this 
     }
 
-    public final Node cloneNode(boolean deep) {
-        NodeImpl clone = clone(null, null, deep ? Policies.DEEP_CLONE : Policies.SHALLOW_CLONE);
-        if (!(clone instanceof DocumentImpl)) {
-            clone.coreSetOwnerDocument(ownerDocument());
-        }
-        return clone;
-    }
-
     /*
      * DOM-Level 3 methods
      */
@@ -328,8 +318,6 @@ public abstract class NodeImpl implement
     public abstract OMXMLParserWrapper getBuilder();
     
     public final OMInformationItem clone(OMCloneOptions options) {
-        return (OMInformationItem)clone(options, null, org.apache.axiom.om.impl.common.Policies.CLONE_POLICY);
+        return (OMInformationItem)coreClone(org.apache.axiom.om.impl.common.Policies.CLONE_POLICY, options);
     }
-
-    abstract <T> NodeImpl clone(T options, ParentNode targetParent, ClonePolicy<T> policy);
 }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java?rev=1700274&r1=1700273&r2=1700274&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java Mon Aug 31 16:40:53 2015
@@ -21,12 +21,10 @@ package org.apache.axiom.om.impl.dom;
 
 import static org.apache.axiom.dom.DOMExceptionTranslator.newDOMException;
 
-import org.apache.axiom.core.ClonePolicy;
 import org.apache.axiom.core.CoreChildNode;
 import org.apache.axiom.core.CoreDocumentFragment;
 import org.apache.axiom.dom.DOMParentNode;
 import org.apache.axiom.dom.Policies;
-import org.apache.axiom.om.OMCloneOptions;
 import org.apache.axiom.om.OMFactory;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
@@ -149,16 +147,4 @@ public abstract class ParentNode extends
         } while (currentNode != null);
         return false;
     }
-
-    final <T> NodeImpl clone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
-        ParentNode clone = shallowClone(options, targetParent, policy);
-        if (policy.cloneChildren(options, coreGetNodeType())) {
-            for (Node child = getFirstChild(); child != null; child = child.getNextSibling()) {
-                ((NodeImpl)child).clone(options, clone, policy);
-            }
-        }
-        return clone;
-    }
-    
-    abstract <T> ParentNode shallowClone(T options, ParentNode targetParent, ClonePolicy<T> policy);
 }