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 2013/01/26 22:38:57 UTC

svn commit: r1438968 - in /webservices/axiom/trunk/modules: axiom-api/src/main/java/org/apache/axiom/om/impl/ axiom-api/src/main/java/org/apache/axiom/om/impl/util/ axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/ axiom-dom/src/main/jav...

Author: veithen
Date: Sat Jan 26 21:38:57 2013
New Revision: 1438968

URL: http://svn.apache.org/viewvc?rev=1438968&view=rev
Log:
Started refactoring of the serialization code (to simplify the code and eventually be able to implement AXIOM-288).

Added:
    webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/ISerializable.java   (with props)
    webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StAXSerializer.java
      - copied, changed from r1438949, webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java
Modified:
    webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMNodeEx.java
    webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java
    webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/IChildNode.java
    webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMDocumentHelper.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/CommentImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentFragmentImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentTypeImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/EntityReferenceImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ProcessingInstructionImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/TextNodeImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java
    webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMCommentImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocTypeImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMEntityReferenceImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMProcessingInstructionImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMTextImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPFaultImpl.java
    webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java
    webservices/axiom/trunk/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/factory/TestCreateOMAttributeNullPrefixNoNamespace.java

Modified: webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMNodeEx.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMNodeEx.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMNodeEx.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/OMNodeEx.java Sat Jan 26 21:38:57 2013
@@ -21,10 +21,6 @@ package org.apache.axiom.om.impl;
 
 import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMNode;
-import org.apache.axiom.om.OMSerializable;
-
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 /**
  * Interface that is used internally by Axiom and that should not be considered being part of the
@@ -40,18 +36,6 @@ public interface OMNodeEx extends OMNode
     public void setComplete(boolean state);
 
     /**
-     * Serializes the node. Note that this is an internal method that MUST NOT be used outside of
-     * Axiom. Please use {@link OMSerializable#serialize(XMLStreamWriter, boolean)} instead.
-     *
-     * @param writer
-     * @param cache indicates if caching should be enabled
-     * @throws javax.xml.stream.XMLStreamException
-     *
-     */
-    public void internalSerialize(XMLStreamWriter writer, boolean cache)
-            throws XMLStreamException;
-
-    /**
      * Get the next sibling if it is available. The sibling is available if it is complete or
      * if the builder has started building the node. In the latter case,
      * {@link OMNode#isComplete()} may return <code>false</code> when called on the sibling. 

Modified: webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java (original)
+++ webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java Sat Jan 26 21:38:57 2013
@@ -52,7 +52,7 @@ public class OMSerializerUtil {
      *
      * @param writer
      * @throws javax.xml.stream.XMLStreamException
-     *
+     * @deprecated This is an internal method that is no longer used.
      */
     public static void serializeEndpart(XMLStreamWriter writer)
             throws XMLStreamException {
@@ -164,6 +164,7 @@ public class OMSerializerUtil {
      * @param element
      * @param writer
      * @throws XMLStreamException
+     * @deprecated This is an internal method that is no longer used.
      */
     public static void serializeStartpart(OMElement element,
                                           XMLStreamWriter writer) throws XMLStreamException {
@@ -177,6 +178,7 @@ public class OMSerializerUtil {
      * @param localName (in some cases, the caller wants to force a different localName)
      * @param writer
      * @throws XMLStreamException
+     * @deprecated This is an internal method that is no longer used.
      */
     public static void serializeStartpart(OMElement element, String localName,
                                           XMLStreamWriter writer)
@@ -545,6 +547,9 @@ public class OMSerializerUtil {
         serializeByPullStream(element, writer, false);
     }
 
+    /**
+     * @deprecated This is an internal method that is no longer used.
+     */
     public static void serializeByPullStream
             (OMElement
                     element, XMLStreamWriter writer, boolean cache) throws XMLStreamException {
@@ -556,26 +561,29 @@ public class OMSerializerUtil {
         }
     }
 
+    /**
+     * @deprecated This is an internal method that is no longer used.
+     */
     public static void serializeChildren(OMContainer container, XMLStreamWriter writer,
             boolean cache) throws XMLStreamException {
         if (cache) {
-            OMNodeEx child = (OMNodeEx)container.getFirstOMChild();
+            OMNode child = container.getFirstOMChild();
             while (child != null) {
-                child.internalSerialize(writer, true);
-                child = (OMNodeEx)child.getNextOMSibling();
+                child.serialize(writer, true);
+                child = child.getNextOMSibling();
             }
         } else {
-            OMNodeEx child = (OMNodeEx)container.getFirstOMChild();
+            OMNode child = (OMNodeEx)container.getFirstOMChild();
             while (child != null) {
                 if ((!(child instanceof OMElement)) || child.isComplete() ||
                         ((OMElement)child).getBuilder() == null) {
-                    child.internalSerialize(writer, false);
+                    child.serialize(writer, false);
                 } else {
                     OMElement element = (OMElement) child;
                     element.getBuilder().setCache(false);
                     serializeByPullStream(element, writer, cache);
                 }
-                child = (OMNodeEx)child.getNextOMSiblingIfAvailable();
+                child = ((OMNodeEx)child).getNextOMSiblingIfAvailable();
             }
         }
     }

Modified: webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/IChildNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/IChildNode.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/IChildNode.java (original)
+++ webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/IChildNode.java Sat Jan 26 21:38:57 2013
@@ -20,6 +20,6 @@ package org.apache.axiom.om.impl.common;
 
 import org.apache.axiom.om.impl.OMNodeEx;
 
-public interface IChildNode extends OMNodeEx {
+public interface IChildNode extends OMNodeEx, ISerializable {
     IParentNode getIParentNode();
 }

Added: webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/ISerializable.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/ISerializable.java?rev=1438968&view=auto
==============================================================================
--- webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/ISerializable.java (added)
+++ webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/ISerializable.java Sat Jan 26 21:38:57 2013
@@ -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 javax.xml.stream.XMLStreamException;
+
+import org.apache.axiom.om.OMSerializable;
+
+public interface ISerializable extends OMSerializable {
+    /**
+     * Serializes the node.
+     *
+     * @param serializer
+     * @param cache indicates if caching should be enabled
+     * @throws XMLStreamException
+     *
+     */
+    void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException;
+}

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

Modified: webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMDocumentHelper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMDocumentHelper.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMDocumentHelper.java (original)
+++ webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/OMDocumentHelper.java Sat Jan 26 21:38:57 2013
@@ -21,12 +21,10 @@ package org.apache.axiom.om.impl.common;
 
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
 import org.apache.axiom.om.impl.serialize.StreamingOMSerializer;
-import org.apache.axiom.om.impl.util.OMSerializerUtil;
 
 /**
  * Utility class with default implementations for some of the methods defined by the
@@ -35,10 +33,10 @@ import org.apache.axiom.om.impl.util.OMS
 public class OMDocumentHelper {
     private OMDocumentHelper() {}
     
-    public static void internalSerialize(OMDocument document, XMLStreamWriter writer2,
+    public static void internalSerialize(OMDocument document, StAXSerializer serializer,
             boolean cache, boolean includeXMLDeclaration) throws XMLStreamException {
         
-        MTOMXMLStreamWriter writer = (MTOMXMLStreamWriter) writer2;
+        MTOMXMLStreamWriter writer = (MTOMXMLStreamWriter)serializer.getWriter();
         if (includeXMLDeclaration) {
             //Check whether the OMOutput char encoding and OMDocument char
             //encoding matches, if not use char encoding of OMOutput
@@ -58,7 +56,7 @@ public class OMDocumentHelper {
         }
 
         if (cache || document.isComplete() || document.getBuilder() == null) {
-            OMSerializerUtil.serializeChildren(document, writer, cache);
+            serializer.serializeChildren(document, cache);
         } else {
             StreamingOMSerializer streamingOMSerializer = new StreamingOMSerializer();
             XMLStreamReader reader = document.getXMLStreamReaderWithoutCaching();

Copied: webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StAXSerializer.java (from r1438949, webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StAXSerializer.java?p2=webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StAXSerializer.java&p1=webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java&r1=1438949&r2=1438968&rev=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/util/OMSerializerUtil.java (original)
+++ webservices/axiom/trunk/modules/axiom-common-impl/src/main/java/org/apache/axiom/om/impl/common/StAXSerializer.java Sat Jan 26 21:38:57 2013
@@ -16,17 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-package org.apache.axiom.om.impl.util;
+package org.apache.axiom.om.impl.common;
 
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMConstants;
-import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.serialize.StreamingOMSerializer;
 import org.apache.axiom.om.util.CommonUtils;
 import org.apache.commons.logging.Log;
@@ -39,135 +36,43 @@ import javax.xml.stream.XMLStreamWriter;
 import java.util.ArrayList;
 import java.util.Iterator;
 
-public class OMSerializerUtil {
-    private static final Log log = LogFactory.getLog(OMSerializerUtil.class);
+public class StAXSerializer {
+    private static final Log log = LogFactory.getLog(StAXSerializer.class);
     private static boolean ADV_DEBUG_ENABLED = true;
     
     static long nsCounter = 0;
     
     private static final String XSI_URI = "http://www.w3.org/2001/XMLSchema-instance";
     private static final String XSI_LOCAL_NAME = "type";
-    /**
-     * Method serializeEndpart.
-     *
-     * @param writer
-     * @throws javax.xml.stream.XMLStreamException
-     *
-     */
-    public static void serializeEndpart(XMLStreamWriter writer)
-            throws XMLStreamException {
-        writer.writeEndElement();
+    
+    private final XMLStreamWriter writer;
+    
+    public StAXSerializer(XMLStreamWriter writer) {
+        this.writer = writer;
     }
 
-    /**
-     * Method serializeAttribute.
-     *
-     * @param attr
-     * @param writer
-     * @throws XMLStreamException
-     * @deprecated use serializeStartpart instead
-     */
-    public static void serializeAttribute(OMAttribute attr, XMLStreamWriter writer)
-            throws XMLStreamException {
-
-        // first check whether the attribute is associated with a namespace
-        OMNamespace ns = attr.getNamespace();
-        String prefix = null;
-        String namespaceName = null;
-        if (ns != null) {
-
-            // add the prefix if it's availble
-            prefix = ns.getPrefix();
-            namespaceName = ns.getNamespaceURI();
-            if (prefix != null) {
-                writer.writeAttribute(prefix, namespaceName,
-                                      attr.getLocalName(), attr.getAttributeValue());
-            } else {
-                writer.writeAttribute(namespaceName, attr.getLocalName(),
-                                      attr.getAttributeValue());
-            }
-        } else {
-            String localName = attr.getLocalName();
-            String attributeValue = attr.getAttributeValue();
-            writer.writeAttribute(localName, attributeValue);
-        }
+    public XMLStreamWriter getWriter() {
+        return writer;
     }
 
     /**
-     * Method serializeNamespace.
+     * Method serializeEndpart.
+     *
+     * @throws javax.xml.stream.XMLStreamException
      *
-     * @param namespace
-     * @param writer
-     * @throws XMLStreamException
-     * @deprecated Use serializeStartpart instead
-     */
-    public static void serializeNamespace(OMNamespace namespace, XMLStreamWriter writer)
-            throws XMLStreamException {
-        if (namespace == null) {
-            return;
-        }
-        String uri = namespace.getNamespaceURI();
-        String prefix = namespace.getPrefix();
-
-        if (uri != null && !"".equals(uri)) {
-            String prefixFromWriter = writer.getPrefix(uri);
-
-            // Handling Default Namespaces First
-            // Case 1 :
-            //        here we are trying define a default namespace. But has this been defined in the current context.
-            //        yes, there can be a default namespace, but it may have a different URI. If its a different URI
-            //        then explicitly define the default namespace here.
-            // Case 2 :
-            //        The passed in namespace is a default ns, but there is a non-default ns declared
-            //        in the current scope.
-            if (("".equals(prefix) && "".equals(prefixFromWriter) &&
-                    !uri.equals(writer.getNamespaceContext().getNamespaceURI(""))) ||
-                    (prefix != null && "".equals(prefix) &&
-                            (prefixFromWriter == null || !prefix.equals(prefixFromWriter)))) {
-                // this has not been declared earlier
-                writer.writeDefaultNamespace(uri);
-                writer.setDefaultNamespace(uri);
-            } else {
-                prefix = prefix == null ? getNextNSPrefix(writer) : prefix;
-                if (prefix != null && !prefix.equals(prefixFromWriter) &&
-                        !checkForPrefixInTheCurrentContext(writer, uri, prefix)) {
-                    writer.writeNamespace(prefix, uri);
-                    writer.setPrefix(prefix, uri);
-                }
-            }
-        } else {
-            // now the nsURI passed is "" or null. Meaning we gonna work with defaultNS.
-            // check whether there is a defaultNS already declared. If yes, is it the same as this ?
-            String currentDefaultNSURI = writer.getNamespaceContext().getNamespaceURI("");
-            if ((currentDefaultNSURI != null && !currentDefaultNSURI.equals(uri)) ||
-                    uri != null && !uri.equals(currentDefaultNSURI)) {
-                // this has not been declared earlier
-                writer.writeDefaultNamespace(uri);
-                writer.setDefaultNamespace(uri);
-            }
-        }
-    }
-
-    /**
-     * @deprecated This method was used to work around a StAX conformance issue in early versions
-     * of the XL XP-J parser. This is now handled by
-     * {@link org.apache.axiom.util.stax.dialect.StAXDialect}, and this method always returns
-     * <code>false</code>.
      */
-    public static boolean isSetPrefixBeforeStartElement(XMLStreamWriter writer) {
-        return false;
+    public void serializeEndpart() throws XMLStreamException {
+        writer.writeEndElement();
     }
 
     /**
      * Method serializeStartpart. Serialize the start tag of an element.
      *
      * @param element
-     * @param writer
      * @throws XMLStreamException
      */
-    public static void serializeStartpart(OMElement element,
-                                          XMLStreamWriter writer) throws XMLStreamException {
-        serializeStartpart(element, element.getLocalName(), writer);
+    public void serializeStartpart(OMElement element) throws XMLStreamException {
+        serializeStartpart(element, element.getLocalName());
     }
 
     /**
@@ -175,11 +80,9 @@ public class OMSerializerUtil {
      *
      * @param element
      * @param localName (in some cases, the caller wants to force a different localName)
-     * @param writer
      * @throws XMLStreamException
      */
-    public static void serializeStartpart(OMElement element, String localName,
-                                          XMLStreamWriter writer)
+    public void serializeStartpart(OMElement element, String localName)
             throws XMLStreamException {
 
         // Note: To serialize the start tag, we must follow the order dictated by the JSR-173 (StAX) specification.
@@ -211,7 +114,7 @@ public class OMSerializerUtil {
 
         if (eNamespace != null) {
             if (ePrefix == null) {
-                if (!isAssociated("", eNamespace, writer)) {
+                if (!isAssociated("", eNamespace)) {
                     if (writePrefixList == null) {
                         writePrefixList = new ArrayList();
                         writeNSList = new ArrayList();
@@ -227,7 +130,7 @@ public class OMSerializerUtil {
                  * If XMLStreamWriter.writeStartElement(prefix,localName,namespaceURI) associates
                  * the prefix with the namespace .. 
                  */
-                if (!isAssociated(ePrefix, eNamespace, writer)) {
+                if (!isAssociated(ePrefix, eNamespace)) {
                     if (writePrefixList == null) {
                         writePrefixList = new ArrayList();
                         writeNSList = new ArrayList();
@@ -258,7 +161,7 @@ public class OMSerializerUtil {
             namespace = (namespace != null && namespace.length() == 0) ? null : namespace;
 
 
-            String newPrefix = generateSetPrefix(prefix, namespace, writer, false);
+            String newPrefix = generateSetPrefix(prefix, namespace, false);
             // If this is a new association, remember it so that it can written out later
             if (newPrefix != null) {
                 if (writePrefixList == null) {
@@ -274,7 +177,7 @@ public class OMSerializerUtil {
 
         // Generate setPrefix for the element
         // Get the prefix and namespace of the element.  "" and null are identical.
-        String newPrefix = generateSetPrefix(ePrefix, eNamespace, writer, false);
+        String newPrefix = generateSetPrefix(ePrefix, eNamespace, false);
         // If this is a new association, remember it so that it can written out later
         if (newPrefix != null) {
             if (writePrefixList == null) {
@@ -309,7 +212,7 @@ public class OMSerializerUtil {
                 prefix = (writerPrefix != null) ?
                         writerPrefix : getNextNSPrefix();
             }
-            newPrefix = generateSetPrefix(prefix, namespace, writer, true);
+            newPrefix = generateSetPrefix(prefix, namespace, true);
             // If the prefix is not associated with a namespace yet, remember it so that we can
             // write out a namespace declaration
             if (newPrefix != null) {
@@ -357,7 +260,6 @@ public class OMSerializerUtil {
 
                             newPrefix = generateSetPrefix(refPrefix, 
                                     refNamespace, 
-                                    writer, 
                                     true);
                             // If the prefix is not associated with a namespace yet, remember it so that we can
                             // write out a namespace declaration
@@ -454,100 +356,7 @@ public class OMSerializerUtil {
         }
     }
 
-    /**
-     * @deprecated This is an internal method that is no longer used.
-     */
-    private static boolean checkForPrefixInTheCurrentContext(XMLStreamWriter writer,
-                                                             String nameSpaceName, String prefix)
-            throws XMLStreamException {
-        Iterator prefixesIter = writer.getNamespaceContext().getPrefixes(nameSpaceName);
-        while (prefixesIter.hasNext()) {
-            String prefix_w = (String) prefixesIter.next();
-            if (prefix_w.equals(prefix)) {
-                // if found do not declare the ns
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * serializeNamespaces
-     *
-     * @param element
-     * @param writer
-     * @throws XMLStreamException
-     * @deprecated Use serializeStartpart instead
-     */
-    public static void serializeNamespaces
-            (OMElement
-                    element,
-             XMLStreamWriter writer) throws XMLStreamException {
-        Iterator namespaces = element.getAllDeclaredNamespaces();
-        if (namespaces != null) {
-            while (namespaces.hasNext()) {
-                serializeNamespace((OMNamespace) namespaces.next(), writer);
-            }
-        }
-    }
-
-    /**
-     * Serialize attributes
-     *
-     * @param element
-     * @param writer
-     * @throws XMLStreamException
-     * @deprecated Consider using serializeStartpart instead
-     */
-    public static void serializeAttributes
-            (OMElement
-                    element,
-             XMLStreamWriter writer) throws XMLStreamException {
-        Iterator attributes = element.getAllAttributes();
-        if (attributes != null && attributes.hasNext()) {
-            while (attributes.hasNext()) {
-                serializeAttribute((OMAttribute) attributes.next(),
-                                   writer);
-            }
-        }
-    }
-
-    /**
-     * @deprecated This is an internal method that is no longer used.
-     */
-    public static void serializeNormal
-            (OMElement
-                    element, XMLStreamWriter writer, boolean cache)
-            throws XMLStreamException {
-
-        if (cache) {
-            element.build();
-        }
-
-        serializeStartpart(element, writer);
-        OMNode firstChild = element.getFirstOMChild();
-        if (firstChild != null) {
-            if (cache) {
-                (firstChild).serialize(writer);
-            } else {
-                (firstChild).serializeAndConsume(writer);
-            }
-        }
-        serializeEndpart(writer);
-    }
-
-    /**
-     * @deprecated This is an internal method that is no longer used.
-     */
-    public static void serializeByPullStream
-            (OMElement
-                    element, XMLStreamWriter writer) throws XMLStreamException {
-        serializeByPullStream(element, writer, false);
-    }
-
-    public static void serializeByPullStream
-            (OMElement
-                    element, XMLStreamWriter writer, boolean cache) throws XMLStreamException {
+    public void serializeByPullStream(OMElement element, boolean cache) throws XMLStreamException {
         XMLStreamReader reader = element.getXMLStreamReader(cache);
         try {
             new StreamingOMSerializer().serialize(reader, writer);
@@ -556,26 +365,25 @@ public class OMSerializerUtil {
         }
     }
 
-    public static void serializeChildren(OMContainer container, XMLStreamWriter writer,
-            boolean cache) throws XMLStreamException {
+    public void serializeChildren(OMContainer container, boolean cache) throws XMLStreamException {
         if (cache) {
-            OMNodeEx child = (OMNodeEx)container.getFirstOMChild();
+            IChildNode child = (IChildNode)container.getFirstOMChild();
             while (child != null) {
-                child.internalSerialize(writer, true);
-                child = (OMNodeEx)child.getNextOMSibling();
+                child.internalSerialize(this, true);
+                child = (IChildNode)child.getNextOMSibling();
             }
         } else {
-            OMNodeEx child = (OMNodeEx)container.getFirstOMChild();
+            IChildNode child = (IChildNode)container.getFirstOMChild();
             while (child != null) {
                 if ((!(child instanceof OMElement)) || child.isComplete() ||
                         ((OMElement)child).getBuilder() == null) {
-                    child.internalSerialize(writer, false);
+                    child.internalSerialize(this, false);
                 } else {
                     OMElement element = (OMElement) child;
                     element.getBuilder().setCache(false);
-                    serializeByPullStream(element, writer, cache);
+                    serializeByPullStream(element, cache);
                 }
-                child = (OMNodeEx)child.getNextOMSiblingIfAvailable();
+                child = (IChildNode)child.getNextOMSiblingIfAvailable();
             }
         }
     }
@@ -622,33 +430,19 @@ public class OMSerializerUtil {
     }
 
     /**
-     * @deprecated This is an internal method that is no longer used.
-     */
-    public static String getNextNSPrefix(XMLStreamWriter writer) {
-        String prefix = getNextNSPrefix();
-        while (writer.getNamespaceContext().getNamespaceURI(prefix) != null) {
-            prefix = getNextNSPrefix();
-        }
-
-        return prefix;
-    }
-
-    /**
      * Generate setPrefix/setDefaultNamespace if the prefix is not associated
      *
      * @param prefix
      * @param namespace
-     * @param writer
      * @param attr
      * @return prefix name if a setPrefix/setDefaultNamespace is performed
      */
-    public static String generateSetPrefix(String prefix, String namespace, XMLStreamWriter writer,
-                                           boolean attr) throws XMLStreamException {
+    public String generateSetPrefix(String prefix, String namespace, boolean attr) throws XMLStreamException {
         prefix = (prefix == null) ? "" : prefix;
         
         
         // If the prefix and namespace are already associated, no generation is needed
-        if (isAssociated(prefix, namespace, writer)) {
+        if (isAssociated(prefix, namespace)) {
             return null;
         }
         
@@ -680,11 +474,9 @@ public class OMSerializerUtil {
     /**
      * @param prefix 
      * @param namespace
-     * @param writer
      * @return true if the prefix is associated with the namespace in the current context
      */
-    public static boolean isAssociated(String prefix, String namespace, XMLStreamWriter writer) 
-        throws XMLStreamException {
+    public boolean isAssociated(String prefix, String namespace) throws XMLStreamException {
         
         // The "xml" prefix is always (implicitly) associated. Returning true here makes sure that
         // we never write a declaration for the xml namespace. See AXIOM-37 for a discussion

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/AttrImpl.java Sat Jan 26 21:38:57 2013
@@ -27,6 +27,7 @@ import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.w3c.dom.Attr;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Element;
@@ -37,7 +38,6 @@ import org.w3c.dom.TypeInfo;
 import javax.xml.XMLConstants;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 /** Implementation of <code>org.w3c.dom.Attr</code> and <code>org.apache.axiom.om.OMAttribute</code> */
 public class AttrImpl extends RootNode implements OMAttribute, Attr, NamedNode {
@@ -458,7 +458,7 @@ public class AttrImpl extends RootNode i
                 (namespace != null ? namespace.hashCode() : 0);
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
         throw new UnsupportedOperationException();
     }
 

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/CommentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/CommentImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/CommentImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/CommentImpl.java Sat Jan 26 21:38:57 2013
@@ -22,11 +22,11 @@ package org.apache.axiom.om.impl.dom;
 import org.apache.axiom.om.OMComment;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.w3c.dom.Comment;
 import org.w3c.dom.Node;
 
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 public class CommentImpl extends CharacterImpl implements Comment, OMComment {
     public CommentImpl(String value, OMFactory factory) {
@@ -53,8 +53,8 @@ public class CommentImpl extends Charact
         return OMNode.COMMENT_NODE;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
-        writer.writeComment(this.textValue);
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
+        serializer.getWriter().writeComment(this.textValue);
     }
 
     LeafNode createClone() {

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentFragmentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentFragmentImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentFragmentImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentFragmentImpl.java Sat Jan 26 21:38:57 2013
@@ -25,6 +25,7 @@ import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.common.IContainer;
 import org.apache.axiom.om.impl.common.OMContainerHelper;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.w3c.dom.DocumentFragment;
 import org.w3c.dom.Node;
 
@@ -68,7 +69,7 @@ public class DocumentFragmentImpl extend
         return "#document-fragment";
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
         // TODO
         throw new UnsupportedOperationException("TODO");
     }

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentImpl.java Sat Jan 26 21:38:57 2013
@@ -35,6 +35,7 @@ import org.apache.axiom.om.impl.common.I
 import org.apache.axiom.om.impl.common.OMContainerHelper;
 import org.apache.axiom.om.impl.common.OMDocumentHelper;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.w3c.dom.Attr;
 import org.w3c.dom.CDATASection;
 import org.w3c.dom.Comment;
@@ -54,7 +55,6 @@ import org.w3c.dom.Text;
 
 import javax.xml.XMLConstants;
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 import java.io.OutputStream;
 import java.util.Enumeration;
 import java.util.Hashtable;
@@ -103,8 +103,8 @@ public class DocumentImpl extends RootNo
         return null;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
-        internalSerialize(writer, cache, !((MTOMXMLStreamWriter) writer).isIgnoreXMLDeclaration());
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
+        internalSerialize(serializer, cache, !((MTOMXMLStreamWriter)serializer.getWriter()).isIgnoreXMLDeclaration());
     }
 
     // /
@@ -404,13 +404,13 @@ public class DocumentImpl extends RootNo
     public void serializeAndConsume(OutputStream output, OMOutputFormat format)
             throws XMLStreamException {
         MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format);
-        internalSerialize(writer, false);
+        internalSerialize(new StAXSerializer(writer), false);
         writer.flush();
     }
 
     public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException {
         MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format);
-        internalSerialize(writer, true);
+        internalSerialize(new StAXSerializer(writer), true);
         writer.flush();
     }
 
@@ -569,9 +569,9 @@ public class DocumentImpl extends RootNo
         setXMLVersion(version);
     }
 
-    protected void internalSerialize(XMLStreamWriter writer, boolean cache,
+    protected void internalSerialize(StAXSerializer serializer, boolean cache,
             boolean includeXMLDeclaration) throws XMLStreamException {
-        OMDocumentHelper.internalSerialize(this, writer, cache, includeXMLDeclaration);
+        OMDocumentHelper.internalSerialize(this, serializer, cache, includeXMLDeclaration);
     }
 
     ParentNode shallowClone(OMCloneOptions options, ParentNode targetParent, boolean namespaceRepairing) {

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentTypeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentTypeImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentTypeImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DocumentTypeImpl.java Sat Jan 26 21:38:57 2013
@@ -20,11 +20,11 @@
 package org.apache.axiom.om.impl.dom;
 
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.axiom.om.OMDocType;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.impl.OMNodeEx;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.util.stax.XMLStreamWriterUtils;
 import org.w3c.dom.DocumentType;
 import org.w3c.dom.NamedNodeMap;
@@ -52,8 +52,8 @@ public class DocumentTypeImpl extends Le
         return DOCUMENT_TYPE_NODE;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
-        XMLStreamWriterUtils.writeDTD(writer, rootName, publicId, systemId, internalSubset);
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
+        XMLStreamWriterUtils.writeDTD(serializer.getWriter(), rootName, publicId, systemId, internalSubset);
     }
 
     public int getType() {

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java Sat Jan 26 21:38:57 2013
@@ -36,6 +36,7 @@ import org.apache.axiom.om.impl.common.O
 import org.apache.axiom.om.impl.common.OMElementHelper;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
 import org.apache.axiom.om.impl.common.OMNodeHelper;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.om.impl.traverse.OMQNameFilterIterator;
 import org.apache.axiom.om.impl.traverse.OMQualifiedNameFilterIterator;
 import org.apache.axiom.om.impl.util.EmptyIterator;
@@ -55,7 +56,6 @@ import javax.xml.XMLConstants;
 import javax.xml.namespace.NamespaceContext;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.Reader;
@@ -883,15 +883,15 @@ public class ElementImpl extends ParentN
         }
     }
 
-    public void internalSerialize(XMLStreamWriter writer,
+    public void internalSerialize(StAXSerializer serializer,
                                      boolean cache) throws XMLStreamException {
 
         if (cache || state == COMPLETE || (this.builder == null)) {
-            OMSerializerUtil.serializeStartpart(this, writer);
-            OMSerializerUtil.serializeChildren(this, writer, cache);
-            OMSerializerUtil.serializeEndpart(writer);
+            serializer.serializeStartpart(this);
+            serializer.serializeChildren(this, cache);
+            serializer.serializeEndpart();
         } else {
-            OMSerializerUtil.serializeByPullStream(this, writer, cache);
+            serializer.serializeByPullStream(this, cache);
         }
     }
 

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/EntityReferenceImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/EntityReferenceImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/EntityReferenceImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/EntityReferenceImpl.java Sat Jan 26 21:38:57 2013
@@ -19,11 +19,11 @@
 package org.apache.axiom.om.impl.dom;
 
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.axiom.om.OMEntityReference;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.w3c.dom.EntityReference;
 import org.w3c.dom.Node;
 
@@ -41,8 +41,8 @@ public class EntityReferenceImpl extends
         return OMNode.ENTITY_REFERENCE_NODE;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
-        writer.writeEntityRef(name);
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
+        serializer.getWriter().writeEntityRef(name);
     }
 
     public String getName() {

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/NodeImpl.java Sat Jan 26 21:38:57 2013
@@ -30,6 +30,7 @@ import org.apache.axiom.om.OMXMLParserWr
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
 import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 import org.w3c.dom.DOMException;
@@ -744,7 +745,7 @@ public abstract class NodeImpl implement
         MTOMXMLStreamWriter writer = xmlWriter instanceof MTOMXMLStreamWriter ?
                 (MTOMXMLStreamWriter) xmlWriter : 
                     new MTOMXMLStreamWriter(xmlWriter);
-        internalSerialize(writer, cache);
+        internalSerialize(new StAXSerializer(writer), cache);
         writer.flush();
     }
 
@@ -789,7 +790,7 @@ public abstract class NodeImpl implement
             throws XMLStreamException {
         MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format, true);
         try {
-            internalSerialize(writer, true);
+            internalSerialize(new StAXSerializer(writer), true);
             // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
             writer.flush();
         } finally {
@@ -803,7 +804,7 @@ public abstract class NodeImpl implement
                 .createXMLStreamWriter(writer2));
         writer.setOutputFormat(format);
         try {
-            internalSerialize(writer, true);
+            internalSerialize(new StAXSerializer(writer), true);
             // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
             writer.flush();
         } finally {
@@ -815,7 +816,7 @@ public abstract class NodeImpl implement
             throws XMLStreamException {
         MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format, false);
         try {
-            internalSerialize(writer, false);
+            internalSerialize(new StAXSerializer(writer), false);
             // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
             writer.flush();
         } finally {
@@ -830,16 +831,16 @@ public abstract class NodeImpl implement
         try {
             writer.setOutputFormat(format);
             // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
-            internalSerialize(writer, false);
+            internalSerialize(new StAXSerializer(writer), false);
             writer.flush();
         } finally {
             writer.close();
         }
     }
 
-    // This method is actually defined by OMNodeEx, but OMNodeEx is only implemented
+    // This method is actually defined by ISerializable, but ISerializable is only implemented
     // by certain subclasses (for the reason, see AXIOM-385).
-    public abstract void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException;
+    public abstract void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException;
     
     public final OMInformationItem clone(OMCloneOptions options) {
         return (OMInformationItem)clone(options, null, true, true);

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ProcessingInstructionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ProcessingInstructionImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ProcessingInstructionImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ProcessingInstructionImpl.java Sat Jan 26 21:38:57 2013
@@ -20,12 +20,12 @@
 package org.apache.axiom.om.impl.dom;
 
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMProcessingInstruction;
 import org.apache.axiom.om.impl.OMNodeEx;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Node;
 import org.w3c.dom.ProcessingInstruction;
@@ -81,8 +81,8 @@ public class ProcessingInstructionImpl e
         return value;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
-        writer.writeProcessingInstruction(target + " ", value);
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
+        serializer.getWriter().writeProcessingInstruction(target + " ", value);
     }
 
     LeafNode createClone() {

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/TextNodeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/TextNodeImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/TextNodeImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/TextNodeImpl.java Sat Jan 26 21:38:57 2013
@@ -28,6 +28,7 @@ import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMText;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.util.UIDGenerator;
 import org.apache.axiom.util.base64.Base64Utils;
 import org.apache.axiom.util.stax.XMLStreamWriterUtils;
@@ -358,17 +359,17 @@ public abstract class TextNodeImpl exten
         }
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache)
+    public void internalSerialize(StAXSerializer serializer, boolean cache)
             throws XMLStreamException {
         if (!this.isBinary) {
-            writeOutput(writer);
+            writeOutput(serializer.getWriter());
         } else {
             try {
                 if (dataHandlerObject instanceof DataHandlerProvider) {
-                    XMLStreamWriterUtils.writeDataHandler(writer, (DataHandlerProvider)dataHandlerObject,
+                    XMLStreamWriterUtils.writeDataHandler(serializer.getWriter(), (DataHandlerProvider)dataHandlerObject,
                             contentID, optimize);
                 } else {
-                    XMLStreamWriterUtils.writeDataHandler(writer, (DataHandler)getDataHandler(),
+                    XMLStreamWriterUtils.writeDataHandler(serializer.getWriter(), (DataHandler)getDataHandler(),
                             contentID, optimize);
                 }
             } catch (IOException ex) {

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java Sat Jan 26 21:38:57 2013
@@ -31,6 +31,8 @@ import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
 import org.apache.axiom.om.impl.OMNodeEx;
+import org.apache.axiom.om.impl.common.StAXSerializer;
+import org.apache.axiom.om.impl.dom.NodeImpl;
 import org.apache.axiom.om.impl.dom.ParentNode;
 import org.apache.axiom.om.impl.util.OMSerializerUtil;
 import org.apache.axiom.soap.SOAP11Constants;
@@ -189,10 +191,10 @@ public class SOAPEnvelopeImpl extends SO
         // here do nothing as SOAPEnvelope doesn't have a parent !!!
     }
 
-    public void internalSerialize(XMLStreamWriter writer2, boolean cache)
+    public void internalSerialize(StAXSerializer serializer, boolean cache)
             throws XMLStreamException {
 
-        MTOMXMLStreamWriter writer = (MTOMXMLStreamWriter) writer2;
+        MTOMXMLStreamWriter writer = (MTOMXMLStreamWriter)serializer.getWriter();
         if (!writer.isIgnoreXMLDeclaration()) {
             String charSetEncoding = writer.getCharSetEncoding();
             String xmlVersion = writer.getXmlVersion();
@@ -203,18 +205,18 @@ public class SOAPEnvelopeImpl extends SO
                             : xmlVersion);
         }
         if (cache || state == COMPLETE || builder == null) {
-            OMSerializerUtil.serializeStartpart(this, writer);
+            serializer.serializeStartpart(this);
             //serialize children
             for (Iterator it = getChildren(); it.hasNext(); ) {
-            	OMNodeEx child = (OMNodeEx)it.next();
+            	NodeImpl child = (NodeImpl)it.next();
             	// Skip empty SOAPHeader (compatibility with previous Axiom versions; see AXIOM-340)
             	if (!(child instanceof SOAPHeader && ((SOAPHeader)child).getFirstOMChild() == null)) {
-            		child.internalSerialize(writer, cache);
+            		child.internalSerialize(serializer, cache);
             	}
             }
-            OMSerializerUtil.serializeEndpart(writer);
+            serializer.serializeEndpart();
         } else {
-            OMSerializerUtil.serializeByPullStream(this, writer, cache);
+            serializer.serializeByPullStream(this, cache);
         }
     }
 

Modified: webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java Sat Jan 26 21:38:57 2013
@@ -23,15 +23,15 @@ import org.apache.axiom.om.OMCloneOption
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.impl.OMNodeEx;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.om.impl.dom.DocumentImpl;
+import org.apache.axiom.om.impl.dom.NodeImpl;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPMessage;
 import org.apache.axiom.soap.SOAPProcessingException;
 
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 public class SOAPMessageImpl extends DocumentImpl implements SOAPMessage {
 
@@ -58,9 +58,9 @@ public class SOAPMessageImpl extends Doc
         }
     }
 
-    protected void internalSerialize(XMLStreamWriter writer, boolean cache,
+    protected void internalSerialize(StAXSerializer serializer, boolean cache,
                                      boolean includeXMLDeclaration) throws XMLStreamException {
-        ((OMNodeEx)getOwnerDocument().getDocumentElement()).internalSerialize(writer, cache);
+        ((NodeImpl)getOwnerDocument().getDocumentElement()).internalSerialize(serializer, cache);
     }
 
     protected DocumentImpl createClone(OMCloneOptions options) {

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMCommentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMCommentImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMCommentImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMCommentImpl.java Sat Jan 26 21:38:57 2013
@@ -24,9 +24,9 @@ import org.apache.axiom.om.OMComment;
 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.StAXSerializer;
 
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 public class OMCommentImpl extends OMLeafNode implements OMComment {
     protected String value;
@@ -47,8 +47,8 @@ public class OMCommentImpl extends OMLea
         return OMNode.COMMENT_NODE;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
-        writer.writeComment(this.value);
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
+        serializer.getWriter().writeComment(this.value);
     }
 
     /**

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocTypeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocTypeImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocTypeImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocTypeImpl.java Sat Jan 26 21:38:57 2013
@@ -24,10 +24,10 @@ import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMDocType;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.util.stax.XMLStreamWriterUtils;
 
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 public class OMDocTypeImpl extends OMLeafNode implements OMDocType {
     private final String rootName;
@@ -48,8 +48,8 @@ public class OMDocTypeImpl extends OMLea
         return OMNode.DTD_NODE;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
-        XMLStreamWriterUtils.writeDTD(writer, rootName, publicId, systemId, internalSubset);
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
+        XMLStreamWriterUtils.writeDTD(serializer.getWriter(), rootName, publicId, systemId, internalSubset);
     }
 
     public String getRootName() {

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java Sat Jan 26 21:38:57 2013
@@ -36,13 +36,13 @@ import org.apache.axiom.om.impl.common.O
 import org.apache.axiom.om.impl.common.OMContainerHelper;
 import org.apache.axiom.om.impl.common.OMDescendantsIterator;
 import org.apache.axiom.om.impl.common.OMDocumentHelper;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.om.impl.jaxp.OMSource;
 import org.apache.axiom.om.impl.traverse.OMChildrenIterator;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
 import javax.xml.transform.sax.SAXSource;
 
 import java.util.Iterator;
@@ -289,13 +289,13 @@ public class OMDocumentImpl extends OMSe
         this.xmlEncoding = encoding;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
-        internalSerialize(writer, cache, !((MTOMXMLStreamWriter) writer).isIgnoreXMLDeclaration());
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
+        internalSerialize(serializer, cache, !((MTOMXMLStreamWriter)serializer.getWriter()).isIgnoreXMLDeclaration());
     }
 
-    protected void internalSerialize(XMLStreamWriter writer, boolean cache,
+    protected void internalSerialize(StAXSerializer serializer, boolean cache,
                                      boolean includeXMLDeclaration) throws XMLStreamException {
-        OMDocumentHelper.internalSerialize(this, writer, cache, includeXMLDeclaration);
+        OMDocumentHelper.internalSerialize(this, serializer, cache, includeXMLDeclaration);
     }
 
     public XMLStreamReader getXMLStreamReader() {

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java Sat Jan 26 21:38:57 2013
@@ -43,6 +43,7 @@ import org.apache.axiom.om.impl.common.O
 import org.apache.axiom.om.impl.common.OMDescendantsIterator;
 import org.apache.axiom.om.impl.common.OMElementHelper;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.om.impl.jaxp.OMSource;
 import org.apache.axiom.om.impl.traverse.OMChildrenIterator;
 import org.apache.axiom.om.impl.util.EmptyIterator;
@@ -785,15 +786,15 @@ public class OMElementImpl extends OMNod
 ///////////////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////////////
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache)
+    public void internalSerialize(StAXSerializer serializer, boolean cache)
             throws XMLStreamException {
 
         if (cache || state == COMPLETE || (this.builder == null)) {
-            OMSerializerUtil.serializeStartpart(this, writer);
-            OMSerializerUtil.serializeChildren(this, writer, cache);
-            OMSerializerUtil.serializeEndpart(writer);
+            serializer.serializeStartpart(this);
+            serializer.serializeChildren(this, cache);
+            serializer.serializeEndpart();
         } else {
-            OMSerializerUtil.serializeByPullStream(this, writer, cache);
+            serializer.serializeByPullStream(this, cache);
         }
     }
 

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMEntityReferenceImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMEntityReferenceImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMEntityReferenceImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMEntityReferenceImpl.java Sat Jan 26 21:38:57 2013
@@ -19,13 +19,13 @@
 package org.apache.axiom.om.impl.llom;
 
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 import org.apache.axiom.om.OMCloneOptions;
 import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMEntityReference;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 
 public class OMEntityReferenceImpl extends OMLeafNode implements OMEntityReference {
     private final String name;
@@ -42,8 +42,8 @@ public class OMEntityReferenceImpl exten
         return OMNode.ENTITY_REFERENCE_NODE;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
-        writer.writeEntityRef(name);
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
+        serializer.getWriter().writeEntityRef(name);
     }
 
     public String getName() {

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMProcessingInstructionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMProcessingInstructionImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMProcessingInstructionImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMProcessingInstructionImpl.java Sat Jan 26 21:38:57 2013
@@ -24,9 +24,9 @@ import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMProcessingInstruction;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 public class OMProcessingInstructionImpl extends OMLeafNode implements OMProcessingInstruction {
     protected String target;
@@ -50,8 +50,8 @@ public class OMProcessingInstructionImpl
         return OMNode.PI_NODE;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
-        writer.writeProcessingInstruction(this.target + " ", this.value);
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
+        serializer.getWriter().writeProcessingInstruction(this.target + " ", this.value);
     }
 
     /**

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java Sat Jan 26 21:38:57 2013
@@ -25,20 +25,19 @@ import java.io.Writer;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 
-import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMOutputFormat;
-import org.apache.axiom.om.OMSerializable;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
 import org.apache.axiom.om.impl.builder.StAXBuilder;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.common.ISerializable;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-public abstract class OMSerializableImpl implements OMSerializable {
+public abstract class OMSerializableImpl implements ISerializable {
     private static final Log log = LogFactory.getLog(OMSerializableImpl.class);
     
     protected OMFactory factory;
@@ -72,14 +71,6 @@ public abstract class OMSerializableImpl
     
     public abstract void setComplete(boolean state);
 
-    /**
-     * Serializes the node.
-     *
-     * @param writer
-     * @throws XMLStreamException
-     */
-    public abstract void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException;
-
     public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException {
         serialize(xmlWriter, true);
     }
@@ -93,7 +84,7 @@ public abstract class OMSerializableImpl
         MTOMXMLStreamWriter writer = xmlWriter instanceof MTOMXMLStreamWriter ?
                 (MTOMXMLStreamWriter) xmlWriter : 
                     new MTOMXMLStreamWriter(xmlWriter);
-        internalSerialize(writer, cache);
+        internalSerialize(new StAXSerializer(writer), cache);
         writer.flush();
     }
 
@@ -136,7 +127,7 @@ public abstract class OMSerializableImpl
     public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException {
         MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format, true);
         try {
-            internalSerialize(writer, true);
+            internalSerialize(new StAXSerializer(writer), true);
             // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
             writer.flush();
         } finally {
@@ -149,7 +140,7 @@ public abstract class OMSerializableImpl
                 new MTOMXMLStreamWriter(StAXUtils.createXMLStreamWriter(writer2));
         writer.setOutputFormat(format);
         try {
-            internalSerialize(writer, true);
+            internalSerialize(new StAXSerializer(writer), true);
             // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
             writer.flush();
         } finally {
@@ -161,7 +152,7 @@ public abstract class OMSerializableImpl
             throws XMLStreamException {
         MTOMXMLStreamWriter writer = new MTOMXMLStreamWriter(output, format, false);
         try {
-            internalSerialize(writer, false);
+            internalSerialize(new StAXSerializer(writer), false);
             // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
             writer.flush();
         } finally {
@@ -175,7 +166,7 @@ public abstract class OMSerializableImpl
                 new MTOMXMLStreamWriter(StAXUtils.createXMLStreamWriter(writer2));
         writer.setOutputFormat(format);
         try {
-            internalSerialize(writer, false);
+            internalSerialize(new StAXSerializer(writer), false);
             // TODO: the flush is necessary because of an issue with the lifecycle of MTOMXMLStreamWriter
             writer.flush();
         } finally {

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java Sat Jan 26 21:38:57 2013
@@ -38,6 +38,7 @@ import org.apache.axiom.om.QNameAwareOMD
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.om.impl.common.OMDataSourceUtil;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.om.util.StAXUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -705,25 +706,25 @@ public class OMSourcedElementImpl extend
         return super.getType();
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache)
+    public void internalSerialize(StAXSerializer serializer, boolean cache)
             throws XMLStreamException {
         if (isExpanded()) {
-            super.internalSerialize(writer, cache);
+            super.internalSerialize(serializer, cache);
         } else if (cache) {
             if (OMDataSourceUtil.isDestructiveWrite(dataSource)) {
                 forceExpand();
-                super.internalSerialize(writer, true);
+                super.internalSerialize(serializer, true);
             } else {
-                dataSource.serialize(writer);
+                dataSource.serialize(serializer.getWriter());
             }
         } else {
-            dataSource.serialize(writer); 
+            dataSource.serialize(serializer.getWriter()); 
         }
     }
 
     public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException {
         // The contract is to serialize with caching
-        internalSerialize(xmlWriter, true);
+        internalSerialize(new StAXSerializer(xmlWriter), true);
     }
 
     public void serialize(OutputStream output) throws XMLStreamException {
@@ -760,7 +761,7 @@ public class OMSourcedElementImpl extend
 
     public void serializeAndConsume(javax.xml.stream.XMLStreamWriter xmlWriter)
             throws XMLStreamException {
-        internalSerialize(xmlWriter, false);
+        internalSerialize(new StAXSerializer(xmlWriter), false);
     }
 
     public void serializeAndConsume(OutputStream output) throws XMLStreamException {

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMTextImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMTextImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMTextImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMTextImpl.java Sat Jan 26 21:38:57 2013
@@ -30,6 +30,7 @@ import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMText;
 import org.apache.axiom.om.impl.common.OMNamespaceImpl;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.util.UIDGenerator;
 import org.apache.axiom.util.base64.Base64Utils;
 import org.apache.axiom.util.stax.XMLStreamWriterUtils;
@@ -370,17 +371,17 @@ public class OMTextImpl extends OMLeafNo
         return this.contentID;
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException {
+    public void internalSerialize(StAXSerializer serializer, boolean cache) throws XMLStreamException {
 
         if (!this.isBinary) {
-            writeOutput(writer);
+            writeOutput(serializer.getWriter());
         } else {
             try {
                 if (dataHandlerObject instanceof DataHandlerProvider) {
-                    XMLStreamWriterUtils.writeDataHandler(writer, (DataHandlerProvider)dataHandlerObject,
+                    XMLStreamWriterUtils.writeDataHandler(serializer.getWriter(), (DataHandlerProvider)dataHandlerObject,
                             contentID, optimize);
                 } else {
-                    XMLStreamWriterUtils.writeDataHandler(writer, (DataHandler)getDataHandler(),
+                    XMLStreamWriterUtils.writeDataHandler(serializer.getWriter(), (DataHandler)getDataHandler(),
                             contentID, optimize);
                 }
             } catch (IOException ex) {

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java Sat Jan 26 21:38:57 2013
@@ -32,9 +32,9 @@ import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
-import org.apache.axiom.om.impl.OMNodeEx;
-import org.apache.axiom.om.impl.util.OMSerializerUtil;
+import org.apache.axiom.om.impl.llom.OMNodeImpl;
 import org.apache.axiom.om.impl.builder.StAXBuilder;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAP12Version;
@@ -192,9 +192,9 @@ public class SOAPEnvelopeImpl extends SO
         // here do nothing as SOAPEnvelope doesn't have a parent !!!
     }
 
-    public void internalSerialize(XMLStreamWriter writer2, boolean cache)
+    public void internalSerialize(StAXSerializer serializer, boolean cache)
             throws XMLStreamException {
-        MTOMXMLStreamWriter writer = (MTOMXMLStreamWriter) writer2;
+        MTOMXMLStreamWriter writer = (MTOMXMLStreamWriter)serializer.getWriter();
         if (!writer.isIgnoreXMLDeclaration()) {
             String charSetEncoding = writer.getCharSetEncoding();
             String xmlVersion = writer.getXmlVersion();
@@ -204,18 +204,18 @@ public class SOAPEnvelopeImpl extends SO
                     xmlVersion == null ? OMConstants.DEFAULT_XML_VERSION : xmlVersion);
         }
         if (cache || state == COMPLETE || builder == null) {
-            OMSerializerUtil.serializeStartpart(this, writer);
+            serializer.serializeStartpart(this);
             //serialize children
             for (Iterator it = getChildren(); it.hasNext(); ) {
-            	OMNodeEx child = (OMNodeEx)it.next();
+            	OMNodeImpl child = (OMNodeImpl)it.next();
             	// Skip empty SOAPHeader (compatibility with previous Axiom versions; see AXIOM-340)
             	if (!(child instanceof SOAPHeader && ((SOAPHeader)child).getFirstOMChild() == null)) {
-            		child.internalSerialize(writer, cache);
+            		child.internalSerialize(serializer, cache);
             	}
             }
-            OMSerializerUtil.serializeEndpart(writer);
+            serializer.serializeEndpart();
         } else {
-            OMSerializerUtil.serializeByPullStream(this, writer, cache);
+            serializer.serializeByPullStream(this, cache);
         }
         if (!cache) {
             // let's try to close the builder/parser here since we are now done with the

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPFaultImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPFaultImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPFaultImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPFaultImpl.java Sat Jan 26 21:38:57 2013
@@ -26,9 +26,9 @@ import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.impl.OMNodeEx;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.om.impl.llom.OMElementImpl;
-import org.apache.axiom.om.impl.util.OMSerializerUtil;
+import org.apache.axiom.om.impl.llom.OMNodeImpl;
 import org.apache.axiom.soap.SOAPBody;
 import org.apache.axiom.soap.SOAPConstants;
 import org.apache.axiom.soap.SOAPFactory;
@@ -40,7 +40,6 @@ import org.apache.axiom.soap.SOAPProcess
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.Iterator;
@@ -123,17 +122,17 @@ public abstract class SOAPFaultImpl exte
         faultDetailEnty.setText(sw.getBuffer().toString());
     }
 
-    public void internalSerialize(XMLStreamWriter writer, boolean cache)
+    public void internalSerialize(StAXSerializer serializer, boolean cache)
             throws XMLStreamException {
-        OMSerializerUtil.serializeStartpart(this, writer);
+        serializer.serializeStartpart(this);
         for (Iterator it = getChildren(); it.hasNext(); ) {
-            OMNodeEx child = (OMNodeEx)it.next();
+            OMNodeImpl child = (OMNodeImpl)it.next();
             // TODO: AXIOM-392
             if (!((child instanceof SOAPFaultRole || child instanceof SOAPFaultNode) && ((OMElement)child).getText().length() == 0)) {
-                child.internalSerialize(writer, true);
+                child.internalSerialize(serializer, true);
             }
         }
-        OMSerializerUtil.serializeEndpart(writer);
+        serializer.serializeEndpart();
     }
 
     protected OMElement createClone(OMCloneOptions options, OMContainer targetParent) {

Modified: webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java (original)
+++ webservices/axiom/trunk/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java Sat Jan 26 21:38:57 2013
@@ -24,15 +24,15 @@ import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.om.impl.OMNodeEx;
+import org.apache.axiom.om.impl.common.StAXSerializer;
 import org.apache.axiom.om.impl.llom.OMDocumentImpl;
+import org.apache.axiom.om.impl.llom.OMNodeImpl;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPMessage;
 import org.apache.axiom.soap.SOAPProcessingException;
 
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 
 public class SOAPMessageImpl extends OMDocumentImpl implements SOAPMessage {
 
@@ -60,9 +60,9 @@ public class SOAPMessageImpl extends OMD
         }
     }
 
-    protected void internalSerialize(XMLStreamWriter writer, boolean cache,
+    protected void internalSerialize(StAXSerializer serializer, boolean cache,
                                      boolean includeXMLDeclaration) throws XMLStreamException {
-        ((OMNodeEx)getOMDocumentElement()).internalSerialize(writer, cache);
+        ((OMNodeImpl)getOMDocumentElement()).internalSerialize(serializer, cache);
     }
 
     protected OMDocument createClone(OMCloneOptions options) {

Modified: webservices/axiom/trunk/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/factory/TestCreateOMAttributeNullPrefixNoNamespace.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/factory/TestCreateOMAttributeNullPrefixNoNamespace.java?rev=1438968&r1=1438967&r2=1438968&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/factory/TestCreateOMAttributeNullPrefixNoNamespace.java (original)
+++ webservices/axiom/trunk/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/factory/TestCreateOMAttributeNullPrefixNoNamespace.java Sat Jan 26 21:38:57 2013
@@ -19,11 +19,10 @@
 package org.apache.axiom.ts.om.factory;
 
 import org.apache.axiom.om.OMAttribute;
-import org.apache.axiom.om.OMContainer;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.OMSerializable;
 import org.apache.axiom.ts.AxiomTestCase;
 
 /**
@@ -46,7 +45,6 @@ public class TestCreateOMAttributeNullPr
         // An OMAttribute is neither an OMNode nor an OMContainer. For the latter this is in
         // contrast to DOM where an Attr node is a parent node (containing Text and EntityReference
         // nodes).
-        assertFalse(attr instanceof OMNode);
-        assertFalse(attr instanceof OMContainer);
+        assertFalse(attr instanceof OMSerializable);
     }
 }