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/07/24 23:05:21 UTC

svn commit: r1692581 - in /webservices/axiom/trunk: aspects/core-aspects/src/main/java/org/apache/axiom/core/ aspects/dom-aspects/src/main/java/org/apache/axiom/dom/ aspects/fom-aspects/src/main/java/org/apache/axiom/fom/ aspects/om-aspects/src/main/ja...

Author: veithen
Date: Fri Jul 24 21:05:20 2015
New Revision: 1692581

URL: http://svn.apache.org/r1692581
Log:
Move the character data handling code to core-aspects.

Added:
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java   (with props)
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSinkNode.java   (with props)
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSourceNode.java
      - copied, changed from r1692333, webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainer.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNode.java   (with props)
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNodeSupport.aj   (with props)
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNode.java   (with props)
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNodeSupport.aj   (with props)
Removed:
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCommentSupport.aj
Modified:
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCDATASection.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainer.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainingParentNode.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainingParentNodeSupport.aj
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataNode.java
    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/CoreComment.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/CoreMixedContentContainer.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreMixedContentContainerSupport.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/CoreProcessingInstruction.java
    webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstructionSupport.aj
    webservices/axiom/trunk/aspects/dom-aspects/src/main/java/org/apache/axiom/dom/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/DOMProcessingInstructionSupport.aj
    webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaProcessingInstructionSupport.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/AxiomCDATASection.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCharacterDataNode.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomComment.java
    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/AxiomContainer.java
    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/AxiomDocType.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/AxiomEntityReference.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomLeafNodeSupport.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/AxiomProcessingInstruction.java
    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/AxiomText.java
    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/TextContent.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AxiomNodeFactorySupport.aj
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/CommentImpl.java
    webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ProcessingInstructionImpl.java
    webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMCommentImpl.java
    webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMLeafNode.java
    webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMProcessingInstructionImpl.java

Added: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java?rev=1692581&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java (added)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CharacterData.java Fri Jul 24 21:05:20 2015
@@ -0,0 +1,27 @@
+/*
+ * 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;
+
+/**
+ * Represents character data stored by a {@link CoreCharacterDataNode} instance. The content of a
+ * {@link CoreCharacterDataNode} is either a {@link String} object or an instance of this interface.
+ */
+public interface CharacterData {
+    String toString();
+}

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

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCDATASection.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCDATASection.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCDATASection.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCDATASection.java Fri Jul 24 21:05:20 2015
@@ -18,6 +18,6 @@
  */
 package org.apache.axiom.core;
 
-public interface CoreCDATASection extends CoreChildNode, CoreCharacterDataContainer {
-    void coreSetCharacterData(String data);
+public interface CoreCDATASection extends CoreChildNode, CoreCharacterDataContainingParentNode {
+
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainer.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainer.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainer.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainer.java Fri Jul 24 21:05:20 2015
@@ -18,6 +18,6 @@
  */
 package org.apache.axiom.core;
 
-public interface CoreCharacterDataContainer extends CoreNode {
-    String coreGetCharacterData();
+public interface CoreCharacterDataContainer extends CoreCharacterDataSourceNode, CoreCharacterDataSinkNode {
+
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainingParentNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainingParentNode.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainingParentNode.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainingParentNode.java Fri Jul 24 21:05:20 2015
@@ -18,6 +18,6 @@
  */
 package org.apache.axiom.core;
 
-public interface CoreCharacterDataContainingParentNode extends CoreCharacterDataContainer, CoreParentNode {
+public interface CoreCharacterDataContainingParentNode extends CoreCharacterDataContainer, NonDeferringParentNode {
 
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainingParentNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainingParentNodeSupport.aj?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainingParentNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainingParentNodeSupport.aj Fri Jul 24 21:05:20 2015
@@ -19,8 +19,8 @@
 package org.apache.axiom.core;
 
 public aspect CoreCharacterDataContainingParentNodeSupport {
-    public final String CoreCharacterDataContainingParentNode.coreGetCharacterData() {
-        String characterData = internalGetCharacterData(ElementAction.RETURN_NULL);
+    public final Object CoreCharacterDataContainingParentNode.coreGetCharacterData() {
+        Object characterData = internalGetCharacterData(ElementAction.RETURN_NULL);
         if (characterData == null) {
             throw new IllegalStateException();
         }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataNode.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataNode.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataNode.java Fri Jul 24 21:05:20 2015
@@ -19,7 +19,7 @@
 package org.apache.axiom.core;
 
 public interface CoreCharacterDataNode extends CoreChildNode, CoreCharacterDataContainer {
-    void coreSetCharacterData(String data);
+    void coreSetCharacterData(Object data);
     
     /**
      * Check whether this text node contains element content whitespace (also called

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -19,6 +19,11 @@
 package org.apache.axiom.core;
 
 public aspect CoreCharacterDataNodeSupport {
+    /**
+     * Either a {@link String} or a {@link CharacterData} object.
+     */
+    private Object CoreCharacterDataNode.data;
+    
     public final boolean CoreCharacterDataNode.coreIsIgnorable() {
         return getFlag(Flags.IGNORABLE);
     }
@@ -26,4 +31,16 @@ public aspect CoreCharacterDataNodeSuppo
     public final void CoreCharacterDataNode.coreSetIgnorable(boolean ignorable) {
         setFlag(Flags.IGNORABLE, ignorable);
     }
+    
+    public final Object CoreCharacterDataNode.coreGetCharacterData() {
+        return data == null ? "" : data;
+    }
+    
+    public final void CoreCharacterDataNode.coreSetCharacterData(Object data) {
+        this.data = data;
+    }
+    
+    public final void CoreCharacterDataNode.coreSetCharacterData(Object data, DetachPolicy detachPolicy) {
+        this.data = data;
+    }
 }

Added: 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=1692581&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSinkNode.java (added)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSinkNode.java Fri Jul 24 21:05:20 2015
@@ -0,0 +1,23 @@
+/*
+ * 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;
+
+public interface CoreCharacterDataSinkNode {
+    void coreSetCharacterData(Object data, DetachPolicy detachPolicy);
+}

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

Copied: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSourceNode.java (from r1692333, webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainer.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSourceNode.java?p2=webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSourceNode.java&p1=webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainer.java&r1=1692333&r2=1692581&rev=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataContainer.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreCharacterDataSourceNode.java Fri Jul 24 21:05:20 2015
@@ -18,6 +18,6 @@
  */
 package org.apache.axiom.core;
 
-public interface CoreCharacterDataContainer extends CoreNode {
-    String coreGetCharacterData();
+public interface CoreCharacterDataSourceNode extends CoreNode {
+    Object coreGetCharacterData();
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreComment.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreComment.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreComment.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreComment.java Fri Jul 24 21:05:20 2015
@@ -18,6 +18,6 @@
  */
 package org.apache.axiom.core;
 
-public interface CoreComment extends CoreChildNode, CoreCharacterDataContainer {
-    void coreSetCharacterData(String data);
+public interface CoreComment extends CoreChildNode, CoreCharacterDataContainingParentNode {
+
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -196,7 +196,7 @@ public aspect CoreElementSupport {
             if (attr instanceof CoreNamespaceDeclaration) {
                 CoreNamespaceDeclaration decl = (CoreNamespaceDeclaration)attr;
                 if (prefix.equals(decl.coreGetDeclaredPrefix())) {
-                    return decl.coreGetCharacterData();
+                    return decl.coreGetCharacterData().toString();
                 }
             }
         }
@@ -225,7 +225,7 @@ public aspect CoreElementSupport {
         for (CoreAttribute attr = coreGetFirstAttribute(); attr != null; attr = attr.coreGetNextAttribute()) {
             if (attr instanceof CoreNamespaceDeclaration) {
                 CoreNamespaceDeclaration decl = (CoreNamespaceDeclaration)attr;
-                if (decl.coreGetCharacterData().equals(namespaceURI)) {
+                if (decl.coreGetCharacterData().toString().equals(namespaceURI)) {
                     return decl.coreGetDeclaredPrefix();
                 }
             }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreMixedContentContainer.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreMixedContentContainer.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreMixedContentContainer.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreMixedContentContainer.java Fri Jul 24 21:05:20 2015
@@ -18,6 +18,6 @@
  */
 package org.apache.axiom.core;
 
-public interface CoreMixedContentContainer extends CoreParentNode {
-    String coreGetCharacterData(ElementAction elementAction);
+public interface CoreMixedContentContainer extends CoreParentNode, CoreCharacterDataSinkNode {
+    Object coreGetCharacterData(ElementAction elementAction);
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreMixedContentContainerSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreMixedContentContainerSupport.aj?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreMixedContentContainerSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreMixedContentContainerSupport.aj Fri Jul 24 21:05:20 2015
@@ -19,7 +19,7 @@
 package org.apache.axiom.core;
 
 public aspect CoreMixedContentContainerSupport {
-    public final String CoreMixedContentContainer.coreGetCharacterData(ElementAction elementAction) {
+    public final Object CoreMixedContentContainer.coreGetCharacterData(ElementAction elementAction) {
         return internalGetCharacterData(elementAction);
     }
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -34,6 +34,4 @@ public interface CoreParentNode extends
     int getState();
     void coreSetState(int state);
     void build();
-    
-    void coreSetCharacterData(String text, DetachPolicy detachPolicy);
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -200,11 +200,11 @@ public aspect CoreParentNodeSupport {
         }
     }
     
-    final String CoreParentNode.internalGetCharacterData(ElementAction elementAction) {
+    final Object CoreParentNode.internalGetCharacterData(ElementAction elementAction) {
         if (getState() == COMPACT) {
             return (String)content;
         } else {
-            String textContent = null;
+            Object textContent = null;
             StringBuilder buffer = null;
             int depth = 0;
             CoreChildNode child = coreGetFirstChild();
@@ -229,8 +229,8 @@ public aspect CoreParentNodeSupport {
                     }
                 } else {
                     if (child instanceof CoreCharacterDataNode || child instanceof CoreCDATASection) {
-                        String textValue = ((CoreCharacterDataContainer)child).coreGetCharacterData();
-                        if (textValue.length() != 0) {
+                        Object textValue = ((CoreCharacterDataContainer)child).coreGetCharacterData();
+                        if (textValue instanceof CharacterData || ((String)textValue).length() != 0) {
                             if (textContent == null) {
                                 // This is the first non empty text node. Just save the string.
                                 textContent = textValue;
@@ -240,9 +240,9 @@ public aspect CoreParentNodeSupport {
                                 if (buffer == null) {
                                     // This is the first text node we need to append. Initialize the
                                     // StringBuilder.
-                                    buffer = new StringBuilder(textContent);
+                                    buffer = new StringBuilder(textContent.toString());
                                 }
-                                buffer.append(textValue);
+                                buffer.append(textValue.toString());
                             }
                         }
                     }
@@ -267,11 +267,11 @@ public aspect CoreParentNodeSupport {
         }
     }
     
-    public final void CoreParentNode.coreSetCharacterData(String text, DetachPolicy detachPolicy) {
+    public final void CoreParentNode.coreSetCharacterData(Object data, DetachPolicy detachPolicy) {
         coreRemoveChildren(detachPolicy);
-        if (text != null && text.length() > 0) {
+        if (data != null && (data instanceof CharacterData || ((String)data).length() > 0)) {
             coreSetState(COMPACT);
-            content = text;
+            content = data;
         }
     }
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstruction.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstruction.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstruction.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstruction.java Fri Jul 24 21:05:20 2015
@@ -18,6 +18,6 @@
  */
 package org.apache.axiom.core;
 
-public interface CoreProcessingInstruction extends CoreChildNode, CoreCharacterDataContainer {
+public interface CoreProcessingInstruction extends CoreChildNode, CoreCharacterDataContainingParentNode {
 
 }

Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstructionSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstructionSupport.aj?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstructionSupport.aj (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreProcessingInstructionSupport.aj Fri Jul 24 21:05:20 2015
@@ -20,7 +20,6 @@ package org.apache.axiom.core;
 
 public aspect CoreProcessingInstructionSupport {
     private String CoreProcessingInstruction.target;
-    private String CoreProcessingInstruction.value;
 
     public final String CoreProcessingInstruction.coreGetTarget() {
         return target;
@@ -29,12 +28,4 @@ public aspect CoreProcessingInstructionS
     public final void CoreProcessingInstruction.coreSetTarget(String target) {
         this.target = target;
     }
-    
-    public final String CoreProcessingInstruction.coreGetCharacterData() {
-        return value;
-    }
-    
-    public final void CoreProcessingInstruction.coreSetCharacterData(String value) {
-        this.value = value;
-    }
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -62,7 +62,7 @@ public aspect DOMAttributeSupport {
     }
     
     public final String DOMAttribute.getValue() {
-        return coreGetCharacterData();
+        return coreGetCharacterData().toString();
     }
     
     public final void DOMAttribute.setValue(String value) {

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -30,6 +30,6 @@ public aspect DOMCDATASectionSupport {
     }
 
     public final void DOMCDATASection.setData(String data) {
-        coreSetCharacterData(data);
+        coreSetCharacterData(data, Policies.DETACH_POLICY);
     }
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -30,12 +30,10 @@ public aspect DOMCommentSupport {
     }
 
     public final String DOMComment.getData() {
-        String data = coreGetCharacterData();
-        // TODO: review this
-        return data != null ? data : "";
+        return coreGetCharacterData().toString();
     }
 
     public final void DOMComment.setData(String data) {
-        coreSetCharacterData(data);
+        coreSetCharacterData(data, Policies.DETACH_POLICY);
     }
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -76,7 +76,7 @@ public aspect DOMDocumentFragmentSupport
     }
     
     public final String DOMDocumentFragment.getTextContent() {
-        return coreGetCharacterData(ElementAction.RECURSE);
+        return coreGetCharacterData(ElementAction.RECURSE).toString();
     }
 
     public final void DOMDocumentFragment.setTextContent(String textContent) {

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -118,7 +118,7 @@ public aspect DOMDocumentSupport {
     public final CDATASection DOMDocument.createCDATASection(String data) throws DOMException {
         DOMCDATASection cdataSection = (DOMCDATASection)coreGetNodeFactory().createCDATASection();
         cdataSection.coreSetOwnerDocument(this);
-        cdataSection.coreSetCharacterData(data);
+        cdataSection.coreSetCharacterData(data, Policies.DETACH_POLICY);
         return cdataSection;
     }
     
@@ -151,7 +151,7 @@ public aspect DOMDocumentSupport {
         DOMProcessingInstruction pi = (DOMProcessingInstruction)coreGetNodeFactory().createProcessingInstruction();
         pi.coreSetOwnerDocument(this);
         pi.coreSetTarget(target);
-        pi.coreSetCharacterData(data);
+        pi.coreSetCharacterData(data, Policies.DETACH_POLICY);
         return pi;
     }
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -179,7 +179,7 @@ public aspect DOMElementSupport {
     }
     
     public final String DOMElement.getTextContent() {
-        return coreGetCharacterData(ElementAction.RECURSE);
+        return coreGetCharacterData(ElementAction.RECURSE).toString();
     }
 
     public final void DOMElement.setTextContent(String textContent) {

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -24,11 +24,11 @@ public aspect DOMProcessingInstructionSu
     }
 
     public final String DOMProcessingInstruction.getData() {
-        return coreGetCharacterData();
+        return coreGetCharacterData().toString();
     }
     
     public final void DOMProcessingInstruction.setData(String data) {
-        coreSetCharacterData(data);
+        coreSetCharacterData(data, Policies.DETACH_POLICY);
     }
     
     public final String DOMProcessingInstruction.getNodeName() {
@@ -36,10 +36,10 @@ public aspect DOMProcessingInstructionSu
     }
 
     public final String DOMProcessingInstruction.getNodeValue() {
-        return coreGetCharacterData();
+        return getData();
     }
 
     public final void DOMProcessingInstruction.setNodeValue(String nodeValue) {
-        coreSetCharacterData(nodeValue);
+        setData(nodeValue);
     }
 }

Modified: webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaProcessingInstructionSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaProcessingInstructionSupport.aj?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaProcessingInstructionSupport.aj (original)
+++ webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/AbderaProcessingInstructionSupport.aj Fri Jul 24 21:05:20 2015
@@ -22,12 +22,12 @@ import org.apache.abdera.model.Processin
 
 public aspect AbderaProcessingInstructionSupport {
     public final String AbderaProcessingInstruction.getText() {
-        return coreGetCharacterData();
+        return coreGetCharacterData().toString();
     }
 
     @SuppressWarnings("unchecked")
     public final <T extends ProcessingInstruction> T AbderaProcessingInstruction.setText(String text) {
-        coreSetCharacterData(text);
+        coreSetCharacterData(text, Policies.DETACH_POLICY);
         return (T)this;
     }
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -38,7 +38,7 @@ public aspect AxiomAttributeSupport {
     }
     
     public final String AxiomAttribute.getAttributeValue() {
-        return coreGetCharacterData();
+        return coreGetCharacterData().toString();
     }
     
     public final void AxiomAttribute.setAttributeValue(String value) {

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCDATASection.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCDATASection.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCDATASection.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCDATASection.java Fri Jul 24 21:05:20 2015
@@ -20,6 +20,6 @@ package org.apache.axiom.om.impl.common;
 
 import org.apache.axiom.core.CoreCDATASection;
 
-public interface AxiomCDATASection extends CoreCDATASection, AxiomText {
+public interface AxiomCDATASection extends CoreCDATASection, AxiomText, AxiomCoreParentNode {
 
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCharacterDataNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCharacterDataNode.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCharacterDataNode.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCharacterDataNode.java Fri Jul 24 21:05:20 2015
@@ -20,6 +20,6 @@ package org.apache.axiom.om.impl.common;
 
 import org.apache.axiom.core.CoreCharacterDataNode;
 
-public interface AxiomCharacterDataNode extends CoreCharacterDataNode, AxiomText {
+public interface AxiomCharacterDataNode extends CoreCharacterDataNode, AxiomText, AxiomCoreLeafNode {
 
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomComment.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomComment.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomComment.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomComment.java Fri Jul 24 21:05:20 2015
@@ -21,6 +21,6 @@ package org.apache.axiom.om.impl.common;
 import org.apache.axiom.core.CoreComment;
 import org.apache.axiom.om.OMComment;
 
-public interface AxiomComment extends OMComment, AxiomLeafNode, CoreComment {
+public interface AxiomComment extends OMComment, AxiomLeafNode, CoreComment, AxiomCoreParentNode {
 
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -29,14 +29,14 @@ public aspect AxiomCommentSupport {
     }
 
     public String AxiomComment.getValue() {
-        return coreGetCharacterData();
+        return coreGetCharacterData().toString();
     }
 
     public void AxiomComment.setValue(String text) {
-        coreSetCharacterData(text);
+        coreSetCharacterData(text, Policies.DETACH_POLICY);
     }
     
     public final void AxiomComment.internalSerialize(Serializer serializer, OMOutputFormat format, boolean cache) throws OutputException {
-        serializer.writeComment(coreGetCharacterData());
+        serializer.writeComment(coreGetCharacterData().toString());
     }
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainer.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainer.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainer.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomContainer.java Fri Jul 24 21:05:20 2015
@@ -18,12 +18,11 @@
  */
 package org.apache.axiom.om.impl.common;
 
-import org.apache.axiom.core.CoreParentNode;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.impl.OMContainerEx;
 
-public interface AxiomContainer extends OMContainerEx, CoreParentNode, AxiomSerializable {
+public interface AxiomContainer extends OMContainerEx, AxiomCoreParentNode {
     /**
      * Check if the node can be added as a child of this container.
      * 

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -59,11 +59,6 @@ public aspect AxiomContainerSupport {
     
     private static final OMXMLStreamReaderConfiguration defaultReaderConfiguration = new OMXMLStreamReaderConfiguration();
     
-    public final boolean AxiomContainer.isComplete() {
-        int state = getState();
-        return state == COMPLETE || state == COMPACT;
-    }
-
     public final void AxiomContainer.discarded() {
         coreSetState(DISCARDED);
     }

Added: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNode.java?rev=1692581&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNode.java (added)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNode.java Fri Jul 24 21:05:20 2015
@@ -0,0 +1,23 @@
+/*
+ * 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.om.impl.common;
+
+public interface AxiomCoreLeafNode extends AxiomLeafNode {
+
+}

Propchange: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNodeSupport.aj?rev=1692581&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNodeSupport.aj (added)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNodeSupport.aj Fri Jul 24 21:05:20 2015
@@ -0,0 +1,35 @@
+/*
+ * 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.om.impl.common;
+
+import org.apache.axiom.om.OMXMLParserWrapper;
+
+public aspect AxiomCoreLeafNodeSupport {
+    public final OMXMLParserWrapper AxiomCoreLeafNode.getBuilder() {
+        return null;
+    }
+
+    public final boolean AxiomCoreLeafNode.isComplete() {
+        return true;
+    }
+
+    public void AxiomCoreLeafNode.build() {
+        // Do nothing; a leaf node is always complete
+    }
+}

Propchange: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreLeafNodeSupport.aj
------------------------------------------------------------------------------
    svn:eol-style = native

Added: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNode.java?rev=1692581&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNode.java (added)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNode.java Fri Jul 24 21:05:20 2015
@@ -0,0 +1,25 @@
+/*
+ * 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.om.impl.common;
+
+import org.apache.axiom.core.CoreParentNode;
+
+public interface AxiomCoreParentNode extends CoreParentNode, AxiomSerializable {
+
+}

Propchange: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNodeSupport.aj?rev=1692581&view=auto
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNodeSupport.aj (added)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNodeSupport.aj Fri Jul 24 21:05:20 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.om.impl.common;
+
+public aspect AxiomCoreParentNodeSupport {
+    public final boolean AxiomCoreParentNode.isComplete() {
+        int state = getState();
+        return state == COMPLETE || state == COMPACT;
+    }
+}

Propchange: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomCoreParentNodeSupport.aj
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomDocType.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomDocType.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomDocType.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomDocType.java Fri Jul 24 21:05:20 2015
@@ -21,6 +21,6 @@ package org.apache.axiom.om.impl.common;
 import org.apache.axiom.om.OMDocType;
 import org.apache.axiom.shared.IDocumentTypeDeclaration;
 
-public interface AxiomDocType extends OMDocType, AxiomLeafNode, IDocumentTypeDeclaration {
+public interface AxiomDocType extends OMDocType, AxiomCoreLeafNode, IDocumentTypeDeclaration {
 
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -131,7 +131,7 @@ public aspect AxiomElementSupport {
 
     // TODO: this is (incorrectly) overridden by the SOAPFaultReason implementations for SOAP 1.2
     public String AxiomElement.getText() {
-        return coreGetCharacterData(ElementAction.SKIP);
+        return coreGetCharacterData(ElementAction.SKIP).toString();
     }
     
     // Note: must not be final because it is (incorrectly) overridden in the SOAPFaultCode implementation for SOAP 1.2

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomEntityReference.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomEntityReference.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomEntityReference.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomEntityReference.java Fri Jul 24 21:05:20 2015
@@ -20,6 +20,6 @@ package org.apache.axiom.om.impl.common;
 
 import org.apache.axiom.om.OMEntityReference;
 
-public interface AxiomEntityReference extends OMEntityReference, AxiomLeafNode {
+public interface AxiomEntityReference extends OMEntityReference, AxiomCoreLeafNode {
 
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomLeafNodeSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomLeafNodeSupport.aj?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomLeafNodeSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomLeafNodeSupport.aj Fri Jul 24 21:05:20 2015
@@ -23,6 +23,7 @@ import java.io.Writer;
 
 import javax.xml.stream.XMLStreamException;
 
+import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMOutputFormat;
 
 public aspect AxiomLeafNodeSupport {
@@ -57,4 +58,14 @@ public aspect AxiomLeafNodeSupport {
     public final void AxiomLeafNode.serializeAndConsume(Writer writer2, OMOutputFormat format) throws XMLStreamException {
         throw new UnsupportedOperationException("Only supported on OMContainer instances");
     }
+
+    public final void AxiomLeafNode.setComplete(boolean state) {
+        if (state != true) {
+            throw new IllegalStateException();
+        }
+    }
+
+    public final void AxiomLeafNode.discard() throws OMException {
+        detach();
+    }
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -28,7 +28,7 @@ public aspect AxiomNamespaceDeclarationS
     }
 
     public final OMNamespace AxiomNamespaceDeclaration.getDeclaredNamespace() {
-        String namespaceURI = coreGetCharacterData();
+        String namespaceURI = coreGetCharacterData().toString();
         if (!namespaceURI.equals(declaredNamespace.getNamespaceURI())) {
             declaredNamespace = new OMNamespaceImpl(namespaceURI, declaredNamespace.getPrefix());
         }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomProcessingInstruction.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomProcessingInstruction.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomProcessingInstruction.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomProcessingInstruction.java Fri Jul 24 21:05:20 2015
@@ -21,6 +21,6 @@ package org.apache.axiom.om.impl.common;
 import org.apache.axiom.om.OMProcessingInstruction;
 import org.apache.axiom.shared.IProcessingInstruction;
 
-public interface AxiomProcessingInstruction extends OMProcessingInstruction, AxiomLeafNode, IProcessingInstruction {
+public interface AxiomProcessingInstruction extends OMProcessingInstruction, AxiomLeafNode, IProcessingInstruction, AxiomCoreParentNode {
 
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -32,14 +32,14 @@ public aspect AxiomProcessingInstruction
     }
 
     public final String AxiomProcessingInstruction.getValue() {
-        return coreGetCharacterData();
+        return coreGetCharacterData().toString();
     }
 
     public final void AxiomProcessingInstruction.setValue(String value) {
-        coreSetCharacterData(value);
+        coreSetCharacterData(value, Policies.DETACH_POLICY);
     }
     
     public final void AxiomProcessingInstruction.internalSerialize(Serializer serializer, OMOutputFormat format, boolean cache) throws OutputException {
-        serializer.writeProcessingInstruction(coreGetTarget() + " ", coreGetCharacterData());
+        serializer.writeProcessingInstruction(coreGetTarget() + " ", coreGetCharacterData().toString());
     }
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomText.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomText.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomText.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/AxiomText.java Fri Jul 24 21:05:20 2015
@@ -18,8 +18,9 @@
  */
 package org.apache.axiom.om.impl.common;
 
+import org.apache.axiom.core.CoreCharacterDataContainer;
 import org.apache.axiom.om.OMText;
 
-public interface AxiomText extends OMText, AxiomLeafNode {
+public interface AxiomText extends OMText, AxiomLeafNode, CoreCharacterDataContainer {
     AxiomText createInstanceOfSameType();
 }

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=1692581&r1=1692580&r2=1692581&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 Fri Jul 24 21:05:20 2015
@@ -18,12 +18,9 @@
  */
 package org.apache.axiom.om.impl.common;
 
-import java.io.IOException;
-
 import javax.activation.DataHandler;
 import javax.xml.namespace.QName;
 
-import org.apache.axiom.attachments.ByteArrayDataSource;
 import org.apache.axiom.ext.stax.datahandler.DataHandlerProvider;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
@@ -32,20 +29,15 @@ import org.apache.axiom.om.OMOutputForma
 import org.apache.axiom.om.impl.common.serializer.push.OutputException;
 import org.apache.axiom.om.impl.common.serializer.push.Serializer;
 import org.apache.axiom.util.UIDGenerator;
-import org.apache.axiom.util.base64.Base64Utils;
 
 public aspect AxiomTextSupport {
-    /**
-     * Either a {@link String} or a {@link TextContent} object.
-     */
-    private Object AxiomText.content;
-
     private TextContent AxiomText.getTextContent(boolean force) {
+        Object content = coreGetCharacterData();
         if (content instanceof TextContent) {
             return (TextContent)content;
         } else if (force) {
             TextContent textContent = new TextContent((String)content);
-            content = textContent;
+            coreSetCharacterData(textContent, Policies.DETACH_POLICY);
             return textContent;
         } else {
             return null;
@@ -53,7 +45,8 @@ public aspect AxiomTextSupport {
     }
     
     public final boolean AxiomText.isBinary() {
-        return content instanceof TextContent ? ((TextContent)content).binary : false;
+        TextContent textContent = getTextContent(false);
+        return textContent != null && textContent.binary;
     }
 
     public final void AxiomText.setBinary(boolean binary) {
@@ -64,7 +57,8 @@ public aspect AxiomTextSupport {
     }
 
     public final boolean AxiomText.isOptimized() {
-        return content instanceof TextContent ? ((TextContent)content).optimize : false;
+        TextContent textContent = getTextContent(false);
+        return textContent != null && textContent.optimize;
     }
 
     public final void AxiomText.setOptimize(boolean optimize) {
@@ -78,34 +72,13 @@ public aspect AxiomTextSupport {
     }
     
     public final String AxiomText.getText() throws OMException {
-        if (content instanceof TextContent) {
-            TextContent textContent = (TextContent)content;
-            if (textContent.dataHandlerObject != null) {
-                try {
-                    return Base64Utils.encode((DataHandler)getDataHandler());
-                } catch (Exception e) {
-                    throw new OMException(e);
-                }
-            } else {
-                return textContent.value;
-            }
-        } else {
-            return (String)content;
-        }
+        return coreGetCharacterData().toString();
     }
 
     public final char[] AxiomText.getTextCharacters() {
+        Object content = coreGetCharacterData();
         if (content instanceof TextContent) {
-            TextContent textContent = (TextContent)content;
-            if (textContent.dataHandlerObject != null) {
-                try {
-                    return Base64Utils.encodeToCharArray((DataHandler)getDataHandler());
-                } catch (IOException ex) {
-                    throw new OMException(ex);
-                }
-            } else {
-                return textContent.value.toCharArray();
-            }
+            return ((TextContent)content).toCharArray();
         } else {
             return ((String)content).toCharArray();
         }
@@ -132,23 +105,12 @@ public aspect AxiomTextSupport {
 
     // TODO: should be final, but Abdera overrides this method
     public Object AxiomText.getDataHandler() {
+        Object content = coreGetCharacterData();
         if (content instanceof TextContent) {
-            TextContent textContent = (TextContent)content;
-            if (textContent.dataHandlerObject != null) {
-                if (textContent.dataHandlerObject instanceof DataHandlerProvider) {
-                    try {
-                        textContent.dataHandlerObject = ((DataHandlerProvider)textContent.dataHandlerObject).getDataHandler();
-                    } catch (IOException ex) {
-                        throw new OMException(ex);
-                    }
-                }
-                return textContent.dataHandlerObject;
-            } else if (textContent.binary) {
-                return new DataHandler(new ByteArrayDataSource(
-                        Base64Utils.decode(textContent.value), textContent.mimeType));
-            }
+            return ((TextContent)content).getDataHandler();
+        } else {
+            throw new OMException("No DataHandler available");
         }
-        throw new OMException("No DataHandler available");
     }
 
     public final String AxiomText.getContentID() {
@@ -160,6 +122,7 @@ public aspect AxiomTextSupport {
     }
 
     public final void AxiomText.internalSerialize(Serializer serializer, OMOutputFormat format, boolean cache) throws OutputException {
+        Object content = coreGetCharacterData();
         if (content instanceof TextContent) {
             TextContent textContent = (TextContent)content;
             if (!textContent.binary) {
@@ -167,7 +130,7 @@ public aspect AxiomTextSupport {
             } else if (textContent.dataHandlerObject instanceof DataHandlerProvider) {
                 serializer.writeDataHandler((DataHandlerProvider)textContent.dataHandlerObject, textContent.contentID, textContent.optimize);
             } else {
-                serializer.writeDataHandler((DataHandler)getDataHandler(), textContent.contentID, textContent.optimize);
+                serializer.writeDataHandler(textContent.getDataHandler(), textContent.contentID, textContent.optimize);
             }
         } else {
             serializer.writeText(getType(), (String)content);
@@ -193,16 +156,9 @@ public aspect AxiomTextSupport {
         getTextContent(true).dataHandlerObject = dataHandlerObject;
     }
     
-    public final String AxiomText.coreGetCharacterData() {
-        return getText();
-    }
-
-    public final void AxiomText.coreSetCharacterData(String data) {
-        content = data;
-    }
-    
     public final AxiomText AxiomText.doClone() {
         AxiomText clone = createInstanceOfSameType();
+        Object content = coreGetCharacterData();
         if (content instanceof TextContent) {
             TextContent textContent = (TextContent)content;
             TextContent clonedTextContent = new TextContent(textContent.value);
@@ -211,9 +167,9 @@ public aspect AxiomTextSupport {
             clonedTextContent.binary = textContent.binary;
             clonedTextContent.contentID = textContent.contentID;
             clonedTextContent.dataHandlerObject = textContent.dataHandlerObject;
-            clone.content = clonedTextContent;
+            clone.coreSetCharacterData(clonedTextContent, Policies.DETACH_POLICY);
         } else {
-            clone.content = content;
+            clone.coreSetCharacterData(content, Policies.DETACH_POLICY);
         }
         return clone;
     }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/TextContent.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/TextContent.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/TextContent.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/TextContent.java Fri Jul 24 21:05:20 2015
@@ -18,11 +18,17 @@
  */
 package org.apache.axiom.om.impl.common;
 
+import java.io.IOException;
+
 import javax.activation.DataHandler;
 
+import org.apache.axiom.attachments.ByteArrayDataSource;
+import org.apache.axiom.core.CharacterData;
 import org.apache.axiom.ext.stax.datahandler.DataHandlerProvider;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.util.base64.Base64Utils;
 
-final class TextContent {
+final class TextContent implements CharacterData {
     final String value;
     
     String mimeType;
@@ -42,4 +48,46 @@ final class TextContent {
     TextContent(String value) {
         this.value = value;
     }
+
+    DataHandler getDataHandler() {
+        if (dataHandlerObject != null) {
+            if (dataHandlerObject instanceof DataHandlerProvider) {
+                try {
+                    dataHandlerObject = ((DataHandlerProvider)dataHandlerObject).getDataHandler();
+                } catch (IOException ex) {
+                    throw new OMException(ex);
+                }
+            }
+            return (DataHandler)dataHandlerObject;
+        } else if (binary) {
+            return new DataHandler(new ByteArrayDataSource(Base64Utils.decode(value), mimeType));
+        } else {
+            throw new OMException("No DataHandler available");
+        }
+    }
+    
+    @Override
+    public String toString() {
+        if (dataHandlerObject != null) {
+            try {
+                return Base64Utils.encode(getDataHandler());
+            } catch (Exception e) {
+                throw new OMException(e);
+            }
+        } else {
+            return value;
+        }
+    }
+    
+    char[] toCharArray() {
+        if (dataHandlerObject != null) {
+            try {
+                return Base64Utils.encodeToCharArray(getDataHandler());
+            } catch (IOException ex) {
+                throw new OMException(ex);
+            }
+        } else {
+            return value.toCharArray();
+        }
+    }
 }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AxiomNodeFactorySupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AxiomNodeFactorySupport.aj?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AxiomNodeFactorySupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AxiomNodeFactorySupport.aj Fri Jul 24 21:05:20 2015
@@ -38,6 +38,7 @@ import org.apache.axiom.om.impl.common.A
 import org.apache.axiom.om.impl.common.AxiomElement;
 import org.apache.axiom.om.impl.common.AxiomProcessingInstruction;
 import org.apache.axiom.om.impl.common.AxiomText;
+import org.apache.axiom.om.impl.common.Policies;
 
 public aspect AxiomNodeFactorySupport {
     public final OMDocument AxiomNodeFactory.createOMDocument() {
@@ -101,7 +102,7 @@ public aspect AxiomNodeFactorySupport {
 
     public final OMText AxiomNodeFactory.createOMText(OMContainer parent, String text, int type, boolean fromBuilder) {
         AxiomText node = createAxiomText(parent, type, fromBuilder);
-        node.coreSetCharacterData(text);
+        node.coreSetCharacterData(text, Policies.DETACH_POLICY);
         return node;
     }
     
@@ -131,7 +132,7 @@ public aspect AxiomNodeFactorySupport {
         }
         AxiomText node = createAxiomText(parent, type, false);
         OMNamespace ns = ((AxiomElement)parent).handleNamespace(text.getNamespaceURI(), text.getPrefix());
-        node.coreSetCharacterData(ns == null ? text.getLocalPart() : ns.getPrefix() + ":" + text.getLocalPart());
+        node.coreSetCharacterData(ns == null ? text.getLocalPart() : ns.getPrefix() + ":" + text.getLocalPart(), Policies.DETACH_POLICY);
         return node;
     }
     
@@ -141,7 +142,7 @@ public aspect AxiomNodeFactorySupport {
 
     public final OMText AxiomNodeFactory.createOMText(OMContainer parent, String s, String mimeType, boolean optimize) {
         AxiomText node = createAxiomText(parent, OMNode.TEXT_NODE, false);
-        node.coreSetCharacterData(s);
+        node.coreSetCharacterData(s, Policies.DETACH_POLICY);
         node.internalSetMimeType(mimeType);
         node.setOptimize(optimize);
         node.setBinary(true);
@@ -191,7 +192,7 @@ public aspect AxiomNodeFactorySupport {
             OMContainer parent, String piTarget, String piData, boolean fromBuilder) {
         AxiomProcessingInstruction node = (AxiomProcessingInstruction)createProcessingInstruction();
         node.coreSetTarget(piTarget);
-        node.coreSetCharacterData(piData);
+        node.coreSetCharacterData(piData, Policies.DETACH_POLICY);
         if (parent != null) {
             ((OMContainerEx)parent).addChild(node, fromBuilder);
         }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ChildNode.java Fri Jul 24 21:05:20 2015
@@ -20,9 +20,7 @@ package org.apache.axiom.om.impl.dom;
 
 import org.apache.axiom.dom.DOMChildNode;
 import org.apache.axiom.om.OMCloneOptions;
-import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.common.AxiomChildNode;
 
 public abstract class ChildNode extends NodeImpl implements DOMChildNode, AxiomChildNode {
@@ -44,26 +42,4 @@ public abstract class ChildNode extends
     }
     
     abstract ChildNode createClone();
-
-    public final OMXMLParserWrapper getBuilder() {
-        return null;
-    }
-
-    public final boolean isComplete() {
-        return true;
-    }
-
-    public final void setComplete(boolean state) {
-        if (state != true) {
-            throw new IllegalStateException();
-        }
-    }
-
-    public final void discard() throws OMException {
-        detach();
-    }
-
-    public final void build() {
-        // Do nothing; a leaf node is always complete
-    }
 }

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/CommentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/CommentImpl.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/CommentImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/CommentImpl.java Fri Jul 24 21:05:20 2015
@@ -20,13 +20,14 @@
 package org.apache.axiom.om.impl.dom;
 
 import org.apache.axiom.dom.DOMComment;
+import org.apache.axiom.dom.Policies;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.impl.common.AxiomComment;
 
 public class CommentImpl extends LeafNode implements DOMComment, AxiomComment {
     public CommentImpl(String value, OMFactory factory) {
         super(factory);
-        coreSetCharacterData(value);
+        coreSetCharacterData(value, Policies.DETACH_POLICY);
     }
 
     ChildNode createClone() {

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ProcessingInstructionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ProcessingInstructionImpl.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ProcessingInstructionImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ProcessingInstructionImpl.java Fri Jul 24 21:05:20 2015
@@ -29,6 +29,6 @@ public class ProcessingInstructionImpl e
     }
 
     ChildNode createClone() {
-        return (ChildNode)getOMFactory().createOMProcessingInstruction(null, coreGetTarget(), coreGetCharacterData());
+        return (ChildNode)getOMFactory().createOMProcessingInstruction(null, coreGetTarget(), coreGetCharacterData().toString());
     }
 }

Modified: webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMCommentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMCommentImpl.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMCommentImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMCommentImpl.java Fri Jul 24 21:05:20 2015
@@ -24,6 +24,7 @@ import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.impl.common.AxiomComment;
+import org.apache.axiom.om.impl.common.Policies;
 
 public class OMCommentImpl extends OMLeafNode implements AxiomComment {
     /**
@@ -35,10 +36,10 @@ public class OMCommentImpl extends OMLea
     public OMCommentImpl(OMContainer parentNode, String contentText,
                          OMFactory factory, boolean fromBuilder) {
         super(parentNode, factory, fromBuilder);
-        coreSetCharacterData(contentText);
+        coreSetCharacterData(contentText, Policies.DETACH_POLICY);
     }
 
     OMNode clone(OMCloneOptions options, OMContainer targetParent) {
-        return getOMFactory().createOMComment(targetParent, coreGetCharacterData());
+        return getOMFactory().createOMComment(targetParent, coreGetCharacterData().toString());
     }
 }

Modified: webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMLeafNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMLeafNode.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMLeafNode.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMLeafNode.java Fri Jul 24 21:05:20 2015
@@ -19,9 +19,7 @@
 package org.apache.axiom.om.impl.llom;
 
 import org.apache.axiom.om.OMContainer;
-import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.OMContainerEx;
 import org.apache.axiom.om.impl.common.AxiomLeafNode;
 
@@ -36,26 +34,4 @@ public abstract class OMLeafNode extends
     public OMLeafNode(OMFactory factory) {
         super(factory);
     }
-
-    public final OMXMLParserWrapper getBuilder() {
-        return null;
-    }
-
-    public final boolean isComplete() {
-        return true;
-    }
-
-    public final void setComplete(boolean state) {
-        if (state != true) {
-            throw new IllegalStateException();
-        }
-    }
-
-    public final void discard() throws OMException {
-        detach();
-    }
-
-    public void build() {
-        // Do nothing; a leaf node is always complete
-    }
 }

Modified: webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMProcessingInstructionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMProcessingInstructionImpl.java?rev=1692581&r1=1692580&r2=1692581&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMProcessingInstructionImpl.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMProcessingInstructionImpl.java Fri Jul 24 21:05:20 2015
@@ -31,6 +31,6 @@ public class OMProcessingInstructionImpl
     }
 
     OMNode clone(OMCloneOptions options, OMContainer targetParent) {
-        return getOMFactory().createOMProcessingInstruction(targetParent, coreGetTarget(), coreGetCharacterData());
+        return getOMFactory().createOMProcessingInstruction(targetParent, coreGetTarget(), coreGetCharacterData().toString());
     }
 }