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 2012/07/14 09:34:52 UTC

svn commit: r1361483 [2/2] - in /webservices/axiom/branches/AXIOM-201: ./ modules/axiom-api/src/main/java/org/apache/axiom/om/ modules/axiom-api/src/main/java/org/apache/axiom/om/impl/ modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/ m...

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ParentNode.java Sat Jul 14 07:34:50 2012
@@ -26,11 +26,10 @@ import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMSourcedElement;
-import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.OMXMLStreamReaderConfiguration;
-import org.apache.axiom.om.impl.OMContainerEx;
 import org.apache.axiom.om.impl.OMNodeEx;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
+import org.apache.axiom.om.impl.common.IContainer;
+import org.apache.axiom.om.impl.common.IParentNode;
 import org.apache.axiom.om.impl.common.OMChildrenLocalNameIterator;
 import org.apache.axiom.om.impl.common.OMChildrenNamespaceIterator;
 import org.apache.axiom.om.impl.common.OMChildrenQNameIterator;
@@ -49,7 +48,7 @@ import javax.xml.transform.sax.SAXSource
 
 import java.util.Iterator;
 
-public abstract class ParentNode extends NodeImpl implements NodeList {
+public abstract class ParentNode extends NodeImpl implements NodeList, IParentNode {
 
     protected NodeImpl firstChild;
 
@@ -72,22 +71,7 @@ public abstract class ParentNode extends
     }
 
     public void addChild(OMNode omNode, boolean fromBuilder) {
-        OMContainerHelper.addChild((OMContainerEx)this, omNode, fromBuilder);
-    }
-
-    public void buildNext() {
-        OMXMLParserWrapper builder = getBuilder();
-        if (builder != null) {
-            if (((StAXOMBuilder)builder).isClosed()) {
-                throw new OMException("The builder has already been closed");
-            } else if (!builder.isCompleted()) {
-                builder.next();
-            } else {
-                // If the builder is suddenly complete, but the completion status of the node
-                // doesn't change, then this means that we built the wrong nodes
-                throw new IllegalStateException("Builder is already complete");
-            }         
-        }
+        OMContainerHelper.addChild((IContainer)this, omNode, fromBuilder);
     }
 
     public Iterator getChildren() {
@@ -139,10 +123,7 @@ public abstract class ParentNode extends
     }
 
     public OMNode getFirstOMChild() {
-        while ((firstChild == null) && !isComplete()) {
-            buildNext();
-        }
-        return (OMNode)firstChild;
+        return OMContainerHelper.getFirstOMChild(this);
     }
 
     public OMNode getFirstOMChildIfAvailable() {
@@ -212,10 +193,7 @@ public abstract class ParentNode extends
     }
 
     public boolean hasChildNodes() {
-        while ((firstChild == null) && !isComplete()) {
-            buildNext();
-        }
-        return this.firstChild != null;
+        return getFirstChild() != null;
     }
 
     public final Node appendChild(Node newChild) throws DOMException {
@@ -577,11 +555,11 @@ public abstract class ParentNode extends
     }
 
     public XMLStreamReader getXMLStreamReader(boolean cache) {
-        return OMContainerHelper.getXMLStreamReader((OMContainer)this, cache);
+        return OMContainerHelper.getXMLStreamReader((IContainer)this, cache);
     }
     
     public XMLStreamReader getXMLStreamReader(boolean cache, OMXMLStreamReaderConfiguration configuration) {
-        return OMContainerHelper.getXMLStreamReader((OMContainer)this, cache, configuration);
+        return OMContainerHelper.getXMLStreamReader((IContainer)this, cache, configuration);
     }
 
     public SAXSource getSAXSource(boolean cache) {

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java Sat Jul 14 07:34:50 2012
@@ -22,11 +22,14 @@ package org.apache.axiom.om.impl.dom.fac
 import javax.xml.parsers.DocumentBuilderFactory;
 
 import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.dom.DOMMetaFactory;
 import org.apache.axiom.om.impl.common.factory.AbstractOMMetaFactory;
 import org.apache.axiom.om.impl.dom.DOMImplementationImpl;
 import org.apache.axiom.om.impl.dom.jaxp.DOOMDocumentBuilderFactory;
 import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPMessage;
+import org.apache.axiom.soap.impl.dom.SOAPMessageImpl;
 import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
 import org.apache.axiom.soap.impl.dom.soap12.SOAP12Factory;
 import org.w3c.dom.DOMImplementation;
@@ -56,6 +59,10 @@ public class OMDOMMetaFactory extends Ab
         return soap12Factory;
     }
 
+    public SOAPMessage createSOAPMessage(OMXMLParserWrapper builder) {
+        return new SOAPMessageImpl(builder, null);
+    }
+
     public DocumentBuilderFactory newDocumentBuilderFactory() {
         return new DOOMDocumentBuilderFactory(omFactory);
     }

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPEnvelopeImpl.java Sat Jul 14 07:34:50 2012
@@ -28,7 +28,6 @@ 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.dom.DocumentImpl;
 import org.apache.axiom.om.impl.dom.NodeImpl;
 import org.apache.axiom.om.impl.dom.ParentNode;
 import org.apache.axiom.om.impl.util.OMSerializerUtil;
@@ -111,7 +110,7 @@ public class SOAPEnvelopeImpl extends SO
             // The SOAPHeader is added before the SOAPBody
             // We must be sensitive to the state of the parser.  It is possible that the
             // has not been processed yet.
-            if (this.done) {
+            if (state == COMPLETE) {
                 // Parsing is complete, therefore it is safe to
                 // call getBody.
                 SOAPBody body = getBody();
@@ -227,7 +226,7 @@ public class SOAPEnvelopeImpl extends SO
         } else {
             //Now the caching is supposed to be off. However caching been switched off
             //has nothing to do if the element is already built!
-            if (this.done || (this.builder == null)) {
+            if (state == COMPLETE || (this.builder == null)) {
                 OMSerializerUtil.serializeStartpart(this, writer);
                 OMElement header = getHeader();
                 if ((header != null) && (header.getFirstOMChild() != null)) {
@@ -256,14 +255,6 @@ public class SOAPEnvelopeImpl extends SO
 //        child = (NodeImpl) child.getNextOMSibling();
     }
 
-    public OMNode getNextOMSibling() throws OMException {
-        DocumentImpl ownerDocument = (DocumentImpl)getOwnerDocument();
-        if (ownerDocument != null && !ownerDocument.isComplete()) {
-            ownerDocument.setComplete(true);
-        }
-        return null;
-    }
-
     public boolean hasFault() {      
         QName payloadQName = this.getPayloadQName_Optimized();
         if (payloadQName != null) {

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPFaultNodeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPFaultNodeImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPFaultNodeImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPFaultNodeImpl.java Sat Jul 14 07:34:50 2012
@@ -82,7 +82,7 @@ public abstract class SOAPFaultNodeImpl 
                 OMSerializerUtil.serializeStartpart(this, writer);
                 firstChild.internalSerialize(writer, false);
                 OMSerializerUtil.serializeEndpart(writer);
-            } else if (!this.done) {
+            } else if (state == INCOMPLETE) {
                 if (builderType == PULL_TYPE_BUILDER) {
                     OMSerializerUtil.serializeByPullStream(this, writer);
                 } else {

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPFaultRoleImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPFaultRoleImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPFaultRoleImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPFaultRoleImpl.java Sat Jul 14 07:34:50 2012
@@ -78,7 +78,7 @@ public abstract class SOAPFaultRoleImpl 
                 OMSerializerUtil.serializeStartpart(this, writer);
                 firstChild.internalSerialize(writer, false);
                 OMSerializerUtil.serializeEndpart(writer);
-            } else if (!this.done) {
+            } else if (state == INCOMPLETE) {
                 if (builderType == PULL_TYPE_BUILDER) {
                     OMSerializerUtil.serializeByPullStream(this, writer);
                 } else {

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPMessageImpl.java Sat Jul 14 07:34:50 2012
@@ -36,15 +36,8 @@ public class SOAPMessageImpl extends Doc
         super(factory);
     }
 
-    public SOAPMessageImpl(SOAPEnvelope envelope,
-                           OMXMLParserWrapper parserWrapper, SOAPFactory factory) {
-        this(parserWrapper, factory);
-        this.setSOAPEnvelope(envelope);
-    }
-
     public SOAPMessageImpl(OMXMLParserWrapper parserWrapper, SOAPFactory factory) {
-        super(factory);
-        this.builder = parserWrapper;
+        super(parserWrapper, factory);
     }
 
 

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/factory/DOMSOAPFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/factory/DOMSOAPFactory.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/factory/DOMSOAPFactory.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/factory/DOMSOAPFactory.java Sat Jul 14 07:34:50 2012
@@ -22,6 +22,7 @@ package org.apache.axiom.soap.impl.dom.f
 import org.apache.axiom.om.OMDataSource;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.impl.dom.ParentNode;
 import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
 import org.apache.axiom.om.impl.dom.factory.OMDOMMetaFactory;
 import org.apache.axiom.soap.SOAPBody;
@@ -55,12 +56,8 @@ public abstract class DOMSOAPFactory ext
         return new SOAPMessageImpl(builder, this);
     }
 
-    public SOAPMessage createSOAPMessage(SOAPEnvelope envelope, OMXMLParserWrapper parserWrapper) {
-        return new SOAPMessageImpl(envelope, parserWrapper, this);
-    }
-
-    public SOAPEnvelope createSOAPEnvelope(OMXMLParserWrapper builder) {
-        return new SOAPEnvelopeImpl(null, null, builder, this, false);
+    public SOAPEnvelope createSOAPEnvelope(SOAPMessage message, OMXMLParserWrapper builder) {
+        return new SOAPEnvelopeImpl((ParentNode)message, null, builder, this, false);
     }
 
     public SOAPFault createSOAPFault(SOAPBody parent) throws SOAPProcessingException {

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMDocumentImpl.java Sat Jul 14 07:34:50 2012
@@ -27,7 +27,7 @@ import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.OMXMLStreamReaderConfiguration;
 import org.apache.axiom.om.impl.MTOMXMLStreamWriter;
-import org.apache.axiom.om.impl.OMContainerEx;
+import org.apache.axiom.om.impl.common.IContainer;
 import org.apache.axiom.om.impl.common.OMChildrenLocalNameIterator;
 import org.apache.axiom.om.impl.common.OMChildrenNamespaceIterator;
 import org.apache.axiom.om.impl.common.OMChildrenQNameIterator;
@@ -46,10 +46,10 @@ import javax.xml.transform.sax.SAXSource
 import java.util.Iterator;
 
 /** Class OMDocumentImpl */
-public class OMDocumentImpl extends OMSerializableImpl implements OMDocument, OMContainerEx {
+public class OMDocumentImpl extends OMSerializableImpl implements OMDocument, IContainer {
     protected OMXMLParserWrapper builder;
 
-    protected boolean done;
+    protected int state;
 
     /** Field firstChild */
     protected OMNode firstChild;
@@ -74,7 +74,7 @@ public class OMDocumentImpl extends OMSe
      */
     public OMDocumentImpl(OMFactory factory) {
         super(factory);
-        this.done = true;
+        state = COMPLETE;
     }
 
     /**
@@ -88,21 +88,6 @@ public class OMDocumentImpl extends OMSe
         this.builder = parserWrapper;
     }
 
-    /**
-     * Create the <code>OMDoucment</code> with the factory and set the given <code>OMElement</code>
-     * as the document element
-     *
-     * @param documentElement
-     * @param parserWrapper
-     * @param factory
-     */
-    public OMDocumentImpl(OMElement documentElement, OMXMLParserWrapper parserWrapper,
-                          OMFactory factory) {
-        super(factory);
-        this.builder = parserWrapper;
-        setOMDocumentElement(documentElement);
-    }
-
     public OMXMLParserWrapper getBuilder() {
         return builder;
     }
@@ -136,8 +121,12 @@ public class OMDocumentImpl extends OMSe
         }
     }
 
+    public int getState() {
+        return state;
+    }
+
     public boolean isComplete() {
-        return done;
+        return state == COMPLETE;
     }
 
     /**
@@ -145,8 +134,12 @@ public class OMDocumentImpl extends OMSe
      *
      * @param state
      */
-    public void setComplete(boolean state) {
-        this.done = state;
+    public void setComplete(boolean complete) {
+        state = complete ? COMPLETE : INCOMPLETE;
+    }
+
+    public void discarded() {
+        state = DISCARDED;
     }
 
     public void addChild(OMNode child) {
@@ -203,10 +196,7 @@ public class OMDocumentImpl extends OMSe
      * @return Returns first om child.
      */
     public OMNode getFirstOMChild() {
-        while ((firstChild == null) && !done) {
-            buildNext();
-        }
-        return firstChild;
+        return OMContainerHelper.getFirstOMChild(this);
     }
 
     public OMNode getFirstOMChildIfAvailable() {
@@ -325,7 +315,7 @@ public class OMDocumentImpl extends OMSe
     }
 
     void notifyChildComplete() {
-        if (!this.done && builder == null) {
+        if (state == INCOMPLETE && builder == null) {
             Iterator iterator = getChildren();
             while (iterator.hasNext()) {
                 OMNode node = (OMNode) iterator.next();
@@ -340,4 +330,8 @@ public class OMDocumentImpl extends OMSe
     public SAXSource getSAXSource(boolean cache) {
         return new OMSource(this);
     }
+
+    public void build() {
+        OMContainerHelper.build(this);
+    }
 }

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java Sat Jul 14 07:34:50 2012
@@ -30,9 +30,9 @@ import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.OMXMLStreamReaderConfiguration;
-import org.apache.axiom.om.impl.OMContainerEx;
 import org.apache.axiom.om.impl.OMElementEx;
 import org.apache.axiom.om.impl.OMNodeEx;
+import org.apache.axiom.om.impl.common.IContainer;
 import org.apache.axiom.om.impl.common.NamespaceIterator;
 import org.apache.axiom.om.impl.common.OMChildElementIterator;
 import org.apache.axiom.om.impl.common.OMChildrenLegacyQNameIterator;
@@ -68,13 +68,13 @@ import java.util.LinkedHashMap;
 
 /** Class OMElementImpl */
 public class OMElementImpl extends OMNodeImpl
-        implements OMElementEx, OMConstants, OMContainerEx {
+        implements OMElementEx, OMConstants, IContainer {
 
     private static final Log log = LogFactory.getLog(OMElementImpl.class);
     
     protected OMXMLParserWrapper builder;
 
-    protected boolean done;
+    protected int state;
 
     /**
      * The namespace of this element. Possible values:
@@ -116,9 +116,9 @@ public class OMElementImpl extends OMNod
         }
         this.localName = localName;
         this.builder = builder;
-        this.done = builder == null;
+        state = builder == null ? COMPLETE : INCOMPLETE;
         if (parent != null) {
-            ((OMContainerEx)parent).addChild(this, builder != null);
+            ((IContainer)parent).addChild(this, builder != null);
         }
         this.ns = generateNSDecl ? handleNamespace(ns) : ns;
     }
@@ -132,7 +132,7 @@ public class OMElementImpl extends OMNod
     public OMElementImpl(QName qname, OMContainer parent, OMFactory factory)
             throws OMException {
         super(factory);
-        done = true;
+        state = COMPLETE;
         if (parent != null) {
             parent.addChild(this);
         }
@@ -147,7 +147,7 @@ public class OMElementImpl extends OMNod
      */
     OMElementImpl(OMFactory factory) {
         super(factory);
-        done = true;
+        state = COMPLETE;
     }
 
     /** Method handleNamespace. */
@@ -640,10 +640,7 @@ public class OMElementImpl extends OMNod
      * @return Returns child.
      */
     public OMNode getFirstOMChild() {
-        while ((firstChild == null) && !done) {
-            buildNext();
-        }
-        return firstChild;
+        return OMContainerHelper.getFirstOMChild(this);
     }
 
     public OMNode getFirstOMChildIfAvailable() {
@@ -673,20 +670,10 @@ public class OMElementImpl extends OMNod
      * @throws OMException
      */
     public OMNode detach() throws OMException {
-        if (isComplete() && !parent.isComplete() && getNextOMSiblingIfAvailable() == null) {
-            // Special case: the node is complete, but the next node has not yet been created.
-            // In this case we want to detach the node without creating the next node because
-            // the builder may already have been closed (there is code in Axis2 that calls
-            // detach in that situation). We use discard for this: in this state, discard
-            // actually won't discard anything, but it will update the lastNode attribute
-            // of the builder.
-            getBuilder().discard(this);
-        } else {
-            if (!done) {
-                build();
-            }
-            super.detach();
+        if (state == INCOMPLETE) {
+            build();
         }
+        super.detach();
         return this;
     }
 
@@ -699,25 +686,29 @@ public class OMElementImpl extends OMNod
          * builder is null. Meaning this is a programatical created element but it has children which are not completed
          * Build them all.
          */
-        if (builder == null && !done) {
+        if (builder == null && state == INCOMPLETE) {
             for (Iterator childrenIterator = this.getChildren(); childrenIterator.hasNext();) {
                 OMNode omNode = (OMNode) childrenIterator.next();
                 omNode.build();
             }
         } else {
-            super.build();
+            OMContainerHelper.build(this);
         }
 
     }
 
+    public int getState() {
+        return state;
+    }
+
     public boolean isComplete() {
-        return done;
+        return state == COMPLETE;
     }
 
-    public void setComplete(boolean state) {
-        this.done = state;
+    public void setComplete(boolean complete) {
+        state = complete ? COMPLETE : INCOMPLETE;
         if (parent != null) {
-            if (!done) {
+            if (!complete) {
                 parent.setComplete(false);
             } else if (parent instanceof OMElementImpl) {
                 ((OMElementImpl) parent).notifyChildComplete();
@@ -727,6 +718,10 @@ public class OMElementImpl extends OMNod
         }
     }
 
+    public void discarded() {
+        state = DISCARDED;
+    }
+
     public XMLStreamReader getXMLStreamReader() {
         return getXMLStreamReader(true);
     }
@@ -790,7 +785,7 @@ public class OMElementImpl extends OMNod
     public void internalSerialize(XMLStreamWriter writer, boolean cache)
             throws XMLStreamException {
 
-        if (cache || this.done || (this.builder == null)) {
+        if (cache || state == COMPLETE || (this.builder == null)) {
             OMSerializerUtil.serializeStartpart(this, writer);
             OMSerializerUtil.serializeChildren(this, writer, cache);
             OMSerializerUtil.serializeEndpart(writer);
@@ -920,7 +915,7 @@ public class OMElementImpl extends OMNod
      * @throws OMException
      */
     public void discard() throws OMException {
-        if (done || builder == null) {
+        if (state == COMPLETE || builder == null) {
             this.detach();
         } else {
             builder.discard(this);
@@ -991,7 +986,7 @@ public class OMElementImpl extends OMNod
       * @see org.apache.axiom.om.OMNode#buildAll()
       */
     public void buildWithAttachments() {
-        if (!done) {
+        if (state == INCOMPLETE) {
             this.build();
         }
         Iterator iterator = getChildren();
@@ -1003,7 +998,7 @@ public class OMElementImpl extends OMNod
 
     /** This method will be called when one of the children becomes complete. */
     void notifyChildComplete() {
-        if (!this.done && builder == null) {
+        if (state == INCOMPLETE && builder == null) {
             Iterator iterator = getChildren();
             while (iterator.hasNext()) {
                 OMNode node = (OMNode) iterator.next();

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMLeafNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMLeafNode.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMLeafNode.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMLeafNode.java Sat Jul 14 07:34:50 2012
@@ -53,4 +53,8 @@ public abstract class OMLeafNode extends
     public final void discard() throws OMException {
         detach();
     }
+
+    public void build() {
+        // Do nothing; a leaf node is always complete
+    }
 }

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java Sat Jul 14 07:34:50 2012
@@ -30,13 +30,17 @@ import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.impl.OMContainerEx;
 import org.apache.axiom.om.impl.OMNodeEx;
 import org.apache.axiom.om.impl.builder.OMFactoryEx;
+import org.apache.axiom.om.impl.common.IChildNode;
+import org.apache.axiom.om.impl.common.IContainer;
+import org.apache.axiom.om.impl.common.IParentNode;
+import org.apache.axiom.om.impl.common.OMNodeHelper;
 import org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory;
 
 /** Class OMNodeImpl */
-public abstract class OMNodeImpl extends OMSerializableImpl implements OMNode, OMNodeEx {
+public abstract class OMNodeImpl extends OMSerializableImpl implements IChildNode {
     
     /** Field parent */
-    protected OMContainerEx parent;
+    protected IContainer parent;
 
     /** Field nextSibling */
     protected OMNodeImpl nextSibling;
@@ -63,6 +67,10 @@ public abstract class OMNodeImpl extends
         return parent;
     }
 
+    public IParentNode getIParentNode() {
+        return parent;
+    }
+
     /**
      * Method setParent.
      *
@@ -81,7 +89,7 @@ public abstract class OMNodeImpl extends
             if (this.parent != null) {
                 this.detach();
             }
-            this.parent = (OMContainerEx) element;
+            this.parent = (IContainer) element;
         } else {
             this.parent = null;
         }
@@ -95,12 +103,7 @@ public abstract class OMNodeImpl extends
      *
      */
     public OMNode getNextOMSibling() throws OMException {
-        if (nextSibling == null && parent != null && parent.getBuilder() != null) {
-            while (!parent.isComplete() && nextSibling == null) {
-                parent.buildNext();
-            }
-        }
-        return nextSibling;
+        return OMNodeHelper.getNextOMSibling(this);
     }
 
     public OMNode getNextOMSiblingIfAvailable() {
@@ -131,7 +134,10 @@ public abstract class OMNodeImpl extends
             throw new OMException(
                     "Nodes that don't have a parent can not be detached");
         }
-        OMNodeImpl nextSibling = (OMNodeImpl) getNextOMSibling();
+        // Note that we don't need to force creation of the next sibling because the
+        // builder will always add new nodes to the end of list of children of the
+        // document or element being built.
+        OMNodeImpl nextSibling = (OMNodeImpl) getNextOMSiblingIfAvailable();
         if (previousSibling == null) {
             parent.setFirstChild(nextSibling);
         } else {

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSerializableImpl.java Sat Jul 14 07:34:50 2012
@@ -34,62 +34,28 @@ import org.apache.axiom.om.impl.MTOMXMLS
 import org.apache.axiom.om.impl.builder.StAXBuilder;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 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 {
     private static final Log log = LogFactory.getLog(OMSerializableImpl.class);
     
-    protected final OMFactory factory;
+    protected OMFactory factory;
 
     public OMSerializableImpl(OMFactory factory) {
         this.factory = factory;
     }
     
     public OMFactory getOMFactory() {
+        if (factory == null) {
+            factory = ((StAXSOAPModelBuilder)getBuilder()).getSOAPFactory();
+        }
         return factory;
     }
 
     public abstract OMXMLParserWrapper getBuilder();
     
-    /**
-     * Parses this node and builds the object structure in memory. However a node, created
-     * programmatically, will have done set to true by default and this will cause populateyourself
-     * not to work properly!
-     *
-     * @throws OMException
-     */
-    public void build() throws OMException {
-        OMXMLParserWrapper builder = getBuilder();
-        if (builder != null && builder.isCompleted()) {
-            log.debug("Builder is already complete.");
-        }
-        while (!isComplete()) {
-
-            builder.next();    
-            if (builder.isCompleted() && !isComplete()) {
-                log.debug("Builder is complete.  Setting OMObject to complete.");
-                setComplete(true);
-            }
-        }
-    }
-    
-    /** Forces the parser to proceed, if parser has not yet finished with the XML input. */
-    public void buildNext() {
-        OMXMLParserWrapper builder = getBuilder();
-        if (builder != null) {
-            if (((StAXOMBuilder)builder).isClosed()) {
-                throw new OMException("The builder has already been closed");
-            } else if (!builder.isCompleted()) {
-                builder.next();
-            } else {
-                // If the builder is suddenly complete, but the completion status of the node
-                // doesn't change, then this means that we built the wrong nodes
-                throw new IllegalStateException("Builder is already complete");
-            }         
-        }
-    }
-
     public void close(boolean build) {
         OMXMLParserWrapper builder = getBuilder();
         if (build) {

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMSourcedElementImpl.java Sat Jul 14 07:34:50 2012
@@ -887,11 +887,6 @@ public class OMSourcedElementImpl extend
         return super.getLastKnownOMChild();
     }
 
-    public void buildNext() {
-        forceExpand();
-        super.buildNext();
-    }
-
     public OMNode detach() throws OMException {
         // detach without expanding the tree
         boolean complete = isComplete();
@@ -915,6 +910,14 @@ public class OMSourcedElementImpl extend
         return super.handleNamespace(qname);
     }
 
+    public int getState() {
+        if (isExpanded) {
+            return super.getState();
+        } else {
+            return COMPLETE;
+        }
+    }
+
     public boolean isComplete() {
         if (isExpanded) {
             return super.isComplete();
@@ -948,7 +951,7 @@ public class OMSourcedElementImpl extend
     public void buildWithAttachments() {
         
         // If not done, force the parser to build the elements
-        if (!done) {
+        if (state == INCOMPLETE) {
             this.build();
         }
         
@@ -1026,8 +1029,8 @@ public class OMSourcedElementImpl extend
      * parent (which may have a different builder or no builder).
      */
     public void setComplete(boolean value) {
-        done = value;
-        if (done == true) {
+        state = value ? COMPLETE : INCOMPLETE;
+        if (value == true) {
             if (readerFromDS != null) {
                 try {
                     readerFromDS.close();
@@ -1042,7 +1045,7 @@ public class OMSourcedElementImpl extend
                 dataSource = null;
             }
         }
-        if (done == true && readerFromDS != null) {
+        if (value == true && readerFromDS != null) {
             try {
                 readerFromDS.close();
             } catch (XMLStreamException e) {
@@ -1051,6 +1054,11 @@ public class OMSourcedElementImpl extend
         }
     }
     
+    public void discarded() {
+        // TODO: will we ever get here?
+        super.discarded();
+    }
+
     public SAXSource getSAXSource(boolean cache) {
         return super.getSAXSource(cache);
     }

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java Sat Jul 14 07:34:50 2012
@@ -20,8 +20,11 @@
 package org.apache.axiom.om.impl.llom.factory;
 
 import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.common.factory.AbstractOMMetaFactory;
 import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPMessage;
+import org.apache.axiom.soap.impl.llom.SOAPMessageImpl;
 import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;
 import org.apache.axiom.soap.impl.llom.soap12.SOAP12Factory;
 
@@ -44,4 +47,8 @@ public class OMLinkedListMetaFactory ext
     public SOAPFactory getSOAP12Factory() {
         return soap12Factory;
     }
+
+    public SOAPMessage createSOAPMessage(OMXMLParserWrapper builder) {
+        return new SOAPMessageImpl(builder, null);
+    }
 }

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPBodyImpl.java Sat Jul 14 07:34:50 2012
@@ -37,8 +37,6 @@ import org.apache.axiom.soap.SOAPFault;
 import org.apache.axiom.soap.SOAPProcessingException;
 import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 
-import javax.xml.stream.XMLStreamConstants;
-
 /** Class SOAPBodyImpl */
 public abstract class SOAPBodyImpl extends SOAPElement
         implements SOAPBody, OMConstants {
@@ -150,18 +148,6 @@ public abstract class SOAPBodyImpl exten
                 "Can not detach SOAP Body, SOAP Envelope must have a Body !!");
     }
 
-    /* 
-     * Overridden so that we can detect when a child element is built
-     */
-    public void buildNext() {
-        if (builder != null) {
-            int token = builder.next();
-            if (token == XMLStreamConstants.START_ELEMENT) {
-                enableLookAhead = false;
-            }
-        }
-    }
-    
     private boolean hasLookahead() {
         if (!enableLookAhead) {
            return false; 

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPElement.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPElement.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPElement.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPElement.java Sat Jul 14 07:34:50 2012
@@ -55,7 +55,7 @@ public abstract class SOAPElement extend
     }
 
 
-    protected SOAPElement(OMElement parent,
+    protected SOAPElement(OMContainer parent,
                           String localName,
                           OMXMLParserWrapper builder,
                           SOAPFactory factory) {

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPEnvelopeImpl.java Sat Jul 14 07:34:50 2012
@@ -41,6 +41,7 @@ import org.apache.axiom.soap.SOAPConstan
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPHeader;
+import org.apache.axiom.soap.SOAPMessage;
 import org.apache.axiom.soap.SOAPProcessingException;
 import org.apache.axiom.soap.SOAPVersion;
 import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
@@ -56,11 +57,12 @@ public class SOAPEnvelopeImpl extends SO
 
     /**
      * Constructor
+     * @param message
      * @param builder the OMXMLParserWrapper building this envelope
      * @param factory the SOAPFactory building this envelope
      */
-    public SOAPEnvelopeImpl(OMXMLParserWrapper builder, SOAPFactory factory) {
-        super(null, SOAPConstants.SOAPENVELOPE_LOCAL_NAME, builder, factory);
+    public SOAPEnvelopeImpl(SOAPMessage message, OMXMLParserWrapper builder, SOAPFactory factory) {
+        super(message, SOAPConstants.SOAPENVELOPE_LOCAL_NAME, builder, factory);
     }
 
     /**
@@ -123,7 +125,7 @@ public class SOAPEnvelopeImpl extends SO
             // The SOAPHeader is added before the SOAPBody
             // We must be sensitive to the state of the parser.  It is possible that the
             // has not been processed yet.
-            if (this.done) {
+            if (state == COMPLETE) {
                 // Parsing is complete, therefore it is safe to
                 // call getBody.
                 SOAPBody body = getBody();
@@ -220,7 +222,7 @@ public class SOAPEnvelopeImpl extends SO
         } else {
             //Now the caching is supposed to be off. However caching been switched off
             //has nothing to do if the element is already built!
-            if (this.done || (this.builder == null)) {
+            if (state == COMPLETE || (this.builder == null)) {
                 OMSerializerUtil.serializeStartpart(this, writer);
                 OMElement header = getHeader();
                 if ((header != null) && (header.getFirstOMChild() != null)) {

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/SOAPMessageImpl.java Sat Jul 14 07:34:50 2012
@@ -38,10 +38,6 @@ public class SOAPMessageImpl extends OMD
         super(factory);
     }
 
-    public SOAPMessageImpl(SOAPEnvelope envelope, OMXMLParserWrapper parserWrapper, SOAPFactory factory) {
-        super(envelope, parserWrapper, factory);
-    }
-
     public SOAPMessageImpl(OMXMLParserWrapper parserWrapper, SOAPFactory factory) {
         super(parserWrapper, factory);
     }

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap11/SOAP11Factory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap11/SOAP11Factory.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap11/SOAP11Factory.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap11/SOAP11Factory.java Sat Jul 14 07:34:50 2012
@@ -327,14 +327,8 @@ public class SOAP11Factory extends OMLin
         return new SOAPMessageImpl(builder, this);
     }
 
-
-    public SOAPMessage createSOAPMessage(SOAPEnvelope envelope, OMXMLParserWrapper parserWrapper) {
-        return new SOAPMessageImpl(envelope, parserWrapper, this);
-    }
-
-
-    public SOAPEnvelope createSOAPEnvelope(OMXMLParserWrapper builder) {
-        return new SOAPEnvelopeImpl(builder, this);
+    public SOAPEnvelope createSOAPEnvelope(SOAPMessage message, OMXMLParserWrapper builder) {
+        return new SOAPEnvelopeImpl(message, builder, this);
     }
 
 

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap12/SOAP12Factory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap12/SOAP12Factory.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap12/SOAP12Factory.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap12/SOAP12Factory.java Sat Jul 14 07:34:50 2012
@@ -330,14 +330,8 @@ public class SOAP12Factory extends OMLin
         return new SOAPMessageImpl(builder, this);
     }
 
-
-    public SOAPMessage createSOAPMessage(SOAPEnvelope envelope, OMXMLParserWrapper parserWrapper) {
-        return new SOAPMessageImpl(envelope, parserWrapper, this);
-    }
-
-
-    public SOAPEnvelope createSOAPEnvelope(OMXMLParserWrapper builder) {
-        return new SOAPEnvelopeImpl(builder, this);
+    public SOAPEnvelope createSOAPEnvelope(SOAPMessage message, OMXMLParserWrapper builder) {
+        return new SOAPEnvelopeImpl(message, builder, this);
     }
 
 

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java Sat Jul 14 07:34:50 2012
@@ -87,6 +87,7 @@ public class OMTestSuiteBuilder extends 
         addTest(new org.apache.axiom.ts.om.builder.TestGetDocumentElementWithIllFormedDocument(metaFactory));
         addTest(new org.apache.axiom.ts.om.builder.TestInvalidXML(metaFactory));
         addTest(new org.apache.axiom.ts.om.builder.TestIOExceptionInGetText(metaFactory));
+        addTest(new org.apache.axiom.ts.om.builder.TestNextBeforeGetDocumentElement(metaFactory));
         addTest(new org.apache.axiom.ts.om.builder.TestReadAttachmentBeforeRootPartComplete(metaFactory));
         addTest(new org.apache.axiom.ts.om.builder.TestRootPartStreaming(metaFactory));
         addTest(new org.apache.axiom.ts.om.builder.TestStandaloneConfiguration(metaFactory));
@@ -363,6 +364,7 @@ public class OMTestSuiteBuilder extends 
             addTest(new org.apache.axiom.ts.om.sourcedelement.TestCloneOMElementUnknownName(metaFactory));
             addTest(new org.apache.axiom.ts.om.sourcedelement.TestComplete(metaFactory));
             addTest(new org.apache.axiom.ts.om.sourcedelement.TestExpand(metaFactory));
+            addTest(new org.apache.axiom.ts.om.sourcedelement.TestGetDocumentFromBuilder(metaFactory));
             addTest(new org.apache.axiom.ts.om.sourcedelement.TestGetNamespaceNormalized(metaFactory));
             addTest(new org.apache.axiom.ts.om.sourcedelement.TestGetNamespaceNormalized2(metaFactory));
             addTest(new org.apache.axiom.ts.om.sourcedelement.TestGetNextOMSiblingIncomplete(metaFactory));

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestDiscardIncomplete.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestDiscardIncomplete.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestDiscardIncomplete.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestDiscardIncomplete.java Sat Jul 14 07:34:50 2012
@@ -36,19 +36,17 @@ public class TestDiscardIncomplete exten
 
     protected void runTest() throws Throwable {
         OMElement documentElement = null;
-        try {
-            // first build the OM tree without caching and see whether we can discard
-            // an element from it
-            OMXMLParserWrapper builder = OMXMLBuilderFactory.createOMBuilder(metaFactory.getOMFactory(),
-                    AbstractTestCase.getTestResource(TestConstants.SOAP_SOAPMESSAGE));
-            documentElement = builder.getDocumentElement();
+        
+        // first build the OM tree without caching and see whether we can discard
+        // an element from it
+        OMXMLParserWrapper builder = OMXMLBuilderFactory.createOMBuilder(metaFactory.getOMFactory(),
+                AbstractTestCase.getTestResource(TestConstants.SOAP_SOAPMESSAGE));
+        documentElement = builder.getDocumentElement();
 
-            documentElement.getFirstElement().discard();
+        documentElement.getFirstElement().discard();
 
-            String envelopeString = documentElement.toStringWithConsume();
-        } catch (Exception e) {
-            fail("discarding an element should work!");
-        }
+        String envelopeString = documentElement.toStringWithConsume();
+        
         documentElement.close(false);
     }
 }

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/node/TestGetNextOMSiblingAfterDiscard.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/node/TestGetNextOMSiblingAfterDiscard.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/node/TestGetNextOMSiblingAfterDiscard.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/node/TestGetNextOMSiblingAfterDiscard.java Sat Jul 14 07:34:50 2012
@@ -20,6 +20,7 @@ package org.apache.axiom.ts.om.node;
 
 import java.io.StringReader;
 
+import org.apache.axiom.om.NodeUnavailableException;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMMetaFactory;
@@ -40,9 +41,8 @@ public class TestGetNextOMSiblingAfterDi
         element.discard();
         try {
             child.getNextOMSibling();
-            fail("Expected OMException");
-        } catch (Exception ex) {
-            // TODO: we should get an OMException here; right now we get an IllegalStateException
+            fail("Expected NodeUnavailableException");
+        } catch (NodeUnavailableException ex) {
             // Expected
         }
     }

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestCase.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestCase.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestCase.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestCase.java Sat Jul 14 07:34:50 2012
@@ -28,6 +28,7 @@ import org.apache.axiom.soap.SOAPEnvelop
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.soap.SOAPModelBuilder;
 import org.apache.axiom.ts.AxiomTestCase;
 import org.xml.sax.InputSource;
 
@@ -52,10 +53,13 @@ public abstract class SOAPTestCase exten
         altSoapFactory = spec.getAltFactory(metaFactory);
     }
 
-    protected SOAPEnvelope getTestMessage(String name) {
+    protected SOAPModelBuilder getBuilderForTestMessage(String name) {
         InputStream in = AbstractTestCase.getTestResource("soap/" + spec.getName() + "/" + name);
-        SOAPEnvelope envelope = (SOAPEnvelope)metaFactory.createSOAPModelBuilder(StAXParserConfiguration.SOAP,
-                new InputSource(in)).getDocumentElement();
+        return metaFactory.createSOAPModelBuilder(StAXParserConfiguration.SOAP, new InputSource(in));
+    }
+    
+    protected SOAPEnvelope getTestMessage(String name) {
+        SOAPEnvelope envelope = getBuilderForTestMessage(name).getSOAPEnvelope();
         assertSame(spec.getEnvelopeNamespaceURI(), ((SOAPFactory)envelope.getOMFactory()).getSoapVersionURI());
         return envelope;
     }

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/SOAPTestSuiteBuilder.java Sat Jul 14 07:34:50 2012
@@ -99,6 +99,8 @@ public class SOAPTestSuiteBuilder extend
             addTest(new org.apache.axiom.ts.soap.body.TestHasFaultWithOMSEUnknownName(metaFactory, spec));
         }
         addTest(new org.apache.axiom.ts.soap.body.TestHasFaultWithParser(metaFactory, spec));
+        addTest(new org.apache.axiom.ts.soap.builder.TestCommentInEpilog(metaFactory, spec));
+        addTest(new org.apache.axiom.ts.soap.builder.TestCommentInProlog(metaFactory, spec));
         if (supportsBodyElementNameOptimization) {
             addTest(new org.apache.axiom.ts.soap.builder.TestRegisterCustomBuilderForPayloadAfterSOAPFaultCheck(metaFactory, spec));
         }
@@ -185,6 +187,8 @@ public class SOAPTestSuiteBuilder extend
         addTest(new org.apache.axiom.ts.soap.headerblock.TestWrongParent1(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.headerblock.TestWrongParent2(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.headerblock.TestWrongParent3(metaFactory, spec));
+        addTest(new org.apache.axiom.ts.soap.message.TestGetCharsetEncodingWithParser(metaFactory, spec));
+        addTest(new org.apache.axiom.ts.soap.message.TestGetOMFactoryWithParser(metaFactory, spec));
         addTest(new org.apache.axiom.ts.soap.xpath.TestXPathAppliedToSOAPEnvelope(metaFactory, spec, true));
         addTest(new org.apache.axiom.ts.soap.xpath.TestXPathAppliedToSOAPEnvelope(metaFactory, spec, false));
     }

Modified: webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/builder/BadInputTest.java
URL: http://svn.apache.org/viewvc/webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/builder/BadInputTest.java?rev=1361483&r1=1361482&r2=1361483&view=diff
==============================================================================
--- webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/builder/BadInputTest.java (original)
+++ webservices/axiom/branches/AXIOM-201/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/soap/builder/BadInputTest.java Sat Jul 14 07:34:50 2012
@@ -20,10 +20,10 @@
 package org.apache.axiom.ts.soap.builder;
 
 import org.apache.axiom.om.AbstractTestCase;
-import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMMetaFactory;
 import org.apache.axiom.om.OMXMLBuilderFactory;
 import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPProcessingException;
 import org.apache.axiom.ts.AxiomTestCase;
 
 public class BadInputTest extends AxiomTestCase {
@@ -42,8 +42,8 @@ public class BadInputTest extends AxiomT
                             AbstractTestCase.getTestResource("badsoap/" + file), null)
                             .getSOAPEnvelope();
             OMTestUtils.walkThrough(soapEnvelope);
-            fail("this must failed gracefully with OMException");
-        } catch (OMException e) {
+            fail("this must failed gracefully with SOAPProcessingException");
+        } catch (SOAPProcessingException e) {
             return;
         }
     }