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/02/04 20:48:05 UTC
svn commit: r1728545 - in /webservices/axiom/trunk:
aspects/fom-aspects/src/main/java/org/apache/axiom/fom/impl/mixin/
aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/
aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/c...
Author: veithen
Date: Thu Feb 4 19:48:04 2016
New Revision: 1728545
URL: http://svn.apache.org/viewvc?rev=1728545&view=rev
Log:
Let the Model implementation determine the type of OMDocument to use.
Removed:
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/soap/impl/
Modified:
webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/impl/mixin/AbderaNodeMixin.aj
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.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/common/factory/OMFactoryImpl.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java
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/SOAPModel.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java
webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java
webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMMetaFactory.java
Modified: webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/impl/mixin/AbderaNodeMixin.aj
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/impl/mixin/AbderaNodeMixin.aj?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/impl/mixin/AbderaNodeMixin.aj (original)
+++ webservices/axiom/trunk/aspects/fom-aspects/src/main/java/org/apache/axiom/fom/impl/mixin/AbderaNodeMixin.aj Thu Feb 4 19:48:04 2016
@@ -32,6 +32,9 @@ public aspect AbderaNodeMixin {
}
public final void AbderaNode.setFactory(AbderaFactory factory) {
+ if (this.factory == factory) {
+ return;
+ }
if (this.factory != null) {
throw new IllegalStateException();
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/Model.java Thu Feb 4 19:48:04 2016
@@ -19,9 +19,12 @@
package org.apache.axiom.om.impl.common.builder;
import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.impl.intf.AxiomDocument;
import org.apache.axiom.om.impl.intf.AxiomElement;
public interface Model {
+ Class<? extends AxiomDocument> getDocumentType();
+
/**
* Determine the element type to use for the current element.
*
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PlainXMLModel.java Thu Feb 4 19:48:04 2016
@@ -19,6 +19,7 @@
package org.apache.axiom.om.impl.common.builder;
import org.apache.axiom.om.OMContainer;
+import org.apache.axiom.om.impl.intf.AxiomDocument;
import org.apache.axiom.om.impl.intf.AxiomElement;
public final class PlainXMLModel implements Model {
@@ -27,6 +28,11 @@ public final class PlainXMLModel impleme
private PlainXMLModel() {}
@Override
+ public Class<? extends AxiomDocument> getDocumentType() {
+ return AxiomDocument.class;
+ }
+
+ @Override
public Class<? extends AxiomElement> determineElementType(OMContainer parent, int elementLevel,
String namespaceURI, String localName) {
return AxiomElement.class;
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/StAXOMBuilder.java Thu Feb 4 19:48:04 2016
@@ -20,6 +20,7 @@
package org.apache.axiom.om.impl.common.builder;
import org.apache.axiom.core.CoreAttribute;
+import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.ext.stax.DTDReader;
import org.apache.axiom.ext.stax.datahandler.DataHandlerReader;
import org.apache.axiom.om.DeferredParsingException;
@@ -38,6 +39,7 @@ import org.apache.axiom.om.impl.builder.
import org.apache.axiom.om.impl.builder.CustomBuilderSupport;
import org.apache.axiom.om.impl.builder.Detachable;
import org.apache.axiom.om.impl.intf.AxiomContainer;
+import org.apache.axiom.om.impl.intf.AxiomDocument;
import org.apache.axiom.om.impl.intf.AxiomElement;
import org.apache.axiom.om.impl.intf.OMFactoryEx;
import org.apache.axiom.util.stax.XMLEventUtils;
@@ -96,7 +98,9 @@ public class StAXOMBuilder implements Bu
/** Field parser */
private XMLStreamReader parser;
- /** Field omfactory */
+ private final NodeFactory nodeFactory;
+
+ // TODO: this will eventually disappear in favor of NodeFactory
private final OMFactoryEx omfactory;
private final Detachable detachable;
@@ -121,7 +125,7 @@ public class StAXOMBuilder implements Bu
/** Field parserAccessed */
private boolean parserAccessed = false;
- private OMDocument document;
+ private AxiomDocument document;
private String charEncoding = null;
@@ -174,8 +178,9 @@ public class StAXOMBuilder implements Bu
private ArrayList<NodePostProcessor> nodePostProcessors;
- private StAXOMBuilder(OMFactory omFactory, XMLStreamReader parser, String encoding,
+ private StAXOMBuilder(NodeFactory nodeFactory, OMFactory omFactory, XMLStreamReader parser, String encoding,
boolean autoClose, Detachable detachable, Closeable closeable, Model model, PayloadSelector payloadSelector) {
+ this.nodeFactory = nodeFactory;
omfactory = (OMFactoryEx)omFactory;
this.parser = parser;
this.autoClose = autoClose;
@@ -187,24 +192,24 @@ public class StAXOMBuilder implements Bu
dataHandlerReader = XMLStreamReaderUtils.getDataHandlerReader(parser);
}
- protected StAXOMBuilder(OMFactory omFactory, XMLStreamReader parser, boolean autoClose,
+ protected StAXOMBuilder(NodeFactory nodeFactory, OMFactory omFactory, XMLStreamReader parser, boolean autoClose,
Detachable detachable, Closeable closeable, Model model, PayloadSelector payloadSelector) {
// The getEncoding information is only available at the START_DOCUMENT event.
- this(omFactory, parser, parser.getEncoding(), autoClose, detachable, closeable, model, payloadSelector);
+ this(nodeFactory, omFactory, parser, parser.getEncoding(), autoClose, detachable, closeable, model, payloadSelector);
}
- public StAXOMBuilder(OMFactory omFactory, XMLStreamReader parser, boolean autoClose,
+ public StAXOMBuilder(NodeFactory nodeFactory, OMFactory omFactory, XMLStreamReader parser, boolean autoClose,
Detachable detachable, Closeable closeable) {
- this(omFactory, parser, autoClose, detachable, closeable, PlainXMLModel.INSTANCE, PayloadSelector.DEFAULT);
+ this(nodeFactory, omFactory, parser, autoClose, detachable, closeable, PlainXMLModel.INSTANCE, PayloadSelector.DEFAULT);
}
- public StAXOMBuilder(OMFactory factory,
+ public StAXOMBuilder(NodeFactory nodeFactory, OMFactory factory,
XMLStreamReader parser,
OMElement element,
String characterEncoding) {
// Use this constructor because the parser is passed the START_DOCUMENT state.
- this(factory, parser, characterEncoding, true, null, null, PlainXMLModel.INSTANCE, PayloadSelector.DEFAULT);
+ this(nodeFactory, factory, parser, characterEncoding, true, null, null, PlainXMLModel.INSTANCE, PayloadSelector.DEFAULT);
elementLevel = 1;
target = (AxiomContainer)element;
populateOMElement(element);
@@ -517,14 +522,15 @@ public class StAXOMBuilder implements Bu
private void createDocumentIfNecessary() {
if (document == null && parser.getEventType() == XMLStreamReader.START_DOCUMENT) {
- document = createDocument();
+ document = nodeFactory.createNode(model.getDocumentType());
if (charEncoding != null) {
document.setCharsetEncoding(charEncoding);
}
document.setXMLVersion(parser.getVersion());
document.setXMLEncoding(parser.getCharacterEncodingScheme());
document.setStandalone(parser.isStandalone() ? "yes" : "no");
- target = (AxiomContainer)document;
+ document.coreSetBuilder(this);
+ target = document;
postProcessNode(document);
}
}
@@ -597,10 +603,6 @@ public class StAXOMBuilder implements Bu
}
}
- protected OMDocument createDocument() {
- return omfactory.createOMDocument(this);
- }
-
/**
* Forwards the parser one step further, if parser is not completed yet. If this is called after
* parser is done, then throw an OMException. If the cache is set to false, then returns the
@@ -674,7 +676,9 @@ public class StAXOMBuilder implements Bu
default :
throw new OMException();
}
- postProcessNode(node);
+ if (node != null) {
+ postProcessNode(node);
+ }
if (target == null && !done) {
// We get here if the document has been discarded (by getDocumentElement(true)
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=1728545&r1=1728544&r2=1728545&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 Thu Feb 4 19:48:04 2016
@@ -31,11 +31,13 @@ import javax.xml.transform.dom.DOMSource
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamSource;
+import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMFactory;
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.PlainXMLModel;
import org.apache.axiom.om.impl.common.builder.StAXOMBuilder;
import org.apache.axiom.om.util.StAXParserConfiguration;
import org.apache.axiom.om.util.StAXUtils;
@@ -44,7 +46,6 @@ import org.apache.axiom.soap.SOAPFactory
import org.apache.axiom.soap.SOAPMessage;
import org.apache.axiom.soap.SOAPModelBuilder;
import org.apache.axiom.soap.SOAPProcessingException;
-import org.apache.axiom.soap.impl.builder.OMMetaFactoryEx;
import org.apache.axiom.soap.impl.common.builder.StAXSOAPModelBuilder;
import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
import org.apache.axiom.util.stax.XMLEventUtils;
@@ -58,7 +59,7 @@ import org.xml.sax.InputSource;
* Base class for {@link OMMetaFactory} implementations that make use of the standard builders
* ({@link org.apache.axiom.om.impl.builder.StAXOMBuilder} and its subclasses).
*/
-public abstract class AbstractOMMetaFactory implements OMMetaFactoryEx {
+public abstract class AbstractOMMetaFactory implements OMMetaFactory {
private final static class SourceInfo {
private final XMLStreamReader reader;
private final Detachable detachable;
@@ -83,6 +84,12 @@ public abstract class AbstractOMMetaFact
}
}
+ private final NodeFactory nodeFactory;
+
+ public AbstractOMMetaFactory(NodeFactory nodeFactory) {
+ this.nodeFactory = nodeFactory;
+ }
+
private static SourceInfo createXMLStreamReader(StAXParserConfiguration configuration,
InputSource is, boolean makeDetachable) {
XMLStreamReader reader;
@@ -160,12 +167,12 @@ public abstract class AbstractOMMetaFact
}
public OMXMLParserWrapper createStAXOMBuilder(OMFactory omFactory, XMLStreamReader parser) {
- return new StAXOMBuilder(omFactory, getXMLStreamReader(parser), false, (Detachable)null, (Closeable)null);
+ return new StAXOMBuilder(nodeFactory, omFactory, getXMLStreamReader(parser), false, (Detachable)null, (Closeable)null);
}
public OMXMLParserWrapper createOMBuilder(OMFactory omFactory, StAXParserConfiguration configuration, InputSource is) {
SourceInfo sourceInfo = createXMLStreamReader(configuration, is, true);
- return new StAXOMBuilder(omFactory, sourceInfo.getReader(), true,
+ return new StAXOMBuilder(nodeFactory, omFactory, sourceInfo.getReader(), true,
sourceInfo.getDetachable(), sourceInfo.getCloseable());
}
@@ -188,7 +195,7 @@ public abstract class AbstractOMMetaFact
toInputSource((StreamSource)source));
} else {
try {
- return new StAXOMBuilder(omFactory, StAXUtils.getXMLInputFactory().createXMLStreamReader(source), true, (Detachable)null, (Closeable)null);
+ return new StAXOMBuilder(nodeFactory, omFactory, StAXUtils.getXMLInputFactory().createXMLStreamReader(source), true, (Detachable)null, (Closeable)null);
} catch (XMLStreamException ex) {
throw new OMException(ex);
}
@@ -197,18 +204,19 @@ public abstract class AbstractOMMetaFact
public OMXMLParserWrapper createOMBuilder(OMFactory omFactory, Node node,
boolean expandEntityReferences) {
- return new StAXOMBuilder(omFactory, new DOMXMLStreamReader(node, expandEntityReferences), true, (Detachable)null, (Closeable)null);
+ return new StAXOMBuilder(nodeFactory, omFactory, new DOMXMLStreamReader(node, expandEntityReferences), true, (Detachable)null, (Closeable)null);
}
public OMXMLParserWrapper createOMBuilder(OMFactory omFactory, SAXSource source,
boolean expandEntityReferences) {
- return new SAXOMBuilder(omFactory, source, expandEntityReferences);
+ return new SAXOMBuilder(nodeFactory, omFactory, PlainXMLModel.INSTANCE, source, expandEntityReferences);
}
public OMXMLParserWrapper createOMBuilder(StAXParserConfiguration configuration,
OMFactory omFactory, InputSource rootPart, MimePartProvider mimePartProvider) {
SourceInfo sourceInfo = createXMLStreamReader(configuration, rootPart, false);
return new StAXOMBuilder(
+ nodeFactory,
omFactory,
new XOPDecodingStreamReader(sourceInfo.getReader(), mimePartProvider),
true,
@@ -217,12 +225,12 @@ public abstract class AbstractOMMetaFact
}
public SOAPModelBuilder createStAXSOAPModelBuilder(XMLStreamReader parser) {
- return new StAXSOAPModelBuilder(this, getXMLStreamReader(parser), false, null, null);
+ return new StAXSOAPModelBuilder(nodeFactory, this, getXMLStreamReader(parser), false, null, null);
}
public SOAPModelBuilder createSOAPModelBuilder(StAXParserConfiguration configuration, InputSource is) {
SourceInfo sourceInfo = createXMLStreamReader(configuration, is, true);
- return new StAXSOAPModelBuilder(this, sourceInfo.getReader(), true,
+ return new StAXSOAPModelBuilder(nodeFactory, this, sourceInfo.getReader(), true,
sourceInfo.getDetachable(), sourceInfo.getCloseable());
}
@@ -231,13 +239,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 StAXSOAPModelBuilder(this, new DOMXMLStreamReader(((DOMSource)source).getNode(), true), true, (Detachable)null, (Closeable)null);
+ return new StAXSOAPModelBuilder(nodeFactory, this, new DOMXMLStreamReader(((DOMSource)source).getNode(), true), true, (Detachable)null, (Closeable)null);
} else if (source instanceof StreamSource) {
return createSOAPModelBuilder(StAXParserConfiguration.SOAP,
toInputSource((StreamSource)source));
} else {
try {
- return new StAXSOAPModelBuilder(this, StAXUtils.getXMLInputFactory().createXMLStreamReader(source), true, (Detachable)null, (Closeable)null);
+ return new StAXSOAPModelBuilder(nodeFactory, this, StAXUtils.getXMLInputFactory().createXMLStreamReader(source), true, (Detachable)null, (Closeable)null);
} catch (XMLStreamException ex) {
throw new OMException(ex);
}
@@ -248,6 +256,7 @@ public abstract class AbstractOMMetaFact
SOAPFactory soapFactory, InputSource rootPart, MimePartProvider mimePartProvider) {
SourceInfo sourceInfo = createXMLStreamReader(configuration, rootPart, false);
StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(
+ nodeFactory,
soapFactory.getMetaFactory(),
new XOPDecodingStreamReader(sourceInfo.getReader(), mimePartProvider),
true,
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/OMFactoryImpl.java Thu Feb 4 19:48:04 2016
@@ -89,12 +89,6 @@ public class OMFactoryImpl implements OM
return createNode(AxiomDocument.class);
}
- public final OMDocument createOMDocument(OMXMLParserWrapper builder) {
- AxiomDocument document = createNode(AxiomDocument.class);
- document.coreSetBuilder(builder);
- return document;
- }
-
public final OMDocType createOMDocType(OMContainer parent, String rootName,
String publicId, String systemId, String internalSubset) {
return createOMDocType(parent, rootName, publicId, systemId, internalSubset, false);
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/factory/SAXOMBuilder.java Thu Feb 4 19:48:04 2016
@@ -19,6 +19,7 @@
package org.apache.axiom.om.impl.common.factory;
+import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.om.OMContainer;
import org.apache.axiom.om.OMDocument;
import org.apache.axiom.om.OMElement;
@@ -27,7 +28,9 @@ import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.impl.common.OMContentHandler;
import org.apache.axiom.om.impl.common.builder.BuilderUtil;
+import org.apache.axiom.om.impl.common.builder.Model;
import org.apache.axiom.om.impl.intf.AxiomContainer;
+import org.apache.axiom.om.impl.intf.AxiomDocument;
import org.apache.axiom.om.impl.intf.AxiomElement;
import org.apache.axiom.om.impl.intf.OMFactoryEx;
import org.xml.sax.SAXException;
@@ -38,20 +41,25 @@ import java.io.IOException;
import javax.xml.transform.sax.SAXSource;
public class SAXOMBuilder extends OMContentHandler implements OMXMLParserWrapper {
+ private final NodeFactory nodeFactory;
+ private final Model model;
private final SAXSource source;
- private OMDocument document;
+ private AxiomDocument document;
private final OMFactoryEx factory;
- public SAXOMBuilder(OMFactory factory, SAXSource source, boolean expandEntityReferences) {
+ public SAXOMBuilder(NodeFactory nodeFactory, OMFactory factory, Model model, SAXSource source, boolean expandEntityReferences) {
super(expandEntityReferences);
+ this.nodeFactory = nodeFactory;
this.factory = (OMFactoryEx)factory;
+ this.model = model;
this.source = source;
}
protected OMContainer doStartDocument() {
- document = factory.createOMDocument(this);
+ document = nodeFactory.createNode(model.getDocumentType());
+ document.coreSetBuilder(this);
return document;
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/intf/OMFactoryEx.java Thu Feb 4 19:48:04 2016
@@ -21,11 +21,8 @@ package org.apache.axiom.om.impl.intf;
import org.apache.axiom.om.OMComment;
import org.apache.axiom.om.OMContainer;
import org.apache.axiom.om.OMDocType;
-import org.apache.axiom.om.OMDocument;
-import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMEntityReference;
import org.apache.axiom.om.OMFactory;
-import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.OMProcessingInstruction;
import org.apache.axiom.om.OMText;
@@ -37,8 +34,6 @@ import org.apache.axiom.om.OMXMLParserWr
*/
public interface OMFactoryEx extends OMFactory {
- OMDocument createOMDocument(OMXMLParserWrapper builder);
-
<T extends AxiomElement> T createAxiomElement(Class<T> type, String localName,
OMContainer parent, OMXMLParserWrapper builder);
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=1728545&r1=1728544&r2=1728545&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 Thu Feb 4 19:48:04 2016
@@ -250,7 +250,7 @@ public aspect AxiomSourcedElementSupport
// Set the builder for this element. Note that the StAXOMBuilder constructor will also
// update the namespace of the element, so we don't need to do that here.
isExpanded = true;
- coreSetBuilder(new StAXOMBuilder(getOMFactory(), readerFromDS, this, characterEncoding));
+ coreSetBuilder(new StAXOMBuilder(coreGetNodeFactory(), getOMFactory(), readerFromDS, this, characterEncoding));
setComplete(false);
}
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/SOAPModel.java Thu Feb 4 19:48:04 2016
@@ -22,11 +22,13 @@ package org.apache.axiom.soap.impl.commo
import org.apache.axiom.om.OMContainer;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.impl.common.builder.Model;
+import org.apache.axiom.om.impl.intf.AxiomDocument;
import org.apache.axiom.om.impl.intf.AxiomElement;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPConstants;
import org.apache.axiom.soap.SOAPProcessingException;
+import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
import org.apache.axiom.soap.impl.intf.SOAPHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -48,6 +50,11 @@ public final class SOAPModel implements
private SOAPBuilderHelper builderHelper;
@Override
+ public Class<? extends AxiomDocument> getDocumentType() {
+ return AxiomSOAPMessage.class;
+ }
+
+ @Override
public Class<? extends AxiomElement> determineElementType(OMContainer parent,
int elementLevel, String namespaceURI, String localName) {
Class<? extends AxiomElement> elementType;
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/soap/impl/common/builder/StAXSOAPModelBuilder.java Thu Feb 4 19:48:04 2016
@@ -21,7 +21,7 @@ package org.apache.axiom.soap.impl.commo
import java.io.Closeable;
-import org.apache.axiom.om.OMDocument;
+import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMMetaFactory;
import org.apache.axiom.om.OMNode;
@@ -34,7 +34,6 @@ import org.apache.axiom.soap.SOAPFactory
import org.apache.axiom.soap.SOAPMessage;
import org.apache.axiom.soap.SOAPModelBuilder;
import org.apache.axiom.soap.SOAPProcessingException;
-import org.apache.axiom.soap.impl.builder.OMMetaFactoryEx;
import org.apache.axiom.soap.impl.intf.AxiomSOAPEnvelope;
import org.apache.axiom.soap.impl.intf.AxiomSOAPMessage;
@@ -44,17 +43,10 @@ import javax.xml.stream.XMLStreamReader;
* Internal implementation class.
*/
public class StAXSOAPModelBuilder extends StAXOMBuilder implements SOAPModelBuilder {
- /**
- * The meta factory used to get the SOAPFactory implementation when SOAP version detection
- * is enabled. This is only used if <code>soapFactory</code> is <code>null</code>.
- */
- private OMMetaFactory metaFactory;
-
- public StAXSOAPModelBuilder(OMMetaFactory metaFactory, XMLStreamReader parser,
+ public StAXSOAPModelBuilder(NodeFactory nodeFactory, OMMetaFactory metaFactory, XMLStreamReader parser,
boolean autoClose, Detachable detachable, Closeable closeable) {
- super(metaFactory.getOMFactory(), parser, autoClose, detachable, closeable, new SOAPModel(),
+ super(nodeFactory, metaFactory.getOMFactory(), parser, autoClose, detachable, closeable, new SOAPModel(),
SOAPPayloadSelector.INSTANCE);
- this.metaFactory = metaFactory;
// 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.
@@ -76,10 +68,6 @@ public class StAXSOAPModelBuilder extend
return (SOAPEnvelope)getDocumentElement();
}
- protected OMDocument createDocument() {
- return ((OMMetaFactoryEx)metaFactory).createSOAPMessage(this);
- }
-
/** Method createDTD. Overriding the default behaviour as a SOAPMessage should not have a DTD. */
protected OMNode createDTD() throws OMException {
throw new SOAPProcessingException("SOAP message MUST NOT contain a Document Type Declaration(DTD)");
Modified: webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/factory/OMDOMMetaFactory.java Thu Feb 4 19:48:04 2016
@@ -41,7 +41,9 @@ public class OMDOMMetaFactory extends Ab
private final SOAPFactory soap11Factory = new SOAP11Factory(this, DOOMNodeFactory.INSTANCE);
private final SOAPFactory soap12Factory = new SOAP12Factory(this, DOOMNodeFactory.INSTANCE);
- private OMDOMMetaFactory() {}
+ private OMDOMMetaFactory() {
+ super(DOOMNodeFactory.INSTANCE);
+ }
public OMFactory getOMFactory() {
return omFactory;
Modified: webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/factory/OMLinkedListMetaFactory.java Thu Feb 4 19:48:04 2016
@@ -37,7 +37,9 @@ public class OMLinkedListMetaFactory ext
private final SOAPFactory soap11Factory = new SOAP11Factory(this, LLOMNodeFactory.INSTANCE);
private final SOAPFactory soap12Factory = new SOAP12Factory(this, LLOMNodeFactory.INSTANCE);
- private OMLinkedListMetaFactory() {}
+ private OMLinkedListMetaFactory() {
+ super(LLOMNodeFactory.INSTANCE);
+ }
public OMFactory getOMFactory() {
return omFactory;
Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java Thu Feb 4 19:48:04 2016
@@ -26,8 +26,12 @@ import org.apache.abdera.model.Element;
import org.apache.abdera.parser.ParseException;
import org.apache.abdera.parser.ParserOptions;
import org.apache.abdera.util.Constants;
+import org.apache.axiom.fom.AbderaNode;
+import org.apache.axiom.fom.impl.FOMNodeFactory;
import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMSerializable;
import org.apache.axiom.om.impl.builder.Detachable;
+import org.apache.axiom.om.impl.common.builder.NodePostProcessor;
import org.apache.axiom.om.impl.common.builder.PayloadSelector;
import org.apache.axiom.om.impl.common.builder.StAXOMBuilder;
@@ -37,11 +41,17 @@ public class FOMBuilder extends StAXOMBu
private final FOMFactory fomfactory;
private final ParserOptions parserOptions;
- public FOMBuilder(FOMFactory factory, XMLStreamReader parser, ParserOptions parserOptions) {
- super(factory, new FOMStAXFilter(parser, parserOptions), false, (Detachable)null, (Closeable)null,
+ public FOMBuilder(final FOMFactory factory, XMLStreamReader parser, ParserOptions parserOptions) {
+ super(FOMNodeFactory.INSTANCE, factory, new FOMStAXFilter(parser, parserOptions), false, (Detachable)null, (Closeable)null,
factory, PayloadSelector.DEFAULT);
this.parserOptions = parserOptions;
this.fomfactory = factory;
+ addNodePostProcessor(new NodePostProcessor() {
+ @Override
+ public void postProcessNode(OMSerializable node) {
+ ((AbderaNode)node).setFactory(factory);
+ }
+ });
}
public ParserOptions getParserOptions() {
Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMFactory.java Thu Feb 4 19:48:04 2016
@@ -62,6 +62,7 @@ import org.apache.axiom.om.OMContainer;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.impl.common.builder.Model;
import org.apache.axiom.om.impl.common.factory.OMFactoryImpl;
+import org.apache.axiom.om.impl.intf.AxiomDocument;
import org.apache.axiom.util.xml.QNameMap;
@SuppressWarnings( {"unchecked", "deprecation"})
@@ -510,6 +511,11 @@ public class FOMFactory extends OMFactor
}
@Override
+ public Class<? extends AxiomDocument> getDocumentType() {
+ return FOMDocument.class;
+ }
+
+ @Override
public Class<? extends FOMElement> determineElementType(OMContainer parent, int elementLevel, String namespaceURI, String localName) {
Class<? extends FOMElement> elementType = elementTypeMap.get(namespaceURI, localName);
if (elementType != null) {
Modified: webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMMetaFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMMetaFactory.java?rev=1728545&r1=1728544&r2=1728545&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMMetaFactory.java (original)
+++ webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMMetaFactory.java Thu Feb 4 19:48:04 2016
@@ -17,6 +17,7 @@
*/
package org.apache.abdera.parser.stax;
+import org.apache.axiom.fom.impl.FOMNodeFactory;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.impl.common.factory.AbstractOMMetaFactory;
import org.apache.axiom.soap.SOAPFactory;
@@ -27,7 +28,9 @@ public final class FOMMetaFactory extend
private final OMFactory omFactory = new FOMFactory();
- private FOMMetaFactory() {}
+ private FOMMetaFactory() {
+ super(FOMNodeFactory.INSTANCE);
+ }
public OMFactory getOMFactory() {
return omFactory;