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