Author: veithen
Date: Mon Aug 31 20:37:35 2015
New Revision: 1700333
URL: http://svn.apache.org/r1700333
Log:
AXIOM-471: Some initial changes to better integrate OMSourcedElement support.
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/CoreNodeSupport.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/AxiomNamedInformationItemSupport.aj
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Policies.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=1700333&r1=1700332&r2=1700333&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 20:37:35 2015
@@ -22,7 +22,7 @@ package org.apache.axiom.core;
* Defines how an object model tree is to be cloned.
*/
public interface ClonePolicy<T> {
- boolean preserveModel(T options);
+ Class<? extends CoreNode> getTargetNodeClass(T options, CoreNode node);
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/CoreNodeSupport.aj
URL:
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreNodeSupport.aj?rev=1700333&r1=1700332&r2=1700333&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 20:37:35 2015
@@ -68,8 +68,7 @@ public aspect CoreNodeSupport {
// TODO: merge this into internalClone once it is no longer referenced
elsewhere
public final <T> CoreNode CoreNode.shallowClone(ClonePolicy<T> policy, T
options) {
- CoreNode clone = coreGetNodeFactory().createNode(
- policy.preserveModel(options) ? coreGetNodeClass() :
coreGetNodeType().getInterface());
+ CoreNode clone =
coreGetNodeFactory().createNode(policy.getTargetNodeClass(options, this));
clone.init(policy, options, this);
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=1700333&r1=1700332&r2=1700333&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 20:37:35 2015
@@ -102,9 +102,9 @@ public final class Policies {
};
public static final ClonePolicy<Void> DEEP_CLONE = new ClonePolicy<Void>()
{
- public boolean preserveModel(Void options) {
+ public Class<? extends CoreNode> getTargetNodeClass(Void options,
CoreNode node) {
// This is not specified by the API, but it's compatible with
versions before 1.2.14
- return true;
+ return node.coreGetNodeClass();
}
public boolean repairNamespaces(Void options) {
@@ -124,9 +124,9 @@ public final class Policies {
};
public static final ClonePolicy<Void> SHALLOW_CLONE = new
ClonePolicy<Void>() {
- public boolean preserveModel(Void options) {
+ public Class<? extends CoreNode> getTargetNodeClass(Void options,
CoreNode node) {
// This is not specified by the API, but it's compatible with
versions before 1.2.14
- return true;
+ return node.coreGetNodeClass();
}
public boolean repairNamespaces(Void options) {
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=1700333&r1=1700332&r2=1700333&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 20:37:35 2015
@@ -542,7 +542,7 @@ public aspect AxiomElementSupport {
}
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);
+ AxiomElement clone =
(AxiomElement)coreGetNodeFactory().createNode(policy.getTargetNodeClass(options,
this));
if (targetParent != null) {
targetParent.coreAppendChild(clone, false);
}
Modified:
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamedInformationItemSupport.aj
URL:
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamedInformationItemSupport.aj?rev=1700333&r1=1700332&r2=1700333&view=diff
==============================================================================
---
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamedInformationItemSupport.aj
(original)
+++
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamedInformationItemSupport.aj
Mon Aug 31 20:37:35 2015
@@ -124,9 +124,9 @@ public aspect AxiomNamedInformationItemS
public final void AxiomNamedInformationItem.initName(CoreNamedNode other) {
AxiomNamedInformationItem o = (AxiomNamedInformationItem)other;
- localName = o.coreGetLocalName();
- namespace = o.getNamespace();
- qName = null;
+ localName = o.localName;
+ namespace = o.namespace;
+ qName = o.qName;
}
public void AxiomNamedInformationItem.updateLocalName() {
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=1700333&r1=1700332&r2=1700333&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 20:37:35 2015
@@ -61,8 +61,14 @@ public final class Policies {
};
public static final ClonePolicy<OMCloneOptions> CLONE_POLICY = new
ClonePolicy<OMCloneOptions>() {
- public boolean preserveModel(OMCloneOptions options) {
- return options != null && options.isPreserveModel();
+ public Class<? extends CoreNode> getTargetNodeClass(OMCloneOptions
options, CoreNode node) {
+ if (options != null && options.isPreserveModel()) {
+ return node.coreGetNodeClass();
+ } else if (options != null && options.isCopyOMDataSources() &&
node instanceof AxiomSourcedElement) {
+ return AxiomSourcedElement.class;
+ } else {
+ return node.coreGetNodeType().getInterface();
+ }
}
public boolean repairNamespaces(OMCloneOptions options) {