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) {