Author: veithen
Date: Sun Nov 15 13:59:31 2015
New Revision: 1714454

URL: http://svn.apache.org/viewvc?rev=1714454&view=rev
Log:
Introduce an interface that will group together all the API semantics 
(DetachPolicy, ClonePolicy, etc.).

Added:
    
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Semantics.java
   (with props)
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMSemantics.java
      - copied, changed from r1714139, 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMSemantics.java
      - copied, changed from r1711547, 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Policies.java
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomSemantics.java
      - copied, changed from r1714139, 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Policies.java
Removed:
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Policies.java
    
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/AbstractNodeIterator.java
    
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeIterator.java
    
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java
    
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttribute.java
    
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttributeSupport.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/CoreCharacterDataSinkNode.java
    
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/CoreElement.java
    
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/CoreParentNode.java
    
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/ElementMatcher.java
    
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ElementsIterator.java
    
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java
    
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java
    
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeIterator.java
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMAttributeSupport.aj
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMCDATASectionSupport.aj
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMCommentSupport.aj
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentFragmentSupport.aj
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.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/DOMParentNodeSupport.aj
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMProcessingInstructionSupport.aj
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMTextNodeSupport.aj
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ElementsByTagName.java
    
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ElementsByTagNameNS.java
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttributeMixin.aj
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaElementMixin.aj
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaProcessingInstructionMixin.aj
    
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategoryContainerMixin.aj
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomAttributeSupport.aj
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomChildNodeSupport.aj
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCommentSupport.aj
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomDocumentSupport.aj
    
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/AxiomInformationItemSupport.aj
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomProcessingInstructionSupport.aj
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomTextSupport.aj
    
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
    
webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
    
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMElement.java

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AbstractNodeIterator.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AbstractNodeIterator.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AbstractNodeIterator.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AbstractNodeIterator.java
 Sun Nov 15 13:59:31 2015
@@ -26,7 +26,7 @@ public abstract class AbstractNodeIterat
     private final Axis axis;
     private final Class<T> type;
     private final ExceptionTranslator exceptionTranslator;
-    private final DetachPolicy detachPolicy;
+    private final Semantics semantics;
     private CoreNode currentNode;
     
     /**
@@ -38,12 +38,12 @@ public abstract class AbstractNodeIterat
     private boolean hasNext;
     private int depth;
     
-    public AbstractNodeIterator(CoreParentNode startNode, Axis axis, Class<T> 
type, ExceptionTranslator exceptionTranslator, DetachPolicy detachPolicy) {
+    public AbstractNodeIterator(CoreParentNode startNode, Axis axis, Class<T> 
type, ExceptionTranslator exceptionTranslator, Semantics semantics) {
         this.startNode = startNode;
         this.axis = axis;
         this.type = type;
         this.exceptionTranslator = exceptionTranslator;
-        this.detachPolicy = detachPolicy;
+        this.semantics = semantics;
     }
 
     protected abstract boolean matches(CoreNode node) throws 
CoreModelException;
@@ -130,7 +130,7 @@ public abstract class AbstractNodeIterat
         hasNext();
         if (currentNode instanceof CoreChildNode) {
 //            try {
-                ((CoreChildNode)currentNode).coreDetach(detachPolicy);
+                ((CoreChildNode)currentNode).coreDetach(semantics);
 //            } catch (CoreModelException ex) {
 //                throw exceptionTranslator.toUncheckedException(ex);
 //            }
@@ -141,6 +141,6 @@ public abstract class AbstractNodeIterat
     public final void replace(CoreChildNode newNode) throws CoreModelException 
{
         // Move to next node before replacing the current one
         hasNext();
-        ((CoreChildNode)currentNode).coreReplaceWith(newNode, detachPolicy);
+        ((CoreChildNode)currentNode).coreReplaceWith(newNode, semantics);
     }
 }

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeIterator.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeIterator.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeIterator.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeIterator.java
 Sun Nov 15 13:59:31 2015
@@ -25,20 +25,20 @@ import java.util.NoSuchElementException;
 final class AttributeIterator<T extends CoreAttribute,S> implements 
Iterator<S> {
     private final Class<T> type;
     private final Mapper<T,S> mapper;
-    private final DetachPolicy detachPolicy;
+    private final Semantics semantics;
     private CoreAttribute currentAttribute;
     private CoreAttribute nextAttribute;
     private boolean nextAttributeSet;
     
-    private AttributeIterator(CoreAttribute firstAttribute, Class<T> type, 
Mapper<T,S> mapper, DetachPolicy detachPolicy) {
+    private AttributeIterator(CoreAttribute firstAttribute, Class<T> type, 
Mapper<T,S> mapper, Semantics semantics) {
         this.type = type;
         this.mapper = mapper;
-        this.detachPolicy = detachPolicy;
+        this.semantics = semantics;
         nextAttribute = firstAttribute;
         nextAttributeSet = true;
     }
     
-    static <T extends CoreAttribute,S> Iterator<S> create(CoreElement element, 
Class<T> type, Mapper<T,S> mapper, DetachPolicy detachPolicy) {
+    static <T extends CoreAttribute,S> Iterator<S> create(CoreElement element, 
Class<T> type, Mapper<T,S> mapper, Semantics semantics) {
         CoreAttribute attribute = element.coreGetFirstAttribute();
         while (attribute != null && !type.isInstance(attribute)) {
             attribute = attribute.coreGetNextAttribute();
@@ -46,7 +46,7 @@ final class AttributeIterator<T extends
         if (attribute == null) {
             return Collections.<S>emptyList().iterator();
         } else {
-            return new AttributeIterator<T,S>(attribute, type, mapper, 
detachPolicy);
+            return new AttributeIterator<T,S>(attribute, type, mapper, 
semantics);
         }
     }
     
@@ -80,7 +80,7 @@ final class AttributeIterator<T extends
         } else {
             // Ensure that the next attribute is known before we remove the 
current one.
             hasNext();
-            currentAttribute.coreRemove(detachPolicy);
+            currentAttribute.coreRemove(semantics);
             currentAttribute = null;
         }
     }

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/AttributeMatcher.java
 Sun Nov 15 13:59:31 2015
@@ -29,7 +29,7 @@ public interface AttributeMatcher {
      * {@link CoreElement#coreSetAttribute(AttributeMatcher, String, String, 
String, String)}, or
      * they are determined by the return values of {@link 
#getNamespaceURI(CoreAttribute)} and
      * {@link #getName(CoreAttribute)} if
-     * {@link CoreElement#coreSetAttribute(AttributeMatcher, CoreAttribute, 
DetachPolicy)}
+     * {@link CoreElement#coreSetAttribute(AttributeMatcher, CoreAttribute, 
Semantics)}
      * is used. It is
      * not required that these parameters strictly represent the namespace URI 
and local name of the
      * attribute. Their exact meaning is defined by the particular {@link 
AttributeMatcher}
@@ -47,7 +47,7 @@ public interface AttributeMatcher {
 
     /**
      * Get the <tt>namespaceURI</tt> parameter for an existing attribute. This 
method is used by
-     * {@link CoreElement#coreSetAttribute(AttributeMatcher, CoreAttribute, 
DetachPolicy)}
+     * {@link CoreElement#coreSetAttribute(AttributeMatcher, CoreAttribute, 
Semantics)}
      * which passes its return value as parameter to {@link 
#matches(CoreAttribute, String, String)}.
      * 
      * @param attr the attribute
@@ -57,7 +57,7 @@ public interface AttributeMatcher {
     
     /**
      * Get the <tt>name</tt> parameter for an existing attribute. This method 
is used by
-     * {@link CoreElement#coreSetAttribute(AttributeMatcher, CoreAttribute, 
DetachPolicy)}
+     * {@link CoreElement#coreSetAttribute(AttributeMatcher, CoreAttribute, 
Semantics)}
      * which passes its return value as parameter to {@link 
#matches(CoreAttribute, String, String)}.
      * 
      * @param attr the attribute

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttribute.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttribute.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttribute.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttribute.java
 Sun Nov 15 13:59:31 2015
@@ -36,13 +36,13 @@ public interface CoreAttribute extends N
     /**
      * Remove this attribute from its owner element.
      * 
-     * @param detachPolicy
-     *            the detach policy that determines the new owner document for 
the attribute
+     * @param semantics
+     *            the API semantics to use; determines the new owner document 
for the attribute
      * @return <code>true</code> if the attribute had an owner element and has 
been removed from
      *         that element; <code>false</code> if the attribute didn't have 
an owner element and no
      *         changes have been made
      */
-    boolean coreRemove(DetachPolicy detachPolicy);
+    boolean coreRemove(Semantics semantics);
     
     /**
      * Get the attribute immediately following the current attribute.

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttributeSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttributeSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttributeSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreAttributeSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -96,11 +96,15 @@ public aspect CoreAttributeSupport {
         nextAttribute = attr;
     }
 
-    public final boolean CoreAttribute.coreRemove(DetachPolicy detachPolicy) {
+    public final boolean CoreAttribute.coreRemove(Semantics semantics) {
+        return internalRemove(semantics, null);
+    }
+    
+    public final boolean CoreAttribute.internalRemove(Semantics semantics, 
CoreElement newOwner) {
         if (owner instanceof CoreElement) {
             CoreElement ownerElement = (CoreElement)owner;
             CoreAttribute previousAttr = coreGetPreviousAttribute();
-            owner = detachPolicy.getNewOwnerDocument(ownerElement);
+            owner = newOwner != null ? newOwner : 
semantics.getDetachPolicy().getNewOwnerDocument(ownerElement);
             if (previousAttr == null) {
                 ownerElement.internalSetFirstAttribute(nextAttribute);
             } else {
@@ -109,6 +113,9 @@ public aspect CoreAttributeSupport {
             nextAttribute = null;
             return true;
         } else {
+            if (newOwner != null) {
+                owner = newOwner;
+            }
             return false;
         }
     }

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=1714454&r1=1714453&r2=1714454&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
 Sun Nov 15 13:59:31 2015
@@ -44,7 +44,7 @@ public aspect CoreCharacterDataNodeSuppo
         this.data = data;
     }
     
-    public final void CoreCharacterDataNode.coreSetCharacterData(Object data, 
DetachPolicy detachPolicy) {
+    public final void CoreCharacterDataNode.coreSetCharacterData(Object data, 
Semantics semantics) {
         this.data = data;
     }
     

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSinkNode.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSinkNode.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSinkNode.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSinkNode.java
 Sun Nov 15 13:59:31 2015
@@ -19,5 +19,5 @@
 package org.apache.axiom.core;
 
 public interface CoreCharacterDataSinkNode {
-    void coreSetCharacterData(Object data, DetachPolicy detachPolicy);
+    void coreSetCharacterData(Object data, Semantics semantics);
 }

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=1714454&r1=1714453&r2=1714454&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
 Sun Nov 15 13:59:31 2015
@@ -39,7 +39,7 @@ public interface CoreChildNode extends C
      */
     CoreChildNode coreGetNextSiblingIfAvailable();
 
-    void coreDetach(DetachPolicy detachPolicy);
+    void coreDetach(Semantics semantics);
 
     /**
      * Clone this node according to the provided policy.

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=1714454&r1=1714453&r2=1714454&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
 Sun Nov 15 13:59:31 2015
@@ -195,11 +195,11 @@ public aspect CoreChildNodeSupport {
     
     void CoreChildNode.beforeDetach() {}
     
-    public final void CoreChildNode.coreDetach(DetachPolicy detachPolicy) {
-        internalDetach(detachPolicy, null);
+    public final void CoreChildNode.coreDetach(Semantics semantics) {
+        internalDetach(semantics, null);
     }
     
-    final void CoreChildNode.internalDetach(DetachPolicy detachPolicy, 
CoreParentNode newParent) {
+    final void CoreChildNode.internalDetach(Semantics semantics, 
CoreParentNode newParent) {
         CoreParentNode parent = coreGetParent();
         if (parent != null) {
             beforeDetach();
@@ -216,7 +216,7 @@ public aspect CoreChildNodeSupport {
             nextSibling = null;
             previousSibling = null;
             if (newParent == null) {
-                internalUnsetParent(detachPolicy.getNewOwnerDocument(parent));
+                
internalUnsetParent(semantics.getDetachPolicy().getNewOwnerDocument(parent));
             }
         }
         if (newParent != null) {
@@ -224,10 +224,10 @@ public aspect CoreChildNodeSupport {
         }
     }
 
-    public final void CoreChildNode.coreReplaceWith(CoreChildNode newNode, 
DetachPolicy detachPolicy) {
-        newNode.coreDetach(DetachPolicy.NEW_DOCUMENT);
+    public final void CoreChildNode.coreReplaceWith(CoreChildNode newNode, 
Semantics semantics) {
         CoreParentNode parent = coreGetParent();
         if (parent != null) {
+            newNode.internalDetach(null, parent);
             beforeDetach();
             if (previousSibling == null) {
                 parent.getContent(true).firstChild = newNode;
@@ -243,8 +243,7 @@ public aspect CoreChildNodeSupport {
                 newNode.nextSibling = nextSibling;
                 nextSibling = null;
             }
-            internalUnsetParent(detachPolicy.getNewOwnerDocument(parent));
-            newNode.internalSetParent(parent);
+            
internalUnsetParent(semantics.getDetachPolicy().getNewOwnerDocument(parent));
         }
     }
 

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElement.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElement.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElement.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreElement.java
 Sun Nov 15 13:59:31 2015
@@ -86,12 +86,12 @@ public interface CoreElement extends Cor
      *            the {@link AttributeMatcher} implementation to use
      * @param attr
      *            the new attribute to add
-     * @param detachPolicy
+     * @param semantics
      *            determines the new owner document for the replaced attribute
      * @return the attribute that was replaced by the new attribute, or 
<code>null</code> if no
      *         matching attribute existed.
      */
-    CoreAttribute coreSetAttribute(AttributeMatcher matcher, CoreAttribute 
attr, DetachPolicy detachPolicy);
+    CoreAttribute coreSetAttribute(AttributeMatcher matcher, CoreAttribute 
attr, Semantics semantics);
 
     /**
      * Append an attribute to this element. The attribute is simply added at 
the end of the list of
@@ -117,9 +117,9 @@ public interface CoreElement extends Cor
      * @return <code>true</code> if a matching attribute was found (and has 
been removed),
      *         <code>false</code> if no matching attribute was found
      */
-    boolean coreRemoveAttribute(AttributeMatcher matcher, String namespaceURI, 
String name, DetachPolicy detachPolicy);
+    boolean coreRemoveAttribute(AttributeMatcher matcher, String namespaceURI, 
String name, Semantics semantics);
     
-    <T extends CoreAttribute,S> Iterator<S> coreGetAttributesByType(Class<T> 
type, Mapper<T,S> mapper, DetachPolicy detachPolicy);
+    <T extends CoreAttribute,S> Iterator<S> coreGetAttributesByType(Class<T> 
type, Mapper<T,S> mapper, Semantics semantics);
     
     /**
      * Look up the namespace URI associated to the given prefix.

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=1714454&r1=1714453&r2=1714454&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
 Sun Nov 15 13:59:31 2015
@@ -57,18 +57,13 @@ public aspect CoreElementSupport {
     }
 
     public final void CoreElement.coreAppendAttribute(CoreAttribute attr) {
-        attr.coreRemove(DetachPolicy.NEW_DOCUMENT);
-        internalAppendAttribute(attr);
-    }
-
-    private void CoreElement.internalAppendAttribute(CoreAttribute attr) {
         // TODO: we should probably check if the attribute is already owned by 
the element
-        attr.internalSetOwnerElement(this);
+        attr.internalRemove(null, this);
         CoreAttribute lastAttribute = coreGetLastAttribute();
         if (lastAttribute == null) {
             firstAttribute = attr;
         } else {
-            lastAttribute.insertAttributeAfter(attr);
+            lastAttribute.internalSetNextAttribute(attr);
         }
     }
 
@@ -82,7 +77,7 @@ public aspect CoreElementSupport {
         if (attr == null) {
             CoreAttribute newAttr = matcher.createAttribute(this, 
namespaceURI, name, prefix, value);
             if (previousAttr == null) {
-                internalAppendAttribute(newAttr);
+                coreAppendAttribute(newAttr);
             } else {
                 previousAttr.insertAttributeAfter(newAttr);
             }
@@ -91,12 +86,12 @@ public aspect CoreElementSupport {
         }
     }
     
-    public final CoreAttribute CoreElement.coreSetAttribute(AttributeMatcher 
matcher, CoreAttribute attr, DetachPolicy detachPolicy) {
+    public final CoreAttribute CoreElement.coreSetAttribute(AttributeMatcher 
matcher, CoreAttribute attr, Semantics semantics) {
         if (attr.coreGetOwnerElement() == this) {
             // TODO: document this and add assertion
             return attr;
         }
-        attr.coreRemove(DetachPolicy.NEW_DOCUMENT);
+        attr.internalRemove(null, this);
         String namespaceURI = matcher.getNamespaceURI(attr);
         String name = matcher.getName(attr); 
         CoreAttribute existingAttr = coreGetFirstAttribute();
@@ -105,7 +100,6 @@ public aspect CoreElementSupport {
             previousAttr = existingAttr;
             existingAttr = existingAttr.coreGetNextAttribute();
         }
-        attr.internalSetOwnerElement(this);
         if (existingAttr == null) {
             if (previousAttr == null) {
                 firstAttribute = attr;
@@ -118,25 +112,25 @@ public aspect CoreElementSupport {
             } else {
                 previousAttr.internalSetNextAttribute(attr);
             }
-            
existingAttr.internalUnsetOwnerElement(detachPolicy.getNewOwnerDocument(this));
+            
existingAttr.internalUnsetOwnerElement(semantics.getDetachPolicy().getNewOwnerDocument(this));
             attr.internalSetNextAttribute(existingAttr.coreGetNextAttribute());
             existingAttr.internalSetNextAttribute(null);
         }
         return existingAttr;
     }
 
-    public final boolean CoreElement.coreRemoveAttribute(AttributeMatcher 
matcher, String namespaceURI, String name, DetachPolicy detachPolicy) {
+    public final boolean CoreElement.coreRemoveAttribute(AttributeMatcher 
matcher, String namespaceURI, String name, Semantics semantics) {
         CoreAttribute att = coreGetAttribute(matcher, namespaceURI, name);
         if (att != null) {
-            att.coreRemove(detachPolicy);
+            att.coreRemove(semantics);
             return true;
         } else {
             return false;
         }
     }
 
-    public final <T extends CoreAttribute,S> Iterator<S> 
CoreElement.coreGetAttributesByType(Class<T> type, Mapper<T,S> mapper, 
DetachPolicy detachPolicy) {
-        return AttributeIterator.create(this, type, mapper, detachPolicy);
+    public final <T extends CoreAttribute,S> Iterator<S> 
CoreElement.coreGetAttributesByType(Class<T> type, Mapper<T,S> mapper, 
Semantics semantics) {
+        return AttributeIterator.create(this, type, mapper, semantics);
     }
 
     public abstract String CoreElement.getImplicitNamespaceURI(String prefix);
@@ -215,7 +209,7 @@ public aspect CoreElementSupport {
         if (isExpanded()) {
             CoreAttribute attr = o.coreGetFirstAttribute();
             while (attr != null) {
-                internalAppendAttribute((CoreAttribute)attr.coreClone(policy, 
options));
+                coreAppendAttribute((CoreAttribute)attr.coreClone(policy, 
options));
                 // TODO: needed?
 //                clonedAttr.coreSetSpecified(attr.coreGetSpecified());
                 attr = attr.coreGetNextAttribute();

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNode.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNode.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNode.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNode.java
 Sun Nov 15 13:59:31 2015
@@ -35,5 +35,5 @@ public interface CoreParentNode extends
     void coreSetState(int state);
     void build();
 
-    <T extends CoreElement> NodeIterator<T> coreGetElements(Axis axis, 
Class<T> type, ElementMatcher<? super T> matcher, String namespaceURI, String 
name, ExceptionTranslator exceptionTranslator, DetachPolicy detachPolicy);
+    <T extends CoreElement> NodeIterator<T> coreGetElements(Axis axis, 
Class<T> type, ElementMatcher<? super T> matcher, String namespaceURI, String 
name, ExceptionTranslator exceptionTranslator, Semantics semantics);
 }

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=1714454&r1=1714453&r2=1714454&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
 Sun Nov 15 13:59:31 2015
@@ -186,7 +186,7 @@ public aspect CoreParentNodeSupport {
         fragmentContent.lastChild = null;
     }
 
-    public final void CoreParentNode.coreRemoveChildren(DetachPolicy 
detachPolicy) {
+    public final void CoreParentNode.coreRemoveChildren(Semantics semantics) {
         if (getState() == COMPACT) {
             coreSetState(COMPLETE);
             content = null;
@@ -205,7 +205,7 @@ public aspect CoreParentNodeSupport {
                 updateState = false;
             }
             if (child != null) {
-                CoreDocument newOwnerDocument = 
detachPolicy.getNewOwnerDocument(this);
+                CoreDocument newOwnerDocument = 
semantics.getDetachPolicy().getNewOwnerDocument(this);
                 do {
                     CoreChildNode nextSibling = child.nextSibling;
                     child.previousSibling = null;
@@ -288,16 +288,16 @@ public aspect CoreParentNodeSupport {
         }
     }
     
-    public final void CoreParentNode.coreSetCharacterData(Object data, 
DetachPolicy detachPolicy) {
-        coreRemoveChildren(detachPolicy);
+    public final void CoreParentNode.coreSetCharacterData(Object data, 
Semantics semantics) {
+        coreRemoveChildren(semantics);
         if (data != null && (data instanceof CharacterData || 
((String)data).length() > 0)) {
             coreSetState(COMPACT);
             content = data;
         }
     }
     
-    public final <T> NodeIterator<T> CoreParentNode.coreGetNodes(Axis axis, 
Class<T> type, ExceptionTranslator exceptionTranslator, DetachPolicy 
detachPolicy) {
-        return new AbstractNodeIterator<T>(this, axis, type, 
exceptionTranslator, detachPolicy) {
+    public final <T> NodeIterator<T> CoreParentNode.coreGetNodes(Axis axis, 
Class<T> type, ExceptionTranslator exceptionTranslator, Semantics semantics) {
+        return new AbstractNodeIterator<T>(this, axis, type, 
exceptionTranslator, semantics) {
             @Override
             protected boolean matches(CoreNode node) throws CoreModelException 
{
                 return true;
@@ -305,8 +305,8 @@ public aspect CoreParentNodeSupport {
         };
     }
     
-    public final <T extends CoreElement> NodeIterator<T> 
CoreParentNode.coreGetElements(Axis axis, Class<T> type, ElementMatcher<? super 
T> matcher, String namespaceURI, String name, ExceptionTranslator 
exceptionTranslator, DetachPolicy detachPolicy) {
-        return new ElementsIterator<T>(this, axis, type, matcher, 
namespaceURI, name, exceptionTranslator, detachPolicy);
+    public final <T extends CoreElement> NodeIterator<T> 
CoreParentNode.coreGetElements(Axis axis, Class<T> type, ElementMatcher<? super 
T> matcher, String namespaceURI, String name, ExceptionTranslator 
exceptionTranslator, Semantics semantics) {
+        return new ElementsIterator<T>(this, axis, type, matcher, 
namespaceURI, name, exceptionTranslator, semantics);
     }
 
     public final <T> void 
CoreParentNode.cloneChildrenIfNecessary(ClonePolicy<T> policy, T options, 
CoreNode clone) {

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ElementMatcher.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ElementMatcher.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ElementMatcher.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ElementMatcher.java
 Sun Nov 15 13:59:31 2015
@@ -101,7 +101,7 @@ public interface ElementMatcher<T extend
     /**
      * Check if the given element matches. The values of the 
<code>namespaceURI</code> and
      * <code>name</code> parameters are those passed to
-     * {@link CoreParentNode#coreGetElements(Axis, Class, ElementMatcher, 
String, String, ExceptionTranslator, DetachPolicy)}.
+     * {@link CoreParentNode#coreGetElements(Axis, Class, ElementMatcher, 
String, String, ExceptionTranslator, Semantics)}.
      * 
      * @param element
      *            the element to check

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ElementsIterator.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ElementsIterator.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ElementsIterator.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/ElementsIterator.java
 Sun Nov 15 13:59:31 2015
@@ -24,8 +24,8 @@ final class ElementsIterator<T extends C
     private final String namespaceURI;
     private final String name;
 
-    public ElementsIterator(CoreParentNode startNode, Axis axis, Class<T> 
type, ElementMatcher<? super T> matcher, String namespaceURI, String name, 
ExceptionTranslator exceptionTranslator, DetachPolicy detachPolicy) {
-        super(startNode, axis, type, exceptionTranslator, detachPolicy);
+    public ElementsIterator(CoreParentNode startNode, Axis axis, Class<T> 
type, ElementMatcher<? super T> matcher, String namespaceURI, String name, 
ExceptionTranslator exceptionTranslator, Semantics semantics) {
+        super(startNode, axis, type, exceptionTranslator, semantics);
         this.type = type;
         this.matcher = matcher;
         this.namespaceURI = namespaceURI;

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NSAwareAttributeMatcher.java
 Sun Nov 15 13:59:31 2015
@@ -36,15 +36,15 @@ package org.apache.axiom.core;
  * {@link NamespaceDeclarationMatcher} can be used).
  */
 public final class NSAwareAttributeMatcher implements AttributeMatcher {
-    private final DetachPolicy detachPolicy;
+    private final Semantics semantics;
     private final boolean matchNSUnawareAttributes;
     private final boolean updatePrefix;
     
     /**
      * Constructor.
      * 
-     * @param detachPolicy
-     *            Specifies the {@link DetachPolicy} to be used by
+     * @param semantics
+     *            Specifies the {@link Semantics} to be used by
      *            {@link #update(CoreAttribute, String, String)}.
      * @param matchNSUnawareAttributes
      *            Specifies if {@link CoreNSUnawareAttribute} instances can 
also be matched. Only
@@ -55,9 +55,9 @@ public final class NSAwareAttributeMatch
      *            <code>prefix</code> is only used when creating new 
attributes and prefixes of
      *            existing attributes are preserved (i.e. only their value is 
updated).
      */
-    public NSAwareAttributeMatcher(DetachPolicy detachPolicy, boolean 
matchNSUnawareAttributes,
+    public NSAwareAttributeMatcher(Semantics semantics, boolean 
matchNSUnawareAttributes,
             boolean updatePrefix) {
-        this.detachPolicy = detachPolicy;
+        this.semantics = semantics;
         this.matchNSUnawareAttributes = matchNSUnawareAttributes;
         this.updatePrefix = updatePrefix;
     }
@@ -92,7 +92,7 @@ public final class NSAwareAttributeMatch
     }
 
     public void update(CoreAttribute attr, String prefix, String value) {
-        attr.coreSetCharacterData(value, detachPolicy);
+        attr.coreSetCharacterData(value, semantics);
         if (updatePrefix && attr instanceof CoreNSAwareAttribute) {
             ((CoreNSAwareAttribute)attr).coreSetPrefix(prefix);
         }

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NamespaceDeclarationMatcher.java
 Sun Nov 15 13:59:31 2015
@@ -34,10 +34,10 @@ package org.apache.axiom.core;
  * </dl>
  */
 public final class NamespaceDeclarationMatcher implements AttributeMatcher {
-    private final DetachPolicy detachPolicy;
+    private final Semantics semantics;
     
-    public NamespaceDeclarationMatcher(DetachPolicy detachPolicy) {
-        this.detachPolicy = detachPolicy;
+    public NamespaceDeclarationMatcher(Semantics semantics) {
+        this.semantics = semantics;
     }
 
     public boolean matches(CoreAttribute attr, String namespaceURI, String 
name) {
@@ -64,6 +64,6 @@ public final class NamespaceDeclarationM
     }
 
     public void update(CoreAttribute attr, String prefix, String value) {
-        attr.coreSetCharacterData(value, detachPolicy);
+        attr.coreSetCharacterData(value, semantics);
     }
 }
\ No newline at end of file

Modified: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeIterator.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeIterator.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeIterator.java
 (original)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/NodeIterator.java
 Sun Nov 15 13:59:31 2015
@@ -32,7 +32,7 @@ import java.util.Iterator;
  * allowed to throw {@link UnsupportedOperationException}.
  * <li>A {@link ConcurrentModificationException} MUST be thrown when the 
iterator is used after the
  * last node returned by {@link Iterator#next()} has been removed using a 
method other than
- * {@link Iterator#remove()} (e.g. {@link 
CoreChildNode#coreDetach(DetachPolicy)}).
+ * {@link Iterator#remove()} (e.g. {@link 
CoreChildNode#coreDetach(Semantics)}).
  * <li>If a {@link CoreModelException} occurs inside {@link 
Iterator#hasNext()},
  * {@link Iterator#next()} or {@link Iterator#remove()}, then the 
implementation MUST use the
  * supplied {@link ExceptionTranslator} to translate that checked exception 
into an unchecked

Added: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Semantics.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Semantics.java?rev=1714454&view=auto
==============================================================================
--- 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Semantics.java
 (added)
+++ 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Semantics.java
 Sun Nov 15 13:59:31 2015
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axiom.core;
+
+/**
+ * Defines the semantics of a particular API.
+ */
+public interface Semantics {
+    DetachPolicy getDetachPolicy();
+}

Propchange: 
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Semantics.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMAttributeSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMAttributeSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMAttributeSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMAttributeSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -66,7 +66,7 @@ public aspect DOMAttributeSupport {
     }
     
     public final void DOMAttribute.setValue(String value) {
-        coreSetCharacterData(value, Policies.DETACH_POLICY);
+        coreSetCharacterData(value, DOMSemantics.INSTANCE);
     }
     
     public final CoreElement DOMAttribute.getNamespaceContext() {

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMCDATASectionSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMCDATASectionSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMCDATASectionSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMCDATASectionSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -30,6 +30,6 @@ public aspect DOMCDATASectionSupport {
     }
 
     public final void DOMCDATASection.setData(String data) {
-        coreSetCharacterData(data, Policies.DETACH_POLICY);
+        coreSetCharacterData(data, DOMSemantics.INSTANCE);
     }
 }

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMCommentSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMCommentSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMCommentSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMCommentSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -34,6 +34,6 @@ public aspect DOMCommentSupport {
     }
 
     public final void DOMComment.setData(String data) {
-        coreSetCharacterData(data, Policies.DETACH_POLICY);
+        coreSetCharacterData(data, DOMSemantics.INSTANCE);
     }
 }

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentFragmentSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentFragmentSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentFragmentSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentFragmentSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -80,6 +80,6 @@ public aspect DOMDocumentFragmentSupport
     }
 
     public final void DOMDocumentFragment.setTextContent(String textContent) {
-        coreSetCharacterData(textContent, Policies.DETACH_POLICY);
+        coreSetCharacterData(textContent, DOMSemantics.INSTANCE);
     }
 }

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMDocumentSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -146,7 +146,7 @@ public aspect DOMDocumentSupport {
     public final CDATASection DOMDocument.createCDATASection(String data) {
         DOMCDATASection cdataSection = 
coreGetNodeFactory().createNode(DOMCDATASection.class);
         cdataSection.coreSetOwnerDocument(this);
-        cdataSection.coreSetCharacterData(data, Policies.DETACH_POLICY);
+        cdataSection.coreSetCharacterData(data, DOMSemantics.INSTANCE);
         return cdataSection;
     }
     
@@ -216,7 +216,7 @@ public aspect DOMDocumentSupport {
         DOMProcessingInstruction pi = 
coreGetNodeFactory().createNode(DOMProcessingInstruction.class);
         pi.coreSetOwnerDocument(this);
         pi.coreSetTarget(target);
-        pi.coreSetCharacterData(data, Policies.DETACH_POLICY);
+        pi.coreSetCharacterData(data, DOMSemantics.INSTANCE);
         return pi;
     }
 
@@ -230,7 +230,7 @@ public aspect DOMDocumentSupport {
     public final Comment DOMDocument.createComment(String data) {
         DOMComment node = coreGetNodeFactory().createNode(DOMComment.class);
         node.coreSetOwnerDocument(this);
-        node.coreSetCharacterData(data, Policies.DETACH_POLICY);
+        node.coreSetCharacterData(data, DOMSemantics.INSTANCE);
         return node;
     }
 

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMElementSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -76,14 +76,14 @@ public aspect DOMElementSupport {
     }
     
     public final Attr DOMElement.getAttributeNode(String name) {
-        return (DOMAttribute)coreGetAttribute(Policies.DOM1_ATTRIBUTE_MATCHER, 
null, name);
+        return 
(DOMAttribute)coreGetAttribute(DOMSemantics.DOM1_ATTRIBUTE_MATCHER, null, name);
     }
 
     public final Attr DOMElement.getAttributeNodeNS(String namespaceURI, 
String localName) {
         if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) {
-            return 
(DOMAttribute)coreGetAttribute(Policies.NAMESPACE_DECLARATION_MATCHER, null, 
localName.equals(XMLConstants.XMLNS_ATTRIBUTE) ? "" : localName);
+            return 
(DOMAttribute)coreGetAttribute(DOMSemantics.NAMESPACE_DECLARATION_MATCHER, 
null, localName.equals(XMLConstants.XMLNS_ATTRIBUTE) ? "" : localName);
         } else {
-            return 
(DOMAttribute)coreGetAttribute(Policies.DOM2_ATTRIBUTE_MATCHER, namespaceURI == 
null ? "" : namespaceURI, localName);
+            return 
(DOMAttribute)coreGetAttribute(DOMSemantics.DOM2_ATTRIBUTE_MATCHER, 
namespaceURI == null ? "" : namespaceURI, localName);
         }
     }
     
@@ -107,7 +107,7 @@ public aspect DOMElementSupport {
 
     public final void DOMElement.setAttribute(String name, String value) {
         NSUtil.validateName(name);
-        coreSetAttribute(Policies.DOM1_ATTRIBUTE_MATCHER, null, name, null, 
value);
+        coreSetAttribute(DOMSemantics.DOM1_ATTRIBUTE_MATCHER, null, name, 
null, value);
     }
 
     public final void DOMElement.setAttributeNS(String namespaceURI, String 
qualifiedName, String value) throws DOMException {
@@ -122,11 +122,11 @@ public aspect DOMElementSupport {
             localName = qualifiedName.substring(i+1);
         }
         if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) {
-            coreSetAttribute(Policies.NAMESPACE_DECLARATION_MATCHER, null, 
NSUtil.getDeclaredPrefix(localName, prefix), null, value);
+            coreSetAttribute(DOMSemantics.NAMESPACE_DECLARATION_MATCHER, null, 
NSUtil.getDeclaredPrefix(localName, prefix), null, value);
         } else {
             namespaceURI = NSUtil.normalizeNamespaceURI(namespaceURI);
             NSUtil.validateAttributeName(namespaceURI, localName, prefix);
-            coreSetAttribute(Policies.DOM2_ATTRIBUTE_MATCHER, namespaceURI, 
localName, prefix, value);
+            coreSetAttribute(DOMSemantics.DOM2_ATTRIBUTE_MATCHER, 
namespaceURI, localName, prefix, value);
         }
     }
 
@@ -152,14 +152,14 @@ public aspect DOMElementSupport {
             }
             AttributeMatcher matcher;
             if (newAttr instanceof CoreNSAwareAttribute) {
-                matcher = Policies.DOM2_ATTRIBUTE_MATCHER;
+                matcher = DOMSemantics.DOM2_ATTRIBUTE_MATCHER;
             } else if (newAttr instanceof CoreNamespaceDeclaration) {
-                matcher = Policies.NAMESPACE_DECLARATION_MATCHER;
+                matcher = DOMSemantics.NAMESPACE_DECLARATION_MATCHER;
             } else {
                 // Must be a DOM1 (namespace unaware) attribute
-                matcher = Policies.DOM1_ATTRIBUTE_MATCHER;
+                matcher = DOMSemantics.DOM1_ATTRIBUTE_MATCHER;
             }
-            return (DOMAttribute)coreSetAttribute(matcher, newAttr, 
Policies.DETACH_POLICY);
+            return (DOMAttribute)coreSetAttribute(matcher, newAttr, 
DOMSemantics.INSTANCE);
         }
     }
 
@@ -169,7 +169,7 @@ public aspect DOMElementSupport {
             if (attr.coreGetOwnerElement() != this) {
                 throw 
DOMExceptionTranslator.newDOMException(DOMException.NOT_FOUND_ERR);
             } else {
-                attr.coreRemove(Policies.DETACH_POLICY);
+                attr.coreRemove(DOMSemantics.INSTANCE);
             }
             return attr;
         } else {
@@ -179,15 +179,15 @@ public aspect DOMElementSupport {
 
     public final void DOMElement.removeAttribute(String name) throws 
DOMException {
         // Specs: "If no attribute with this name is found, this method has no 
effect."
-        coreRemoveAttribute(Policies.DOM1_ATTRIBUTE_MATCHER, null, name, 
Policies.DETACH_POLICY);
+        coreRemoveAttribute(DOMSemantics.DOM1_ATTRIBUTE_MATCHER, null, name, 
DOMSemantics.INSTANCE);
     }
 
     public final void DOMElement.removeAttributeNS(String namespaceURI, String 
localName) throws DOMException {
         // Specs: "If no attribute with this local name and namespace URI is 
found, this method has no effect."
         if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) {
-            coreRemoveAttribute(Policies.NAMESPACE_DECLARATION_MATCHER, null, 
localName.equals(XMLConstants.XMLNS_ATTRIBUTE) ? "" : localName, 
Policies.DETACH_POLICY);
+            coreRemoveAttribute(DOMSemantics.NAMESPACE_DECLARATION_MATCHER, 
null, localName.equals(XMLConstants.XMLNS_ATTRIBUTE) ? "" : localName, 
DOMSemantics.INSTANCE);
         } else {
-            coreRemoveAttribute(Policies.DOM2_ATTRIBUTE_MATCHER, namespaceURI 
== null ? "" : namespaceURI, localName, Policies.DETACH_POLICY);
+            coreRemoveAttribute(DOMSemantics.DOM2_ATTRIBUTE_MATCHER, 
namespaceURI == null ? "" : namespaceURI, localName, DOMSemantics.INSTANCE);
         }
     }
     
@@ -196,7 +196,7 @@ public aspect DOMElementSupport {
     }
 
     public final void DOMElement.setTextContent(String textContent) {
-        coreSetCharacterData(textContent, Policies.DETACH_POLICY);
+        coreSetCharacterData(textContent, DOMSemantics.INSTANCE);
     }
 
     public final NodeList DOMElement.getElementsByTagName(String tagname) {

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=1714454&r1=1714453&r2=1714454&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
 Sun Nov 15 13:59:31 2015
@@ -70,7 +70,7 @@ public aspect DOMNodeSupport {
     }
 
     public final Node DOMNode.cloneNode(boolean deep) {
-        DOMNode clone = (DOMNode)coreClone(deep ? Policies.DEEP_CLONE : 
Policies.SHALLOW_CLONE, null);
+        DOMNode clone = (DOMNode)coreClone(deep ? DOMSemantics.DEEP_CLONE : 
DOMSemantics.SHALLOW_CLONE, null);
         if (!(clone instanceof DOMDocument)) {
             clone.coreSetOwnerDocument(coreGetOwnerDocument(true));
         }

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMParentNodeSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMParentNodeSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMParentNodeSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMParentNodeSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -68,7 +68,7 @@ public aspect DOMParentNodeSupport {
 
     public final Node DOMParentNode.removeChild(Node oldChild) throws 
DOMException {
         if (oldChild.getParentNode() == this) {
-            ((CoreChildNode)oldChild).coreDetach(Policies.DETACH_POLICY);
+            ((CoreChildNode)oldChild).coreDetach(DOMSemantics.INSTANCE);
             return oldChild;
         } else {
             throw newDOMException(DOMException.NOT_FOUND_ERR);

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMProcessingInstructionSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMProcessingInstructionSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMProcessingInstructionSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMProcessingInstructionSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -30,7 +30,7 @@ public aspect DOMProcessingInstructionSu
     }
     
     public final void DOMProcessingInstruction.setData(String data) {
-        coreSetCharacterData(data, Policies.DETACH_POLICY);
+        coreSetCharacterData(data, DOMSemantics.INSTANCE);
     }
     
     public final String DOMProcessingInstruction.getNodeName() {

Copied: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMSemantics.java
 (from r1714139, 
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/DOMSemantics.java?p2=webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMSemantics.java&p1=webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/Policies.java&r1=1714139&r2=1714454&rev=1714454&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/DOMSemantics.java
 Sun Nov 15 13:59:31 2015
@@ -28,11 +28,16 @@ import org.apache.axiom.core.DetachPolic
 import org.apache.axiom.core.NSAwareAttributeMatcher;
 import org.apache.axiom.core.NamespaceDeclarationMatcher;
 import org.apache.axiom.core.NodeType;
+import org.apache.axiom.core.Semantics;
 
-public final class Policies {
-    private Policies() {}
+public final class DOMSemantics implements Semantics {
+    public static final DOMSemantics INSTANCE = new DOMSemantics();
     
-    public static final DetachPolicy DETACH_POLICY = 
DetachPolicy.SAME_DOCUMENT;
+    private DOMSemantics() {}
+    
+    public DetachPolicy getDetachPolicy() {
+        return DetachPolicy.SAME_DOCUMENT;
+    }
     
     /**
      * {@link AttributeMatcher} implementation that matches attributes based 
on their name, i.e.
@@ -74,13 +79,13 @@ public final class Policies {
         }
 
         public void update(CoreAttribute attr, String prefix, String value) {
-            attr.coreSetCharacterData(value, DETACH_POLICY);
+            attr.coreSetCharacterData(value, INSTANCE);
         }
     };
     
-    public static final AttributeMatcher DOM2_ATTRIBUTE_MATCHER = new 
NSAwareAttributeMatcher(DETACH_POLICY, true, true);
+    public static final AttributeMatcher DOM2_ATTRIBUTE_MATCHER = new 
NSAwareAttributeMatcher(INSTANCE, true, true);
 
-    public static final AttributeMatcher NAMESPACE_DECLARATION_MATCHER = new 
NamespaceDeclarationMatcher(DETACH_POLICY);
+    public static final AttributeMatcher NAMESPACE_DECLARATION_MATCHER = new 
NamespaceDeclarationMatcher(INSTANCE);
     
     public static final ClonePolicy<Void> DEEP_CLONE = new ClonePolicy<Void>() 
{
         public Class<? extends CoreNode> getTargetNodeClass(Void options, 
CoreNode node) {

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMTextNodeSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMTextNodeSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMTextNodeSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/DOMTextNodeSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -87,7 +87,7 @@ public aspect DOMTextNodeSupport {
             DOMTextNode next;
             do {
                 next = current == last ? null : 
(DOMTextNode)current.coreGetNextSibling();
-                current.coreDetach(Policies.DETACH_POLICY);
+                current.coreDetach(DOMSemantics.INSTANCE);
                 current = next;
             } while (next != null);
         }

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ElementsByTagName.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ElementsByTagName.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ElementsByTagName.java
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ElementsByTagName.java
 Sun Nov 15 13:59:31 2015
@@ -36,9 +36,9 @@ public class ElementsByTagName extends N
     @Override
     protected Iterator<? extends Node> createIterator() {
         if (tagname.equals("*")) {
-            return node.coreGetElements(Axis.DESCENDANTS, DOMElement.class, 
ElementMatcher.ANY, null, null, DOMExceptionTranslator.INSTANCE, 
Policies.DETACH_POLICY);
+            return node.coreGetElements(Axis.DESCENDANTS, DOMElement.class, 
ElementMatcher.ANY, null, null, DOMExceptionTranslator.INSTANCE, 
DOMSemantics.INSTANCE);
         } else {
-            return node.coreGetElements(Axis.DESCENDANTS, DOMElement.class, 
ElementMatcher.BY_NAME, null, tagname, DOMExceptionTranslator.INSTANCE, 
Policies.DETACH_POLICY);
+            return node.coreGetElements(Axis.DESCENDANTS, DOMElement.class, 
ElementMatcher.BY_NAME, null, tagname, DOMExceptionTranslator.INSTANCE, 
DOMSemantics.INSTANCE);
         }
     }
 }

Modified: 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ElementsByTagNameNS.java
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ElementsByTagNameNS.java?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ElementsByTagNameNS.java
 (original)
+++ 
webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ElementsByTagNameNS.java
 Sun Nov 15 13:59:31 2015
@@ -41,13 +41,13 @@ public class ElementsByTagNameNS extends
         boolean localNameWildcard = localName.equals("*");
         if (nsWildcard && localNameWildcard) {
             // TODO: there seems to be no unit test checking whether the 
iterator should return DOM1 elements!
-            return node.coreGetElements(Axis.DESCENDANTS, DOMElement.class, 
ElementMatcher.ANY, null, null, DOMExceptionTranslator.INSTANCE, 
Policies.DETACH_POLICY);
+            return node.coreGetElements(Axis.DESCENDANTS, DOMElement.class, 
ElementMatcher.ANY, null, null, DOMExceptionTranslator.INSTANCE, 
DOMSemantics.INSTANCE);
         } else if (nsWildcard) {
-            return node.coreGetElements(Axis.DESCENDANTS, 
DOMNSAwareElement.class, ElementMatcher.BY_LOCAL_NAME, null, localName, 
DOMExceptionTranslator.INSTANCE, Policies.DETACH_POLICY);
+            return node.coreGetElements(Axis.DESCENDANTS, 
DOMNSAwareElement.class, ElementMatcher.BY_LOCAL_NAME, null, localName, 
DOMExceptionTranslator.INSTANCE, DOMSemantics.INSTANCE);
         } else if (localNameWildcard) {
-            return node.coreGetElements(Axis.DESCENDANTS, 
DOMNSAwareElement.class, ElementMatcher.BY_NAMESPACE_URI, namespaceURI, null, 
DOMExceptionTranslator.INSTANCE, Policies.DETACH_POLICY);
+            return node.coreGetElements(Axis.DESCENDANTS, 
DOMNSAwareElement.class, ElementMatcher.BY_NAMESPACE_URI, namespaceURI, null, 
DOMExceptionTranslator.INSTANCE, DOMSemantics.INSTANCE);
         } else {
-            return node.coreGetElements(Axis.DESCENDANTS, 
DOMNSAwareElement.class, ElementMatcher.BY_QNAME, namespaceURI, localName, 
DOMExceptionTranslator.INSTANCE, Policies.DETACH_POLICY);
+            return node.coreGetElements(Axis.DESCENDANTS, 
DOMNSAwareElement.class, ElementMatcher.BY_QNAME, namespaceURI, localName, 
DOMExceptionTranslator.INSTANCE, DOMSemantics.INSTANCE);
         }
     }
 }

Modified: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttributeMixin.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttributeMixin.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttributeMixin.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaAttributeMixin.aj
 Sun Nov 15 13:59:31 2015
@@ -25,7 +25,7 @@ public aspect AbderaAttributeMixin {
     }
 
     public final Attribute AbderaAttribute.setText(String text) {
-        coreSetCharacterData(text, Policies.DETACH_POLICY);
+        coreSetCharacterData(text, FOMSemantics.INSTANCE);
         return this;
     }
 }

Modified: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaElementMixin.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaElementMixin.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaElementMixin.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaElementMixin.aj
 Sun Nov 15 13:59:31 2015
@@ -20,6 +20,6 @@ package org.apache.axiom.fom;
 
 public aspect AbderaElementMixin {
     public final void AbderaElement._removeAllChildren() {
-        coreRemoveChildren(Policies.DETACH_POLICY);
+        coreRemoveChildren(FOMSemantics.INSTANCE);
     }
 }

Modified: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaProcessingInstructionMixin.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaProcessingInstructionMixin.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaProcessingInstructionMixin.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaProcessingInstructionMixin.aj
 Sun Nov 15 13:59:31 2015
@@ -27,7 +27,7 @@ public aspect AbderaProcessingInstructio
 
     @SuppressWarnings("unchecked")
     public final <T extends ProcessingInstruction> T 
AbderaProcessingInstruction.setText(String text) {
-        coreSetCharacterData(text, Policies.DETACH_POLICY);
+        coreSetCharacterData(text, FOMSemantics.INSTANCE);
         return (T)this;
     }
 }

Modified: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategoryContainerMixin.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategoryContainerMixin.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategoryContainerMixin.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/CategoryContainerMixin.aj
 Sun Nov 15 13:59:31 2015
@@ -55,6 +55,6 @@ public aspect CategoryContainerMixin {
         // TODO: we should probably set detachPolicy to null
         return new FOMList<Category>(coreGetElements(
                 Axis.CHILDREN, AbderaCategory.class, CATEGORY_BY_SCHEME, null, 
scheme,
-                FOMExceptionTranslator.INSTANCE, Policies.DETACH_POLICY));
+                FOMExceptionTranslator.INSTANCE, FOMSemantics.INSTANCE));
     }
 }

Copied: 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMSemantics.java
 (from r1711547, 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Policies.java)
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMSemantics.java?p2=webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMSemantics.java&p1=webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Policies.java&r1=1711547&r2=1714454&rev=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/Policies.java
 (original)
+++ 
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/FOMSemantics.java
 Sun Nov 15 13:59:31 2015
@@ -19,19 +19,18 @@
 package org.apache.axiom.fom;
 
 import org.apache.axiom.core.AttributeMatcher;
-import org.apache.axiom.core.CoreDocument;
-import org.apache.axiom.core.CoreParentNode;
 import org.apache.axiom.core.DetachPolicy;
 import org.apache.axiom.core.NSAwareAttributeMatcher;
+import org.apache.axiom.core.Semantics;
 
-public final class Policies {
-    private Policies() {}
+public final class FOMSemantics implements Semantics {
+    public static final FOMSemantics INSTANCE = new FOMSemantics();
     
-    public static final DetachPolicy DETACH_POLICY = new DetachPolicy() {
-        public CoreDocument getNewOwnerDocument(CoreParentNode owner) {
-            return null;
-        }
-    };
+    private FOMSemantics() {}
     
-    public static final AttributeMatcher ATTRIBUTE_MATCHER = new 
NSAwareAttributeMatcher(DETACH_POLICY, false, false);
+    public DetachPolicy getDetachPolicy() {
+        return DetachPolicy.NEW_DOCUMENT;
+    }
+    
+    public static final AttributeMatcher ATTRIBUTE_MATCHER = new 
NSAwareAttributeMatcher(INSTANCE, false, false);
 }

Modified: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomAttributeSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomAttributeSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomAttributeSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomAttributeSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -44,7 +44,7 @@ public aspect AxiomAttributeSupport {
     }
     
     public final void AxiomAttribute.setAttributeValue(String value) {
-        coreSetCharacterData(value, Policies.DETACH_POLICY);
+        coreSetCharacterData(value, AxiomSemantics.INSTANCE);
     }
     
     public final String AxiomAttribute.getAttributeType() {

Modified: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomChildNodeSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomChildNodeSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomChildNodeSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomChildNodeSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -60,7 +60,7 @@ public aspect AxiomChildNodeSupport {
             throw new OMException(
                     "Nodes that don't have a parent can not be detached");
         }
-        coreDetach(Policies.DETACH_POLICY);
+        coreDetach(AxiomSemantics.INSTANCE);
         return this;
     }
 }

Modified: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCommentSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCommentSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCommentSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCommentSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -34,7 +34,7 @@ public aspect AxiomCommentSupport {
     }
 
     public void AxiomComment.setValue(String text) {
-        coreSetCharacterData(text, Policies.DETACH_POLICY);
+        coreSetCharacterData(text, AxiomSemantics.INSTANCE);
     }
     
     public final void AxiomComment.internalSerialize(Serializer serializer, 
OMOutputFormat format, boolean cache) throws OutputException {

Modified: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainerSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -187,11 +187,11 @@ public aspect AxiomContainerSupport {
     }
     
     public void AxiomContainer.removeChildren() {
-        coreRemoveChildren(Policies.DETACH_POLICY);
+        coreRemoveChildren(AxiomSemantics.INSTANCE);
     }
     
     public Iterator AxiomContainer.getChildren() {
-        return coreGetNodes(Axis.CHILDREN, OMNode.class, 
AxiomExceptionTranslator.INSTANCE, Policies.DETACH_POLICY);
+        return coreGetNodes(Axis.CHILDREN, OMNode.class, 
AxiomExceptionTranslator.INSTANCE, AxiomSemantics.INSTANCE);
     }
 
     public Iterator AxiomContainer.getChildrenWithLocalName(String localName) {
@@ -229,7 +229,7 @@ public aspect AxiomContainerSupport {
     }
     
     public Iterator AxiomContainer.getDescendants(boolean includeSelf) {
-        return coreGetNodes(includeSelf ? Axis.DESCENDANTS_OR_SELF : 
Axis.DESCENDANTS, OMSerializable.class, AxiomExceptionTranslator.INSTANCE, 
Policies.DETACH_POLICY);
+        return coreGetNodes(includeSelf ? Axis.DESCENDANTS_OR_SELF : 
Axis.DESCENDANTS, OMSerializable.class, AxiomExceptionTranslator.INSTANCE, 
AxiomSemantics.INSTANCE);
     }
 
     public OMElement AxiomContainer.getFirstChildWithName(QName elementQName) 
throws OMException {

Modified: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomDocumentSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomDocumentSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomDocumentSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomDocumentSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -40,7 +40,7 @@ public aspect AxiomDocumentSupport {
         if (existingDocumentElement == null) {
             addChild(documentElement);
         } else {
-            
existingDocumentElement.coreReplaceWith((AxiomElement)documentElement, 
Policies.DETACH_POLICY);
+            
existingDocumentElement.coreReplaceWith((AxiomElement)documentElement, 
AxiomSemantics.INSTANCE);
         }
     }
 

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=1714454&r1=1714453&r2=1714454&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
 Sun Nov 15 13:59:31 2015
@@ -196,7 +196,7 @@ public aspect AxiomElementSupport {
     
     // Not final because overridden in Abdera
     public void AxiomElement.setText(String text) {
-        coreSetCharacterData(text, Policies.DETACH_POLICY);
+        coreSetCharacterData(text, AxiomSemantics.INSTANCE);
     }
 
     public final void AxiomElement.setText(QName qname) {
@@ -278,7 +278,7 @@ public aspect AxiomElementSupport {
     }
     
     public final void AxiomElement.internalAppendAttribute(OMAttribute attr) {
-        coreSetAttribute(Policies.ATTRIBUTE_MATCHER, (AxiomAttribute)attr, 
Policies.DETACH_POLICY);
+        coreSetAttribute(AxiomSemantics.ATTRIBUTE_MATCHER, 
(AxiomAttribute)attr, AxiomSemantics.INSTANCE);
     }
     
     public final OMAttribute AxiomElement.addAttribute(OMAttribute attr){
@@ -315,11 +315,11 @@ public aspect AxiomElementSupport {
     
     @SuppressWarnings("rawtypes")
     public final Iterator AxiomElement.getAllAttributes() {
-        return coreGetAttributesByType(AxiomAttribute.class, 
attributeIdentityMapper, Policies.DETACH_POLICY);
+        return coreGetAttributesByType(AxiomAttribute.class, 
attributeIdentityMapper, AxiomSemantics.INSTANCE);
     }
     
     public final OMAttribute AxiomElement.getAttribute(QName qname) {
-        return (AxiomAttribute)coreGetAttribute(Policies.ATTRIBUTE_MATCHER, 
qname.getNamespaceURI(), qname.getLocalPart());
+        return 
(AxiomAttribute)coreGetAttribute(AxiomSemantics.ATTRIBUTE_MATCHER, 
qname.getNamespaceURI(), qname.getLocalPart());
     }
 
     // TODO: overridden in fom-impl
@@ -342,7 +342,7 @@ public aspect AxiomElementSupport {
         if (attr.getOwner() != this) {
             throw new OMException("The attribute is not owned by this 
element");
         }
-        ((AxiomAttribute)attr).coreRemove(Policies.DETACH_POLICY);
+        ((AxiomAttribute)attr).coreRemove(AxiomSemantics.INSTANCE);
     }
 
     public final OMNamespace AxiomElement.addNamespaceDeclaration(String uri, 
String prefix) {
@@ -356,12 +356,12 @@ public aspect AxiomElementSupport {
     public final void AxiomElement.addNamespaceDeclaration(OMNamespace ns) {
         AxiomNamespaceDeclaration decl = 
coreGetNodeFactory().createNode(AxiomNamespaceDeclaration.class);
         decl.setDeclaredNamespace(ns);
-        coreSetAttribute(Policies.NAMESPACE_DECLARATION_MATCHER, decl, 
Policies.DETACH_POLICY);
+        coreSetAttribute(AxiomSemantics.NAMESPACE_DECLARATION_MATCHER, decl, 
AxiomSemantics.INSTANCE);
     }
     
     @SuppressWarnings("rawtypes")
     public final Iterator AxiomElement.getAllDeclaredNamespaces() {
-        return coreGetAttributesByType(AxiomNamespaceDeclaration.class, 
NamespaceDeclarationMapper.INSTANCE, Policies.DETACH_POLICY);
+        return coreGetAttributesByType(AxiomNamespaceDeclaration.class, 
NamespaceDeclarationMapper.INSTANCE, AxiomSemantics.INSTANCE);
     }
 
     public final OMNamespace AxiomElement.declareNamespace(OMNamespace 
namespace) {

Modified: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomInformationItemSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomInformationItemSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomInformationItemSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomInformationItemSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -29,6 +29,6 @@ public aspect AxiomInformationItemSuppor
     }
     
     public final OMInformationItem AxiomInformationItem.clone(OMCloneOptions 
options) {
-        return (OMInformationItem)coreClone(Policies.CLONE_POLICY, options);
+        return (OMInformationItem)coreClone(AxiomSemantics.CLONE_POLICY, 
options);
     }
 }

Modified: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomNamespaceDeclarationSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -42,6 +42,6 @@ public aspect AxiomNamespaceDeclarationS
     
     public final void 
AxiomNamespaceDeclaration.setDeclaredNamespace(OMNamespace declaredNamespace) {
         this.declaredNamespace = declaredNamespace;
-        coreSetCharacterData(declaredNamespace.getNamespaceURI(), 
Policies.DETACH_POLICY);
+        coreSetCharacterData(declaredNamespace.getNamespaceURI(), 
AxiomSemantics.INSTANCE);
     }
 }

Modified: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomProcessingInstructionSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomProcessingInstructionSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomProcessingInstructionSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomProcessingInstructionSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -37,7 +37,7 @@ public aspect AxiomProcessingInstruction
     }
 
     public final void AxiomProcessingInstruction.setValue(String value) {
-        coreSetCharacterData(value, Policies.DETACH_POLICY);
+        coreSetCharacterData(value, AxiomSemantics.INSTANCE);
     }
     
     public final void AxiomProcessingInstruction.internalSerialize(Serializer 
serializer, OMOutputFormat format, boolean cache) throws OutputException {

Copied: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomSemantics.java
 (from r1714139, 
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/AxiomSemantics.java?p2=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomSemantics.java&p1=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/Policies.java&r1=1714139&r2=1714454&rev=1714454&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/AxiomSemantics.java
 Sun Nov 15 13:59:31 2015
@@ -26,22 +26,27 @@ import org.apache.axiom.core.DetachPolic
 import org.apache.axiom.core.NSAwareAttributeMatcher;
 import org.apache.axiom.core.NamespaceDeclarationMatcher;
 import org.apache.axiom.core.NodeType;
+import org.apache.axiom.core.Semantics;
 import org.apache.axiom.om.OMCloneOptions;
 import org.apache.axiom.om.impl.intf.AxiomAttribute;
 import org.apache.axiom.om.impl.intf.AxiomElement;
 import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
 
-public final class Policies {
-    private Policies() {}
+public final class AxiomSemantics implements Semantics {
+    public static final AxiomSemantics INSTANCE = new AxiomSemantics();
     
-    public static final DetachPolicy DETACH_POLICY = DetachPolicy.NEW_DOCUMENT;
+    private AxiomSemantics() {}
+    
+    public DetachPolicy getDetachPolicy() {
+        return DetachPolicy.NEW_DOCUMENT;
+    }
     
     public static final AttributeMatcher ATTRIBUTE_MATCHER = new 
NSAwareAttributeMatcher(
-            DETACH_POLICY,
+            INSTANCE,
             false,  // Axiom doesn't support namespace unaware attributes
             false);
 
-    public static final AttributeMatcher NAMESPACE_DECLARATION_MATCHER = new 
NamespaceDeclarationMatcher(DETACH_POLICY);
+    public static final AttributeMatcher NAMESPACE_DECLARATION_MATCHER = new 
NamespaceDeclarationMatcher(INSTANCE);
     
     public static final ClonePolicy<OMCloneOptions> CLONE_POLICY = new 
ClonePolicy<OMCloneOptions>() {
         public Class<? extends CoreNode> getTargetNodeClass(OMCloneOptions 
options, CoreNode node) {

Modified: 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomTextSupport.aj
URL: 
http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomTextSupport.aj?rev=1714454&r1=1714453&r2=1714454&view=diff
==============================================================================
--- 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomTextSupport.aj
 (original)
+++ 
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomTextSupport.aj
 Sun Nov 15 13:59:31 2015
@@ -38,7 +38,7 @@ public aspect AxiomTextSupport {
             return (TextContent)content;
         } else if (force) {
             TextContent textContent = new TextContent((String)content);
-            coreSetCharacterData(textContent, Policies.DETACH_POLICY);
+            coreSetCharacterData(textContent, AxiomSemantics.INSTANCE);
             return textContent;
         } else {
             return null;



Reply via email to