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 22:37:35 UTC
svn commit: r1700333 - in /webservices/axiom/trunk/aspects:
core-aspects/src/main/java/org/apache/axiom/core/
dom-aspects/src/main/java/org/apache/axiom/dom/
om-aspects/src/main/java/org/apache/axiom/om/impl/common/
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) {