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 15:32:04 UTC
svn commit: r1700247 - 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 13:32:03 2015
New Revision: 1700247
URL: http://svn.apache.org/r1700247
Log:
Make the cloning logic converge a bit more.
Modified:
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java
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/CoreCDATASectionSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataNodeSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNode.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/CoreCommentSupport.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/CoreDocumentSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentTypeDeclarationSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreEntityReferenceSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreLeafNodeSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareAttributeSupport.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/CoreNSUnawareAttributeSupport.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/CoreNode.java
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNodeSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNodeSupport.aj
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstructionSupport.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/om/impl/common/TextContent.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPHeaderBlockSupport.aj
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPMessageSupport.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
webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java
webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPHeaderBlockImpl.java
webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java Mon Aug 31 13:32:03 2015
@@ -23,6 +23,6 @@ package org.apache.axiom.core;
* {@link CoreCharacterDataNode} is either a {@link String} object or an instance of this interface.
*/
public interface CharacterData {
- CharacterData clone(ClonePolicy policy, Object options);
+ <T> CharacterData clone(ClonePolicy<T> policy, T options);
String toString();
}
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -21,8 +21,9 @@ package org.apache.axiom.core;
/**
* Defines how an object model tree is to be cloned.
*/
-public interface ClonePolicy {
- boolean repairNamespaces();
- boolean cloneAttributes();
- boolean cloneChildren(NodeType nodeType);
+public interface ClonePolicy<T> {
+ boolean preserveModel(T options);
+ boolean repairNamespaces(T options);
+ boolean cloneAttributes(T options);
+ boolean cloneChildren(T options, NodeType nodeType);
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCDATASectionSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCDATASectionSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCDATASectionSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCDATASectionSupport.aj Mon Aug 31 13:32:03 2015
@@ -23,7 +23,7 @@ public aspect CoreCDATASectionSupport {
return NodeType.CDATA_SECTION;
}
- public final CoreNode CoreCDATASection.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreCDATASection.shallowClone(ClonePolicy<T> policy, T options) {
return coreGetNodeFactory().createNode(CoreCDATASection.class);
}
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataNodeSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataNodeSupport.aj Mon Aug 31 13:32:03 2015
@@ -48,7 +48,7 @@ public aspect CoreCharacterDataNodeSuppo
this.data = data;
}
- public final CoreNode CoreCharacterDataNode.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreCharacterDataNode.shallowClone(ClonePolicy<T> policy, T options) {
CoreCharacterDataNode clone = coreGetNodeFactory().createNode(CoreCharacterDataNode.class);
clone.data = data instanceof CharacterData ? ((CharacterData)data).clone(policy, options) : data;
clone.coreSetIgnorable(coreIsIgnorable());
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNode.java?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNode.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreChildNode.java Mon Aug 31 13:32:03 2015
@@ -48,5 +48,5 @@ public interface CoreChildNode extends C
* the node to which the clone should be added; may be <code>null</code>
* @return the clone of this node
*/
- CoreNode coreClone(ClonePolicy policy, Object options, CoreParentNode targetParent);
+ <T> CoreNode coreClone(ClonePolicy<T> policy, T options, CoreParentNode targetParent);
}
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -209,7 +209,7 @@ public aspect CoreChildNodeSupport {
}
}
- public final CoreNode CoreChildNode.coreClone(ClonePolicy policy, Object options, CoreParentNode targetParent) {
+ public final <T> CoreNode CoreChildNode.coreClone(ClonePolicy<T> policy, T options, CoreParentNode targetParent) {
CoreChildNode clone = (CoreChildNode)shallowClone(policy, options);
if (targetParent != null) {
targetParent.coreAppendChild(clone, false);
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCommentSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCommentSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCommentSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCommentSupport.aj Mon Aug 31 13:32:03 2015
@@ -23,7 +23,7 @@ public aspect CoreCommentSupport {
return NodeType.COMMENT;
}
- public final CoreNode CoreComment.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreComment.shallowClone(ClonePolicy<T> policy, T options) {
return coreGetNodeFactory().createNode(CoreComment.class);
}
}
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -37,7 +37,7 @@ public aspect CoreDocumentFragmentSuppor
ownerDocument = document;
}
- public final CoreNode CoreDocumentFragment.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreDocumentFragment.shallowClone(ClonePolicy<T> policy, T options) {
// TODO
throw new UnsupportedOperationException();
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentSupport.aj Mon Aug 31 13:32:03 2015
@@ -81,8 +81,13 @@ public aspect CoreDocumentSupport {
this.standalone = standalone;
}
- public final CoreNode CoreDocument.shallowClone(ClonePolicy policy, Object options) {
- // TODO
- throw new UnsupportedOperationException();
+ public final <T> CoreNode CoreDocument.shallowClone(ClonePolicy<T> policy, T options) {
+ CoreDocument clone = (CoreDocument)coreGetNodeFactory().createNode(
+ policy.preserveModel(options) ? coreGetNodeClass() : coreGetNodeType().getInterface());
+ clone.coreSetXmlVersion(coreGetXmlVersion());
+ clone.coreSetXmlEncoding(coreGetXmlEncoding());
+ clone.coreSetStandalone(coreIsStandalone());
+ clone.coreSetInputEncoding(coreGetInputEncoding());
+ return clone;
}
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentTypeDeclarationSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentTypeDeclarationSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentTypeDeclarationSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreDocumentTypeDeclarationSupport.aj Mon Aug 31 13:32:03 2015
@@ -60,7 +60,7 @@ public aspect CoreDocumentTypeDeclaratio
this.internalSubset = internalSubset;
}
- public final CoreNode CoreDocumentTypeDeclaration.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreDocumentTypeDeclaration.shallowClone(ClonePolicy<T> policy, T options) {
CoreDocumentTypeDeclaration clone = coreGetNodeFactory().createNode(CoreDocumentTypeDeclaration.class);
clone.coreSetRootName(coreGetRootName());
clone.coreSetPublicId(coreGetPublicId());
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreEntityReferenceSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreEntityReferenceSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreEntityReferenceSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreEntityReferenceSupport.aj Mon Aug 31 13:32:03 2015
@@ -42,7 +42,7 @@ public aspect CoreEntityReferenceSupport
this.replacementText = replacementText;
}
- public final CoreNode CoreEntityReference.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreEntityReference.shallowClone(ClonePolicy<T> policy, T options) {
CoreEntityReference clone = coreGetNodeFactory().createNode(CoreEntityReference.class);
clone.coreSetName(coreGetName());
clone.coreSetReplacementText(coreGetReplacementText());
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreLeafNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreLeafNodeSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreLeafNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreLeafNodeSupport.aj Mon Aug 31 13:32:03 2015
@@ -19,6 +19,6 @@
package org.apache.axiom.core;
public aspect CoreLeafNodeSupport {
- public final void CoreLeafNode.cloneChildrenIfNecessary(ClonePolicy policy, Object options, CoreNode clone) {
+ public final <T> void CoreLeafNode.cloneChildrenIfNecessary(ClonePolicy<T> policy, T options, CoreNode clone) {
}
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareAttributeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareAttributeSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareAttributeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSAwareAttributeSupport.aj Mon Aug 31 13:32:03 2015
@@ -23,7 +23,7 @@ public aspect CoreNSAwareAttributeSuppor
return NodeType.NS_AWARE_ATTRIBUTE;
}
- public final CoreNode CoreNSAwareAttribute.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreNSAwareAttribute.shallowClone(ClonePolicy<T> policy, T options) {
CoreNSAwareAttribute clone = coreGetNodeFactory().createNode(CoreNSAwareAttribute.class);
clone.coreSetName(this);
clone.coreSetType(coreGetType());
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -31,7 +31,7 @@ public aspect CoreNSAwareElementSupport
return namespaceURI.equals(coreGetNamespaceURI()) ? coreGetPrefix() : null;
}
- public final CoreNode CoreNSAwareElement.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreNSAwareElement.shallowClone(ClonePolicy<T> policy, T options) {
// TODO
throw new UnsupportedOperationException();
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSUnawareAttributeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSUnawareAttributeSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSUnawareAttributeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNSUnawareAttributeSupport.aj Mon Aug 31 13:32:03 2015
@@ -23,7 +23,7 @@ public aspect CoreNSUnawareAttributeSupp
return NodeType.NS_UNAWARE_ATTRIBUTE;
}
- public final CoreNode CoreNSUnawareAttribute.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreNSUnawareAttribute.shallowClone(ClonePolicy<T> policy, T options) {
// TODO
throw new UnsupportedOperationException();
}
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -31,7 +31,7 @@ public aspect CoreNSUnawareElementSuppor
return null;
}
- public final CoreNode CoreNSUnawareElement.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreNSUnawareElement.shallowClone(ClonePolicy<T> policy, T options) {
// TODO
throw new UnsupportedOperationException();
}
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -23,7 +23,7 @@ public aspect CoreNamespaceDeclarationSu
return NodeType.NAMESPACE_DECLARATION;
}
- public final CoreNode CoreNamespaceDeclaration.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreNamespaceDeclaration.shallowClone(ClonePolicy<T> policy, T options) {
// TODO
throw new UnsupportedOperationException();
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNode.java?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNode.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNode.java Mon Aug 31 13:32:03 2015
@@ -39,5 +39,8 @@ public interface CoreNode {
* the policy to use when cloning this node (and its children)
* @return the clone of this node
*/
- CoreNode coreClone(ClonePolicy policy, Object options);
+ <T> CoreNode coreClone(ClonePolicy<T> policy, T options);
+
+ <T> CoreNode shallowClone(ClonePolicy<T> policy, T options);
+ <T> void cloneChildrenIfNecessary(ClonePolicy<T> policy, T options, CoreNode 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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -66,12 +66,9 @@ public aspect CoreNodeSupport {
}
}
- public final CoreNode CoreNode.coreClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreNode.coreClone(ClonePolicy<T> policy, T options) {
CoreNode clone = shallowClone(policy, options);
cloneChildrenIfNecessary(policy, options, clone);
return clone;
}
-
- public abstract CoreNode CoreNode.shallowClone(ClonePolicy policy, Object options);
- public abstract void CoreNode.cloneChildrenIfNecessary(ClonePolicy policy, Object options, CoreNode clone);
}
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNodeSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNodeSupport.aj Mon Aug 31 13:32:03 2015
@@ -292,8 +292,8 @@ public aspect CoreParentNodeSupport {
return new ElementsIterator<T>(this, axis, type, matcher, namespaceURI, name, exceptionTranslator, detachPolicy);
}
- public final void CoreParentNode.cloneChildrenIfNecessary(ClonePolicy policy, Object options, CoreNode clone) {
- if (policy.cloneChildren(coreGetNodeType())) {
+ public final <T> void CoreParentNode.cloneChildrenIfNecessary(ClonePolicy<T> policy, T options, CoreNode clone) {
+ if (policy.cloneChildren(options, coreGetNodeType())) {
CoreParentNode targetParent = (CoreParentNode)clone;
if (getState() == COMPACT) {
Object content = this.content;
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstructionSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstructionSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstructionSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstructionSupport.aj Mon Aug 31 13:32:03 2015
@@ -33,7 +33,7 @@ public aspect CoreProcessingInstructionS
this.target = target;
}
- public final CoreNode CoreProcessingInstruction.shallowClone(ClonePolicy policy, Object options) {
+ public final <T> CoreNode CoreProcessingInstruction.shallowClone(ClonePolicy<T> policy, T options) {
CoreProcessingInstruction clone = coreGetNodeFactory().createNode(CoreProcessingInstruction.class);
clone.target = target;
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -100,30 +100,40 @@ public final class Policies {
}
};
- public static final ClonePolicy DEEP_CLONE = new ClonePolicy() {
- public boolean repairNamespaces() {
+ public static final ClonePolicy<Void> DEEP_CLONE = new ClonePolicy<Void>() {
+ public boolean preserveModel(Void options) {
+ // This is not specified by the API, but it's compatible with versions before 1.2.14
+ return true;
+ }
+
+ public boolean repairNamespaces(Void options) {
return false;
}
- public boolean cloneAttributes() {
+ public boolean cloneAttributes(Void options) {
return true;
}
- public boolean cloneChildren(NodeType nodeType) {
+ public boolean cloneChildren(Void options, NodeType nodeType) {
return true;
}
};
- public static final ClonePolicy SHALLOW_CLONE = new ClonePolicy() {
- public boolean repairNamespaces() {
+ public static final ClonePolicy<Void> SHALLOW_CLONE = new ClonePolicy<Void>() {
+ public boolean preserveModel(Void options) {
+ // This is not specified by the API, but it's compatible with versions before 1.2.14
+ return true;
+ }
+
+ public boolean repairNamespaces(Void options) {
return false;
}
- public boolean cloneAttributes() {
+ public boolean cloneAttributes(Void options) {
return true;
}
- public boolean cloneChildren(NodeType nodeType) {
+ public boolean cloneChildren(Void options, NodeType nodeType) {
return nodeType == NodeType.NS_UNAWARE_ATTRIBUTE || nodeType == NodeType.NS_AWARE_ATTRIBUTE;
}
};
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -32,6 +32,7 @@ import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.apache.axiom.core.ClonePolicy;
import org.apache.axiom.core.CoreAttribute;
import org.apache.axiom.core.CoreParentNode;
import org.apache.axiom.core.ElementAction;
@@ -557,17 +558,17 @@ public aspect AxiomElementSupport {
}
}
- public final AxiomElement AxiomElement.shallowCloneWithoutAttributes(OMCloneOptions options, CoreParentNode targetParent, boolean namespaceRepairing) {
- AxiomElement clone = (AxiomElement)coreGetNodeFactory().createNode(options.isPreserveModel() ? coreGetNodeClass() : AxiomElement.class);
+ public final <T> AxiomElement AxiomElement.shallowCloneWithoutAttributes(ClonePolicy<T> policy, T options, CoreParentNode targetParent, boolean namespaceRepairing) {
+ AxiomElement clone = (AxiomElement)coreGetNodeFactory().createNode(policy.preserveModel(options) ? coreGetNodeClass() : AxiomElement.class);
if (targetParent != null) {
targetParent.coreAppendChild(clone, false);
}
clone.initName(getLocalName(), getNamespace(), namespaceRepairing);
- copyData(options, clone);
+ copyData(policy, options, clone);
return clone;
}
- public void AxiomElement.copyData(OMCloneOptions options, AxiomElement clone) {
+ public <T> void AxiomElement.copyData(ClonePolicy<T> policy, T options, AxiomElement clone) {
}
public final void AxiomElement.buildWithAttachments() {
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -27,6 +27,7 @@ import org.apache.axiom.core.NSAwareAttr
import org.apache.axiom.core.NamespaceDeclarationMatcher;
import org.apache.axiom.core.NodeMigrationPolicy;
import org.apache.axiom.core.NodeType;
+import org.apache.axiom.om.OMCloneOptions;
public final class Policies {
private Policies() {}
@@ -57,16 +58,20 @@ public final class Policies {
}
};
- public static final ClonePolicy CLONE_POLICY = new ClonePolicy() {
- public boolean repairNamespaces() {
+ public static final ClonePolicy<OMCloneOptions> CLONE_POLICY = new ClonePolicy<OMCloneOptions>() {
+ public boolean preserveModel(OMCloneOptions options) {
+ return options.isPreserveModel();
+ }
+
+ public boolean repairNamespaces(OMCloneOptions options) {
return true;
}
- public boolean cloneAttributes() {
+ public boolean cloneAttributes(OMCloneOptions options) {
return true;
}
- public boolean cloneChildren(NodeType nodeType) {
+ public boolean cloneChildren(OMCloneOptions options, NodeType nodeType) {
return true;
}
};
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/TextContent.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/TextContent.java?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/TextContent.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/TextContent.java Mon Aug 31 13:32:03 2015
@@ -126,7 +126,7 @@ public final class TextContent implement
}
}
- public CharacterData clone(ClonePolicy policy, Object options) {
+ public <T> CharacterData clone(ClonePolicy<T> policy, T options) {
if (binary && options instanceof OMCloneOptions && ((OMCloneOptions)options).isFetchDataHandlers()) {
// Force loading of the reference to the DataHandler and ensure that its content is
// completely fetched into memory (or temporary storage).
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -20,7 +20,7 @@ package org.apache.axiom.soap.impl.commo
import javax.xml.namespace.QName;
-import org.apache.axiom.om.OMCloneOptions;
+import org.apache.axiom.core.ClonePolicy;
import org.apache.axiom.om.OMDataSource;
import org.apache.axiom.om.OMDataSourceExt;
import org.apache.axiom.om.impl.common.AxiomElement;
@@ -121,7 +121,7 @@ public aspect AxiomSOAPHeaderBlockSuppor
}
}
- public final void AxiomSOAPHeaderBlock.copyData(OMCloneOptions options, AxiomElement clone) {
+ public final <T> void AxiomSOAPHeaderBlock.copyData(ClonePolicy<T> policy, T options, AxiomElement 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/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPMessageSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPMessageSupport.aj?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPMessageSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/AxiomSOAPMessageSupport.aj Mon Aug 31 13:32:03 2015
@@ -18,12 +18,17 @@
*/
package org.apache.axiom.soap.impl.common;
+import org.apache.axiom.core.CoreNode;
import org.apache.axiom.om.OMOutputFormat;
import org.apache.axiom.om.impl.common.AxiomElement;
import org.apache.axiom.om.impl.common.serializer.push.OutputException;
import org.apache.axiom.om.impl.common.serializer.push.Serializer;
public aspect AxiomSOAPMessageSupport {
+ public Class<? extends CoreNode> AxiomSOAPMessage.coreGetNodeClass() {
+ return AxiomSOAPMessage.class;
+ }
+
// TODO: this violates OO design principles and should disappear in a future Axiom version
public final void AxiomSOAPMessage.internalSerialize(Serializer serializer, OMOutputFormat format,
boolean cache, boolean includeXMLDeclaration) throws OutputException {
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -20,7 +20,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.OMCloneOptions;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.impl.common.AxiomChildNode;
@@ -29,7 +28,7 @@ public abstract class ChildNode extends
super(factory);
}
- final NodeImpl clone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {
+ 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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -22,7 +22,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.OMCloneOptions;
import org.apache.axiom.om.OMFactory;
public class DocumentFragmentImpl extends ParentNode implements DOMDocumentFragment {
@@ -35,7 +34,7 @@ public class DocumentFragmentImpl extend
return (NodeFactory)getOMFactory();
}
- ParentNode shallowClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {
+ <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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -27,7 +27,6 @@ import org.apache.axiom.core.CoreModelEx
import org.apache.axiom.core.NodeMigrationPolicy;
import org.apache.axiom.dom.DOMDocument;
import org.apache.axiom.dom.DOMExceptionTranslator;
-import org.apache.axiom.om.OMCloneOptions;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
@@ -233,24 +232,10 @@ public class DocumentImpl extends Parent
throw new UnsupportedOperationException("TODO");
}
- ParentNode shallowClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {
- DocumentImpl clone;
- if (options.isPreserveModel()) {
- clone = createClone(options);
- } else {
- clone = new DocumentImpl(getOMFactory());
- }
- clone.coreSetXmlVersion(coreGetXmlVersion());
- clone.coreSetXmlEncoding(coreGetXmlEncoding());
- clone.coreSetStandalone(coreIsStandalone());
- clone.coreSetInputEncoding(coreGetInputEncoding());
- return clone;
+ <T> ParentNode shallowClone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
+ return (ParentNode)shallowClone(policy, options);
}
- protected DocumentImpl createClone(OMCloneOptions options) {
- return new DocumentImpl(getOMFactory());
- }
-
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -63,14 +63,14 @@ public abstract class ElementImpl extend
return prefix;
}
- final ParentNode shallowClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {
+ 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() && attr instanceof NSAwareAttribute) {
+ if (policy.repairNamespaces(options) && attr instanceof NSAwareAttribute) {
NSAwareAttribute nsAwareAttr = (NSAwareAttribute)attr;
String namespaceURI = nsAwareAttr.coreGetNamespaceURI();
if (namespaceURI.length() != 0) {
@@ -86,7 +86,7 @@ public abstract class ElementImpl extend
return clone;
}
- abstract ElementImpl createClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy);
+ 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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -20,7 +20,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.OMCloneOptions;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.impl.OMAttributeEx;
@@ -40,7 +39,7 @@ public final class NSAwareAttribute exte
}
@Override
- final ParentNode shallowClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {
+ 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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -53,8 +53,8 @@ public class NSAwareElement extends Elem
}
@Override
- final ElementImpl createClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {
- return (ElementImpl)shallowCloneWithoutAttributes(options, targetParent, policy.repairNamespaces());
+ 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) {
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -21,7 +21,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.OMCloneOptions;
import org.apache.axiom.om.OMFactory;
public class NSUnawareAttribute extends AttrImpl implements DOMNSUnawareAttribute {
@@ -34,8 +33,8 @@ public class NSUnawareAttribute extends
}
@Override
- ParentNode shallowClone(OMCloneOptions options, ParentNode targetParent,
- ClonePolicy policy) {
+ <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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -21,7 +21,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.OMCloneOptions;
import org.apache.axiom.om.OMFactory;
public class NSUnawareElement extends ElementImpl implements DOMNSUnawareElement {
@@ -38,7 +37,7 @@ public class NSUnawareElement extends El
}
@Override
- ElementImpl createClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {
+ <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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -20,7 +20,6 @@ package org.apache.axiom.om.impl.dom;
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.impl.common.AxiomNamespaceDeclaration;
import org.apache.axiom.om.impl.common.OMNamespaceImpl;
@@ -31,7 +30,7 @@ public final class NamespaceDeclaration
}
@Override
- final ParentNode shallowClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {
+ 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
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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -58,10 +58,7 @@ public abstract class NodeImpl implement
}
public final Node cloneNode(boolean deep) {
- OMCloneOptions options = new OMCloneOptions();
- // This is not specified by the API, but it's compatible with versions before 1.2.14
- options.setPreserveModel(true);
- NodeImpl clone = clone(options, null, deep ? Policies.DEEP_CLONE : Policies.SHALLOW_CLONE);
+ NodeImpl clone = clone(null, null, deep ? Policies.DEEP_CLONE : Policies.SHALLOW_CLONE);
if (!(clone instanceof DocumentImpl)) {
clone.coreSetOwnerDocument(ownerDocument());
}
@@ -334,5 +331,5 @@ public abstract class NodeImpl implement
return (OMInformationItem)clone(options, null, org.apache.axiom.om.impl.common.Policies.CLONE_POLICY);
}
- abstract NodeImpl clone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy);
+ 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=1700247&r1=1700246&r2=1700247&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 13:32:03 2015
@@ -150,9 +150,9 @@ public abstract class ParentNode extends
return false;
}
- final NodeImpl clone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy) {
+ final <T> NodeImpl clone(T options, ParentNode targetParent, ClonePolicy<T> policy) {
ParentNode clone = shallowClone(options, targetParent, policy);
- if (policy.cloneChildren(coreGetNodeType())) {
+ if (policy.cloneChildren(options, coreGetNodeType())) {
for (Node child = getFirstChild(); child != null; child = child.getNextSibling()) {
((NodeImpl)child).clone(options, clone, policy);
}
@@ -160,5 +160,5 @@ public abstract class ParentNode extends
return clone;
}
- abstract ParentNode shallowClone(OMCloneOptions options, ParentNode targetParent, ClonePolicy policy);
+ abstract <T> ParentNode shallowClone(T options, ParentNode targetParent, ClonePolicy<T> policy);
}
Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java Mon Aug 31 13:32:03 2015
@@ -19,7 +19,6 @@
package org.apache.axiom.soap.impl.dom;
-import org.apache.axiom.om.OMCloneOptions;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
@@ -46,8 +45,4 @@ public class SOAPMessageImpl extends Doc
throw new OMException("Child not allowed; must be a SOAPEnvelope");
}
}
-
- protected DocumentImpl createClone(OMCloneOptions options) {
- return new SOAPMessageImpl(getOMFactory());
- }
}
Modified: webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java Mon Aug 31 13:32:03 2015
@@ -20,13 +20,13 @@
package org.apache.axiom.om.impl.llom;
import org.apache.axiom.om.OMCloneOptions;
-import org.apache.axiom.om.OMDocument;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMInformationItem;
import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.impl.common.AxiomDocument;
+import org.apache.axiom.om.impl.common.Policies;
import java.util.Iterator;
@@ -59,23 +59,10 @@ public class OMDocumentImpl extends OMSe
}
public OMInformationItem clone(OMCloneOptions options) {
- AxiomDocument targetDocument;
- if (options.isPreserveModel()) {
- targetDocument = (AxiomDocument)createClone(options);
- } else {
- targetDocument = (AxiomDocument)getOMFactory().createOMDocument();
- }
- targetDocument.setXMLVersion(getXMLVersion());
- targetDocument.setXMLEncoding(getXMLEncoding());
- targetDocument.setCharsetEncoding(getCharsetEncoding());
- targetDocument.setStandalone(isStandalone());
+ AxiomDocument targetDocument = (AxiomDocument)shallowClone(Policies.CLONE_POLICY, options);
for (Iterator it = getChildren(); it.hasNext(); ) {
((OMNodeImpl)it.next()).clone(options, targetDocument);
}
return targetDocument;
}
-
- protected OMDocument createClone(OMCloneOptions options) {
- return getOMFactory().createOMDocument();
- }
}
Modified: webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java Mon Aug 31 13:32:03 2015
@@ -29,6 +29,7 @@ import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.impl.common.AxiomContainer;
import org.apache.axiom.om.impl.common.AxiomElement;
+import org.apache.axiom.om.impl.common.Policies;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -88,7 +89,7 @@ public class OMElementImpl extends OMNod
}
final OMNode defaultClone(OMCloneOptions options, AxiomContainer targetParent) {
- AxiomElement targetElement = shallowCloneWithoutAttributes(options, targetParent, true);
+ AxiomElement targetElement = shallowCloneWithoutAttributes(Policies.CLONE_POLICY, options, targetParent, true);
for (Iterator it = getAllDeclaredNamespaces(); it.hasNext(); ) {
OMNamespace ns = (OMNamespace)it.next();
targetElement.declareNamespace(ns);
Modified: webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPHeaderBlockImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPHeaderBlockImpl.java?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPHeaderBlockImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPHeaderBlockImpl.java Mon Aug 31 13:32:03 2015
@@ -25,6 +25,7 @@ import org.apache.axiom.om.OMDataSource;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMSourcedElement;
+import org.apache.axiom.om.impl.common.Policies;
import org.apache.axiom.om.impl.llom.OMSourcedElementImpl;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.impl.common.AxiomSOAPHeaderBlock;
@@ -47,7 +48,7 @@ public abstract class SOAPHeaderBlockImp
protected OMSourcedElement createClone(OMCloneOptions options, OMDataSource ds) {
AxiomSOAPHeaderBlock clone = (AxiomSOAPHeaderBlock)((SOAPFactory)getOMFactory()).createSOAPHeaderBlock(ds);
- copyData(options, clone);
+ copyData(Policies.CLONE_POLICY, options, clone);
return clone;
}
}
Modified: webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java?rev=1700247&r1=1700246&r2=1700247&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java Mon Aug 31 13:32:03 2015
@@ -19,8 +19,6 @@
package org.apache.axiom.soap.impl.llom;
-import org.apache.axiom.om.OMCloneOptions;
-import org.apache.axiom.om.OMDocument;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
@@ -47,10 +45,4 @@ public class SOAPMessageImpl extends OMD
throw new OMException("Child not allowed; must be a SOAPEnvelope");
}
}
-
- protected OMDocument createClone(OMCloneOptions options) {
- // Note: we need to use getOMFactory here (instead of the factory attribute)
- // directly because the factory for a SOAPMessage may be determined lazily.
- return new SOAPMessageImpl(getOMFactory());
- }
}