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) {