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 2016/03/21 21:57:37 UTC

svn commit: r1736095 - in /webservices/axiom/trunk: aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/ aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/ aspects/om-aspects/src/main/java/org/apache/axiom/om...

Author: veithen
Date: Mon Mar 21 20:57:37 2016
New Revision: 1736095

URL: http://svn.apache.org/viewvc?rev=1736095&view=rev
Log:
Preparing to decouple the builder from the Axiom (OM) API.

Added:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/OMXMLParserWrapperImpl.java
      - copied, changed from r1735909, webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderImpl.java
Modified:
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderImpl.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerSupport.aj
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPFilter.java
    webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModelBuilderImpl.java
    webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMParser.java

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderImpl.java?rev=1736095&r1=1736094&r2=1736095&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderImpl.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderImpl.java Mon Mar 21 20:57:37 2016
@@ -27,39 +27,31 @@ import org.apache.axiom.core.stream.Stre
 import org.apache.axiom.core.stream.XmlInput;
 import org.apache.axiom.core.stream.XmlReader;
 import org.apache.axiom.om.DeferredParsingException;
-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.ds.custombuilder.CustomBuilder;
-import org.apache.axiom.om.ds.custombuilder.CustomBuilderSupport;
-import org.apache.axiom.om.ds.custombuilder.CustomBuilder.Selector;
-import org.apache.axiom.om.impl.builder.Detachable;
-import org.apache.axiom.om.impl.intf.AxiomDocument;
 
-public class BuilderImpl implements OMXMLParserWrapper, Builder, CustomBuilderSupport {
+public final class BuilderImpl implements Builder {
     private final XmlReader reader;
-    private final Detachable detachable;
     private final BuilderHandler builderHandler;
-    private final CustomBuilderManager customBuilderManager = new CustomBuilderManager();
+    private Object facade;
 
     public BuilderImpl(XmlInput input, NodeFactory nodeFactory, Model model,
-            CoreNSAwareElement root, boolean repairNamespaces, Detachable detachable) {
+            CoreNSAwareElement root, boolean repairNamespaces) {
         builderHandler = new BuilderHandler(nodeFactory, model, root, this);
         reader = input.createReader(repairNamespaces ? new NamespaceRepairingFilterHandler(builderHandler, null, false) : builderHandler);
-        this.detachable = detachable;
-        addListener(customBuilderManager);
     }
 
-    public final void addListener(BuilderListener listener) {
+    public void addListener(BuilderListener listener) {
         builderHandler.addListener(listener);
     }
     
-    @Override
-    public void registerCustomBuilder(Selector selector, CustomBuilder customBuilder) {
-        customBuilderManager.register(selector, customBuilder);
+    public Object getFacade() {
+        return facade;
     }
-    
+
+    public void setFacade(Object facade) {
+        this.facade = facade;
+    }
+
     @Override
     public void next() {
         if (isCompleted()) {
@@ -74,48 +66,20 @@ public class BuilderImpl implements OMXM
     }
 
     @Override
-    public final boolean isCompleted() {
+    public boolean isCompleted() {
         return builderHandler.isCompleted();
     }
 
-    @Override
-    public final OMDocument getDocument() {
+    public CoreDocument getDocument() {
         CoreDocument document;
         while ((document = builderHandler.getDocument()) == null) {
             next();
         }
-        return (AxiomDocument)document;
+        return document;
     }
     
     @Override
-    public final OMElement getDocumentElement() {
-        return getDocumentElement(false);
-    }
-
-    @Override
-    public final OMElement getDocumentElement(boolean discardDocument) {
-        OMDocument document = getDocument();
-        OMElement element = document.getOMDocumentElement();
-        if (discardDocument) {
-            element.detach();
-            ((AxiomDocument)document).coreDiscard(false);
-        }
-        return element;
-    }
-
-    @Override
-    public final void close() {
+    public void close() {
         reader.dispose();
     }
-
-    @Override
-    public final void detach() throws OMException {
-        if (detachable != null) {
-            detachable.detach();
-        } else {
-            while (!isCompleted()) {
-                next();
-            }
-        }
-    }
 }

Copied: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/OMXMLParserWrapperImpl.java (from r1735909, webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderImpl.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/OMXMLParserWrapperImpl.java?p2=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/OMXMLParserWrapperImpl.java&p1=webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderImpl.java&r1=1735909&r2=1736095&rev=1736095&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderImpl.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/OMXMLParserWrapperImpl.java Mon Mar 21 20:57:37 2016
@@ -18,15 +18,6 @@
  */
 package org.apache.axiom.om.impl.common.builder;
 
-import org.apache.axiom.core.Builder;
-import org.apache.axiom.core.CoreDocument;
-import org.apache.axiom.core.CoreNSAwareElement;
-import org.apache.axiom.core.NodeFactory;
-import org.apache.axiom.core.stream.NamespaceRepairingFilterHandler;
-import org.apache.axiom.core.stream.StreamException;
-import org.apache.axiom.core.stream.XmlInput;
-import org.apache.axiom.core.stream.XmlReader;
-import org.apache.axiom.om.DeferredParsingException;
 import org.apache.axiom.om.OMDocument;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
@@ -37,54 +28,31 @@ import org.apache.axiom.om.ds.custombuil
 import org.apache.axiom.om.impl.builder.Detachable;
 import org.apache.axiom.om.impl.intf.AxiomDocument;
 
-public class BuilderImpl implements OMXMLParserWrapper, Builder, CustomBuilderSupport {
-    private final XmlReader reader;
+public class OMXMLParserWrapperImpl implements OMXMLParserWrapper, CustomBuilderSupport {
+    private final BuilderImpl builder;
     private final Detachable detachable;
-    private final BuilderHandler builderHandler;
     private final CustomBuilderManager customBuilderManager = new CustomBuilderManager();
 
-    public BuilderImpl(XmlInput input, NodeFactory nodeFactory, Model model,
-            CoreNSAwareElement root, boolean repairNamespaces, Detachable detachable) {
-        builderHandler = new BuilderHandler(nodeFactory, model, root, this);
-        reader = input.createReader(repairNamespaces ? new NamespaceRepairingFilterHandler(builderHandler, null, false) : builderHandler);
+    public OMXMLParserWrapperImpl(BuilderImpl builder, Detachable detachable) {
+        this.builder = builder;
         this.detachable = detachable;
-        addListener(customBuilderManager);
+        builder.setFacade(this);
+        builder.addListener(customBuilderManager);
     }
 
-    public final void addListener(BuilderListener listener) {
-        builderHandler.addListener(listener);
-    }
-    
     @Override
-    public void registerCustomBuilder(Selector selector, CustomBuilder customBuilder) {
+    public final void registerCustomBuilder(Selector selector, CustomBuilder customBuilder) {
         customBuilderManager.register(selector, customBuilder);
     }
     
     @Override
-    public void next() {
-        if (isCompleted()) {
-            throw new OMException();
-        }
-        try {
-            reader.proceed();
-        } catch (StreamException ex) {
-            throw new DeferredParsingException(ex);
-        }
-        builderHandler.executeDeferredActions();
-    }
-
-    @Override
     public final boolean isCompleted() {
-        return builderHandler.isCompleted();
+        return builder.isCompleted();
     }
 
     @Override
     public final OMDocument getDocument() {
-        CoreDocument document;
-        while ((document = builderHandler.getDocument()) == null) {
-            next();
-        }
-        return (AxiomDocument)document;
+        return (AxiomDocument)builder.getDocument();
     }
     
     @Override
@@ -105,7 +73,7 @@ public class BuilderImpl implements OMXM
 
     @Override
     public final void close() {
-        reader.dispose();
+        builder.close();
     }
 
     @Override
@@ -113,8 +81,8 @@ public class BuilderImpl implements OMXM
         if (detachable != null) {
             detachable.detach();
         } else {
-            while (!isCompleted()) {
-                next();
+            while (!builder.isCompleted()) {
+                builder.next();
             }
         }
     }

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java?rev=1736095&r1=1736094&r2=1736095&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/AbstractOMMetaFactory.java Mon Mar 21 20:57:37 2016
@@ -31,7 +31,11 @@ import javax.xml.transform.dom.DOMSource
 import javax.xml.transform.sax.SAXSource;
 import javax.xml.transform.stream.StreamSource;
 
+import org.apache.axiom.core.CoreNSAwareElement;
+import org.apache.axiom.core.CoreNode;
 import org.apache.axiom.core.NodeFactory;
+import org.apache.axiom.core.stream.FilteredXmlInput;
+import org.apache.axiom.core.stream.XmlInput;
 import org.apache.axiom.core.stream.sax.SAXInput;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
@@ -39,6 +43,9 @@ import org.apache.axiom.om.OMMetaFactory
 import org.apache.axiom.om.OMXMLParserWrapper;
 import org.apache.axiom.om.impl.builder.Detachable;
 import org.apache.axiom.om.impl.common.builder.BuilderImpl;
+import org.apache.axiom.om.impl.common.builder.BuilderListener;
+import org.apache.axiom.om.impl.common.builder.Model;
+import org.apache.axiom.om.impl.common.builder.OMXMLParserWrapperImpl;
 import org.apache.axiom.om.impl.common.builder.PlainXMLModel;
 import org.apache.axiom.om.impl.stream.stax.StAXPullInput;
 import org.apache.axiom.om.util.StAXParserConfiguration;
@@ -47,7 +54,11 @@ import org.apache.axiom.soap.SOAP12Const
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPModelBuilder;
 import org.apache.axiom.soap.SOAPProcessingException;
+import org.apache.axiom.soap.impl.common.builder.SOAPFilter;
+import org.apache.axiom.soap.impl.common.builder.SOAPModel;
 import org.apache.axiom.soap.impl.common.builder.SOAPModelBuilderImpl;
+import org.apache.axiom.soap.impl.intf.AxiomSOAPEnvelope;
+import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
 import org.apache.axiom.util.stax.XMLEventUtils;
 import org.apache.axiom.util.stax.XMLFragmentStreamReader;
 import org.apache.axiom.util.stax.xop.MimePartProvider;
@@ -166,15 +177,42 @@ public abstract class AbstractOMMetaFact
         }
     }
     
+    private OMXMLParserWrapper createOMBuilder(XmlInput input, NodeFactory nodeFactory, Model model,
+            CoreNSAwareElement root, boolean repairNamespaces, Detachable detachable) {
+        return new OMXMLParserWrapperImpl(new BuilderImpl(input, nodeFactory, model, root, repairNamespaces), detachable);
+    }
+    
+    private SOAPModelBuilder createSOAPModelBuilder(XmlInput input, NodeFactory nodeFactory,
+            boolean repairNamespaces, Detachable detachable) {
+        BuilderImpl builder = new BuilderImpl(new FilteredXmlInput(input, SOAPFilter.INSTANCE), nodeFactory, new SOAPModel(), null, true);
+        // The SOAPFactory instance linked to the SOAPMessage is unknown until we reach the
+        // SOAPEnvelope. Register a post-processor that does the necessary updates on the
+        // SOAPMessage.
+        builder.addListener(new BuilderListener() {
+            private AxiomSOAPMessage message;
+            
+            @Override
+            public Runnable nodeAdded(CoreNode node, int depth) {
+                if (node instanceof AxiomSOAPMessage) {
+                    message = (AxiomSOAPMessage)node;
+                } else if (message != null && node instanceof AxiomSOAPEnvelope) {
+                    message.initSOAPFactory((SOAPFactory)((AxiomSOAPEnvelope)node).getOMFactory());
+                }
+                return null;
+            }
+        });
+        return new SOAPModelBuilderImpl(builder, detachable);
+    }
+    
     public OMXMLParserWrapper createStAXOMBuilder(OMFactory omFactory, XMLStreamReader parser) {
-        return new BuilderImpl(
+        return createOMBuilder(
                 new StAXPullInput(getXMLStreamReader(parser), false, null),
                 nodeFactory, PlainXMLModel.INSTANCE, null, true, null);
     }
 
     public OMXMLParserWrapper createOMBuilder(OMFactory omFactory, StAXParserConfiguration configuration, InputSource is) {
         SourceInfo sourceInfo = createXMLStreamReader(configuration, is, true);
-        return new BuilderImpl(
+        return createOMBuilder(
                 new StAXPullInput(sourceInfo.getReader(), true, sourceInfo.getCloseable()),
                 nodeFactory, PlainXMLModel.INSTANCE, null, false, sourceInfo.getDetachable());
     }
@@ -198,7 +236,7 @@ public abstract class AbstractOMMetaFact
                     toInputSource((StreamSource)source));
         } else {
             try {
-                return new BuilderImpl(
+                return createOMBuilder(
                         new StAXPullInput(StAXUtils.getXMLInputFactory().createXMLStreamReader(source), true, null),
                         nodeFactory, PlainXMLModel.INSTANCE, null, true, null);
             } catch (XMLStreamException ex) {
@@ -209,7 +247,7 @@ public abstract class AbstractOMMetaFact
 
     public OMXMLParserWrapper createOMBuilder(OMFactory omFactory, Node node,
             boolean expandEntityReferences) {
-        return new BuilderImpl(
+        return createOMBuilder(
                 new StAXPullInput(new DOMXMLStreamReader(node, expandEntityReferences), true, null),
                 nodeFactory, PlainXMLModel.INSTANCE, null, true, null);
     }
@@ -217,25 +255,25 @@ public abstract class AbstractOMMetaFact
     // TODO: don't need the omFactory argument anymore
     public OMXMLParserWrapper createOMBuilder(OMFactory omFactory, SAXSource source,
             boolean expandEntityReferences) {
-        return new BuilderImpl(new SAXInput(source, expandEntityReferences), nodeFactory, PlainXMLModel.INSTANCE, null, true, null);
+        return createOMBuilder(new SAXInput(source, expandEntityReferences), nodeFactory, PlainXMLModel.INSTANCE, null, true, null);
     }
 
     public OMXMLParserWrapper createOMBuilder(StAXParserConfiguration configuration,
             OMFactory omFactory, InputSource rootPart, MimePartProvider mimePartProvider) {
         SourceInfo sourceInfo = createXMLStreamReader(configuration, rootPart, false);
-        return new BuilderImpl(
+        return createOMBuilder(
                 new StAXPullInput(new XOPDecodingStreamReader(sourceInfo.getReader(), mimePartProvider), true, sourceInfo.getCloseable()), 
                 nodeFactory, PlainXMLModel.INSTANCE, null, false,
                 mimePartProvider instanceof Detachable ? (Detachable)mimePartProvider : null);
     }
 
     public SOAPModelBuilder createStAXSOAPModelBuilder(XMLStreamReader parser) {
-        return new SOAPModelBuilderImpl(new StAXPullInput(getXMLStreamReader(parser), false, null), nodeFactory, true, null);
+        return createSOAPModelBuilder(new StAXPullInput(getXMLStreamReader(parser), false, null), nodeFactory, true, null);
     }
 
     public SOAPModelBuilder createSOAPModelBuilder(StAXParserConfiguration configuration, InputSource is) {
         SourceInfo sourceInfo = createXMLStreamReader(configuration, is, true);
-        return new SOAPModelBuilderImpl(
+        return createSOAPModelBuilder(
                 new StAXPullInput(sourceInfo.getReader(), true, sourceInfo.getCloseable()),
                 nodeFactory, false, sourceInfo.getDetachable());
     }
@@ -245,13 +283,13 @@ public abstract class AbstractOMMetaFact
             // TODO: supporting this will require some refactoring of the builders
             throw new UnsupportedOperationException();
         } else if (source instanceof DOMSource) {
-            return new SOAPModelBuilderImpl(new StAXPullInput(new DOMXMLStreamReader(((DOMSource)source).getNode(), true), true, null), nodeFactory, true, null);
+            return createSOAPModelBuilder(new StAXPullInput(new DOMXMLStreamReader(((DOMSource)source).getNode(), true), true, null), nodeFactory, true, null);
         } else if (source instanceof StreamSource) {
             return createSOAPModelBuilder(StAXParserConfiguration.SOAP,
                     toInputSource((StreamSource)source));
         } else {
             try {
-                return new SOAPModelBuilderImpl(new StAXPullInput(StAXUtils.getXMLInputFactory().createXMLStreamReader(source), true, null), nodeFactory, true, null);
+                return createSOAPModelBuilder(new StAXPullInput(StAXUtils.getXMLInputFactory().createXMLStreamReader(source), true, null), nodeFactory, true, null);
             } catch (XMLStreamException ex) {
                 throw new OMException(ex);
             }
@@ -261,7 +299,7 @@ public abstract class AbstractOMMetaFact
     public SOAPModelBuilder createSOAPModelBuilder(StAXParserConfiguration configuration,
             SOAPFactory soapFactory, InputSource rootPart, MimePartProvider mimePartProvider) {
         SourceInfo sourceInfo = createXMLStreamReader(configuration, rootPart, false);
-        SOAPModelBuilderImpl builder = new SOAPModelBuilderImpl(
+        SOAPModelBuilder builder = createSOAPModelBuilder(
                 new StAXPullInput(new XOPDecodingStreamReader(sourceInfo.getReader(), mimePartProvider), true, sourceInfo.getCloseable()),
                 nodeFactory, false,
                 mimePartProvider instanceof Detachable ? (Detachable)mimePartProvider : null);

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerSupport.aj?rev=1736095&r1=1736094&r2=1736095&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomContainerSupport.aj Mon Mar 21 20:57:37 2016
@@ -55,6 +55,8 @@ import org.apache.axiom.om.impl.MTOMXMLS
 import org.apache.axiom.om.impl.common.AxiomExceptionTranslator;
 import org.apache.axiom.om.impl.common.AxiomSemantics;
 import org.apache.axiom.om.impl.common.SAXResultContentHandler;
+import org.apache.axiom.om.impl.common.builder.BuilderImpl;
+import org.apache.axiom.om.impl.common.builder.OMXMLParserWrapperImpl;
 import org.apache.axiom.om.impl.common.serializer.push.NamespaceContextPreservationFilterHandler;
 import org.apache.axiom.om.impl.common.serializer.push.XmlDeclarationRewriterHandler;
 import org.apache.axiom.om.impl.common.serializer.push.XsiTypeFilterHandler;
@@ -81,7 +83,12 @@ public aspect AxiomContainerSupport {
     }
 
     public final OMXMLParserWrapper AxiomContainer.getBuilder() {
-        return (OMXMLParserWrapper)coreGetBuilder();
+        BuilderImpl builder = (BuilderImpl)coreGetBuilder();
+        OMXMLParserWrapper facade = (OMXMLParserWrapper)builder.getFacade();
+        if (facade == null) {
+            facade = new OMXMLParserWrapperImpl(builder, null);
+        }
+        return facade;
     }
 
     public final XMLStreamReader AxiomContainer.getXMLStreamReader() {

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj?rev=1736095&r1=1736094&r2=1736095&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/mixin/AxiomSourcedElementSupport.aj Mon Mar 21 20:57:37 2016
@@ -195,7 +195,7 @@ public aspect AxiomSourcedElementSupport
             if (OMDataSourceUtil.isPushDataSource(dataSource)) {
                 // Disable namespace repairing because the OMDataSource is required to produce well formed
                 // XML with respect to namespaces.
-                builder = new BuilderImpl(new PushOMDataSourceInput(this, dataSource), coreGetNodeFactory(), PlainXMLModel.INSTANCE, this, false, null);
+                builder = new BuilderImpl(new PushOMDataSourceInput(this, dataSource), coreGetNodeFactory(), PlainXMLModel.INSTANCE, this, false);
             } else {
                 // Get the XMLStreamReader
                 XMLStreamReader readerFromDS;
@@ -204,7 +204,7 @@ public aspect AxiomSourcedElementSupport
                 } catch (XMLStreamException ex) {
                     throw new OMException("Error obtaining parser from data source for element " + getPrintableName(), ex);
                 }
-                builder = new BuilderImpl(new StAXPullInput(readerFromDS), coreGetNodeFactory(), PlainXMLModel.INSTANCE, this, true, null);
+                builder = new BuilderImpl(new StAXPullInput(readerFromDS), coreGetNodeFactory(), PlainXMLModel.INSTANCE, this, true);
             }
             isExpanded = true;
             coreSetState(ATTRIBUTES_PENDING);

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPFilter.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPFilter.java?rev=1736095&r1=1736094&r2=1736095&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPFilter.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPFilter.java Mon Mar 21 20:57:37 2016
@@ -21,8 +21,8 @@ package org.apache.axiom.soap.impl.commo
 import org.apache.axiom.core.stream.XmlFilter;
 import org.apache.axiom.core.stream.XmlHandler;
 
-final class SOAPFilter implements XmlFilter {
-    static final SOAPFilter INSTANCE = new SOAPFilter();
+public final class SOAPFilter implements XmlFilter {
+    public static final SOAPFilter INSTANCE = new SOAPFilter();
     
     private SOAPFilter() {}
 

Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModelBuilderImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModelBuilderImpl.java?rev=1736095&r1=1736094&r2=1736095&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModelBuilderImpl.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModelBuilderImpl.java Mon Mar 21 20:57:37 2016
@@ -19,43 +19,20 @@
 
 package org.apache.axiom.soap.impl.common.builder;
 
-import org.apache.axiom.core.CoreNode;
-import org.apache.axiom.core.NodeFactory;
-import org.apache.axiom.core.stream.FilteredXmlInput;
-import org.apache.axiom.core.stream.XmlInput;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.impl.builder.Detachable;
 import org.apache.axiom.om.impl.common.builder.BuilderImpl;
-import org.apache.axiom.om.impl.common.builder.BuilderListener;
+import org.apache.axiom.om.impl.common.builder.OMXMLParserWrapperImpl;
 import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPMessage;
 import org.apache.axiom.soap.SOAPModelBuilder;
-import org.apache.axiom.soap.impl.intf.AxiomSOAPEnvelope;
-import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
 
 /**
  * Internal implementation class.
  */
-public class SOAPModelBuilderImpl extends BuilderImpl implements SOAPModelBuilder {
-    public SOAPModelBuilderImpl(XmlInput input, NodeFactory nodeFactory, boolean repairNamespaces, Detachable detachable) {
-        super(new FilteredXmlInput(input, SOAPFilter.INSTANCE), nodeFactory, new SOAPModel(), null, true, detachable);
-        // The SOAPFactory instance linked to the SOAPMessage is unknown until we reach the
-        // SOAPEnvelope. Register a post-processor that does the necessary updates on the
-        // SOAPMessage.
-        addListener(new BuilderListener() {
-            private AxiomSOAPMessage message;
-            
-            @Override
-            public Runnable nodeAdded(CoreNode node, int depth) {
-                if (node instanceof AxiomSOAPMessage) {
-                    message = (AxiomSOAPMessage)node;
-                } else if (message != null && node instanceof AxiomSOAPEnvelope) {
-                    message.initSOAPFactory((SOAPFactory)((AxiomSOAPEnvelope)node).getOMFactory());
-                }
-                return null;
-            }
-        });
+public class SOAPModelBuilderImpl extends OMXMLParserWrapperImpl implements SOAPModelBuilder {
+    public SOAPModelBuilderImpl(BuilderImpl builder, Detachable detachable) {
+        super(builder, detachable);
     }
     
     public SOAPEnvelope getSOAPEnvelope() throws OMException {

Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMParser.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMParser.java?rev=1736095&r1=1736094&r2=1736095&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMParser.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMParser.java Mon Mar 21 20:57:37 2016
@@ -82,12 +82,12 @@ public class FOMParser extends AbstractP
 
     private <T extends Element> Document<T> getDocument(BuilderImpl builder, IRI base, ParserOptions options)
         throws ParseException {
+        @SuppressWarnings("unchecked")
+        Document<T> document = (Document<T>)builder.getDocument();
         // For compatibility with earlier Abdera versions, force creation of the document element.
         // Note that the only known case where this has a visible effect is when the document is
         // not well formed. At least one unit test depends on this behavior.
-        builder.getDocumentElement();
-        @SuppressWarnings("unchecked")
-        Document<T> document = (Document<T>)builder.getDocument();
+        document.getRoot();
         try {
             if (base != null)
                 document.setBaseUri(base.toString());
@@ -176,7 +176,7 @@ public class FOMParser extends AbstractP
         try {
             final FOMFactory factory = getFomFactory(options);
             BuilderImpl builder = new BuilderImpl(new StAXPullInput(new FOMStAXFilter(reader, options), false, null), FOMNodeFactory.INSTANCE,
-                    factory, null, true, null); // TODO: probably we can use repairNamespaces=false here
+                    factory, null, true); // TODO: probably we can use repairNamespaces=false here
             builder.addListener(new BuilderListener() {
                 @Override
                 public Runnable nodeAdded(CoreNode node, int depth) {