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/06 15:15:15 UTC
svn commit: r1728840 - in /webservices/axiom/trunk:
aspects/core-aspects/src/main/java/org/apache/axiom/core/
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/fac...
Author: veithen
Date: Sat Feb 6 14:15:15 2016
New Revision: 1728840
URL: http://svn.apache.org/viewvc?rev=1728840&view=rev
Log:
Increase consistency in the builder setup for OMSourcedElements.
Modified:
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNode.java
webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Flags.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractPushBuilder.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandlerXMLStreamWriter.java
webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.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/SAXOMBuilder.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/StAXSOAPModelBuilder.java
webservices/axiom/trunk/implementations/fom-impl/src/main/java/org/apache/abdera/parser/stax/FOMBuilder.java
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNode.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNode.java?rev=1728840&r1=1728839&r2=1728840&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNode.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/CoreParentNode.java Sat Feb 6 14:15:15 2016
@@ -25,9 +25,10 @@ import org.apache.axiom.om.OMXMLParserWr
*/
public interface CoreParentNode extends CoreNode {
int COMPLETE = 0;
- int INCOMPLETE = 1;
- int DISCARDED = 2;
- int COMPACT = 3;
+ int ATTRIBUTES_PENDING = 1;
+ int INCOMPLETE = 2;
+ int DISCARDED = 3;
+ int COMPACT = 4;
OMXMLParserWrapper getBuilder();
void coreSetBuilder(OMXMLParserWrapper builder);
Modified: webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Flags.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Flags.java?rev=1728840&r1=1728839&r2=1728840&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Flags.java (original)
+++ webservices/axiom/trunk/aspects/core-aspects/src/main/java/org/apache/axiom/core/Flags.java Sat Feb 6 14:15:15 2016
@@ -25,19 +25,19 @@ final class Flags {
* Defines the bit mask for the part of the flags that indicate the state of a
* {@link CoreParentNode}.
*/
- static final int STATE_MASK = 3;
+ static final int STATE_MASK = 7;
/**
* Used by {@link CoreChildNode} instances to indicate whether the node has a parent or not.
* This is necessary to interpret the meaning of the <code>owner</code> attribute if it refers
* to a document node (which may be the parent or simply the owner document).
*/
- static final int HAS_PARENT = 4;
+ static final int HAS_PARENT = 8;
- static final int DEFAULT_ATTR = 8;
+ static final int DEFAULT_ATTR = 16;
/**
* Used to store the information returned by {@link CoreCharacterDataNode#coreIsIgnorable()}.
*/
- static final int IGNORABLE = 16;
+ static final int IGNORABLE = 32;
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java?rev=1728840&r1=1728839&r2=1728840&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractBuilder.java Sat Feb 6 14:15:15 2016
@@ -20,12 +20,13 @@ package org.apache.axiom.om.impl.common.
import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.om.OMXMLParserWrapper;
+import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
public abstract class AbstractBuilder implements OMXMLParserWrapper {
protected final BuilderHandler handler;
- public AbstractBuilder(NodeFactory nodeFactory, Model model) {
- handler = new BuilderHandler(nodeFactory, model, this);
+ public AbstractBuilder(NodeFactory nodeFactory, Model model, AxiomSourcedElement root) {
+ handler = new BuilderHandler(nodeFactory, model, root, this);
}
public final void addNodePostProcessor(NodePostProcessor nodePostProcessor) {
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractPushBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractPushBuilder.java?rev=1728840&r1=1728839&r2=1728840&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractPushBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/AbstractPushBuilder.java Sat Feb 6 14:15:15 2016
@@ -21,16 +21,13 @@ package org.apache.axiom.om.impl.common.
import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
public abstract class AbstractPushBuilder extends AbstractBuilder {
- public AbstractPushBuilder(NodeFactory nodeFactory, Model model) {
- super(nodeFactory, model);
+ public AbstractPushBuilder(NodeFactory nodeFactory, Model model, AxiomSourcedElement root) {
+ super(nodeFactory, model, root);
}
- public final int next() throws OMException {
- throw new UnsupportedOperationException();
- }
-
public final void discard(OMElement el) throws OMException {
throw new UnsupportedOperationException();
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java?rev=1728840&r1=1728839&r2=1728840&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandler.java Sat Feb 6 14:15:15 2016
@@ -24,6 +24,7 @@ import java.util.Map;
import javax.xml.stream.XMLStreamConstants;
+import org.apache.axiom.core.CoreParentNode;
import org.apache.axiom.core.NodeFactory;
import org.apache.axiom.om.OMContainer;
import org.apache.axiom.om.OMSerializable;
@@ -39,6 +40,7 @@ import org.apache.axiom.om.impl.intf.Axi
import org.apache.axiom.om.impl.intf.AxiomElement;
import org.apache.axiom.om.impl.intf.AxiomEntityReference;
import org.apache.axiom.om.impl.intf.AxiomProcessingInstruction;
+import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -47,6 +49,7 @@ public final class BuilderHandler {
private final NodeFactory nodeFactory;
private final Model model;
+ private final AxiomSourcedElement root;
private final OMXMLParserWrapper builder;
public AxiomContainer target;
// returns the state of completion
@@ -70,9 +73,10 @@ public final class BuilderHandler {
private ArrayList<NodePostProcessor> nodePostProcessors;
- public BuilderHandler(NodeFactory nodeFactory, Model model, OMXMLParserWrapper builder) {
+ public BuilderHandler(NodeFactory nodeFactory, Model model, AxiomSourcedElement root, OMXMLParserWrapper builder) {
this.nodeFactory = nodeFactory;
this.model = model;
+ this.root = root;
this.builder = builder;
}
@@ -97,14 +101,16 @@ public final class BuilderHandler {
}
public void startDocument(String inputEncoding, String xmlVersion, String xmlEncoding, boolean standalone) {
- document = nodeFactory.createNode(model.getDocumentType());
- document.coreSetInputEncoding(inputEncoding);
- document.coreSetXmlVersion(xmlVersion);
- document.coreSetXmlEncoding(xmlEncoding);
- document.coreSetStandalone(standalone);
- document.coreSetBuilder(builder);
- postProcessNode(document);
- target = document;
+ if (root == null) {
+ document = nodeFactory.createNode(model.getDocumentType());
+ document.coreSetInputEncoding(inputEncoding);
+ document.coreSetXmlVersion(xmlVersion);
+ document.coreSetXmlEncoding(xmlEncoding);
+ document.coreSetStandalone(standalone);
+ document.coreSetBuilder(builder);
+ postProcessNode(document);
+ target = document;
+ }
}
public void createDocumentTypeDeclaration(String rootName, String publicId, String systemId,
@@ -120,11 +126,18 @@ public final class BuilderHandler {
public AxiomElement startElement(String namespaceURI, String localName, String prefix) {
elementLevel++;
- AxiomElement element = nodeFactory.createNode(model.determineElementType(
- target, elementLevel, namespaceURI, localName));
- element.coreSetBuilder(builder);
- element.initName(localName, /*ns*/ null, false);
- addChild(element);
+ AxiomElement element;
+ if (elementLevel == 1 && root != null) {
+ root.validateName(prefix, localName, namespaceURI);
+ element = root;
+ } else {
+ element = nodeFactory.createNode(model.determineElementType(
+ target, elementLevel, namespaceURI, localName));
+ element.coreSetBuilder(builder);
+ element.coreSetState(CoreParentNode.ATTRIBUTES_PENDING);
+ element.initName(localName, /*ns*/ null, false);
+ addChild(element);
+ }
target = element;
return element;
}
@@ -142,6 +155,10 @@ public final class BuilderHandler {
}
}
+ public void attributesCompleted() {
+ target.coreSetState(CoreParentNode.INCOMPLETE);
+ }
+
public void processCharacterData(Object data, boolean ignorable) {
AxiomCharacterDataNode node = nodeFactory.createNode(AxiomCharacterDataNode.class);
node.coreSetCharacterData(data);
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandlerXMLStreamWriter.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandlerXMLStreamWriter.java?rev=1728840&r1=1728839&r2=1728840&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandlerXMLStreamWriter.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/BuilderHandlerXMLStreamWriter.java Sat Feb 6 14:15:15 2016
@@ -37,13 +37,12 @@ import org.apache.axiom.om.impl.intf.Tex
import org.apache.axiom.util.stax.AbstractXMLStreamWriter;
public class BuilderHandlerXMLStreamWriter extends AbstractXMLStreamWriter implements DataHandlerWriter {
- private final AxiomSourcedElement root;
private final OMFactoryEx factory;
private final BuilderHandler handler;
+ private boolean inStartElement;
public BuilderHandlerXMLStreamWriter(BuilderHandler handler, AxiomSourcedElement root) throws XMLStreamException {
this.handler = handler;
- this.root = root;
factory = (OMFactoryEx)root.getOMFactory();
// Seed the namespace context with the namespace context from the parent
OMContainer parent = root.getParent();
@@ -107,16 +106,11 @@ public class BuilderHandlerXMLStreamWrit
protected void doWriteStartElement(String prefix, String localName, String namespaceURI) {
// Get the OMNamespace object before we change the parent
OMNamespace ns = getOMNamespace(prefix, namespaceURI, false);
- if (handler.target == null) {
- root.validateName(prefix, localName, namespaceURI);
- handler.target = root;
- handler.elementLevel = 1;
- } else {
- handler.startElement(namespaceURI, localName, prefix);
- }
+ handler.startElement(namespaceURI, localName, prefix);
if (ns != null) {
((OMElement)handler.target).setNamespace(ns, false);
}
+ inStartElement = true;
}
protected void doWriteStartElement(String localName) throws XMLStreamException {
@@ -127,8 +121,16 @@ public class BuilderHandlerXMLStreamWrit
handler.endElement();
}
+ private void finishStartElement() {
+ if (inStartElement) {
+ handler.attributesCompleted();
+ inStartElement = false;
+ }
+ }
+
protected void doWriteEmptyElement(String prefix, String localName, String namespaceURI) {
doWriteStartElement(prefix, localName, namespaceURI);
+ finishStartElement();
doWriteEndElement();
}
@@ -161,22 +163,27 @@ public class BuilderHandlerXMLStreamWrit
}
protected void doWriteCharacters(String text) {
+ finishStartElement();
handler.processCharacterData(text, false);
}
protected void doWriteCData(String data) {
+ finishStartElement();
handler.createCDATASection(data);
}
protected void doWriteComment(String data) {
+ finishStartElement();
handler.createComment(data);
}
protected void doWriteEntityRef(String name) throws XMLStreamException {
+ finishStartElement();
handler.createEntityReference(name, null);
}
protected void doWriteProcessingInstruction(String piTarget, String data) {
+ finishStartElement();
handler.createProcessingInstruction(piTarget, data);
}
@@ -194,11 +201,13 @@ public class BuilderHandlerXMLStreamWrit
public void writeDataHandler(DataHandler dataHandler, String contentID, boolean optimize)
throws IOException, XMLStreamException {
+ finishStartElement();
handler.processCharacterData(new TextContent(contentID, dataHandler, optimize), false);
}
public void writeDataHandler(DataHandlerProvider dataHandlerProvider, String contentID,
boolean optimize) throws IOException, XMLStreamException {
+ finishStartElement();
handler.processCharacterData(new TextContent(contentID, dataHandlerProvider, optimize), false);
}
}
Modified: webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java?rev=1728840&r1=1728839&r2=1728840&view=diff
==============================================================================
--- webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java (original)
+++ webservices/axiom/trunk/aspects/om-aspects/src/main/java/org/apache/axiom/om/impl/common/builder/PushOMBuilder.java Sat Feb 6 14:15:15 2016
@@ -20,6 +20,7 @@ package org.apache.axiom.om.impl.common.
import javax.xml.stream.XMLStreamException;
+import org.apache.axiom.om.DeferredParsingException;
import org.apache.axiom.om.OMDataSource;
import org.apache.axiom.om.OMDocument;
import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
@@ -28,14 +29,19 @@ public final class PushOMBuilder extends
private final AxiomSourcedElement root;
private final OMDataSource dataSource;
- public PushOMBuilder(AxiomSourcedElement root, OMDataSource dataSource) throws XMLStreamException {
- super(root.coreGetNodeFactory(), PlainXMLModel.INSTANCE);
+ public PushOMBuilder(AxiomSourcedElement root, OMDataSource dataSource) {
+ super(root.coreGetNodeFactory(), PlainXMLModel.INSTANCE, root);
this.root = root;
this.dataSource = dataSource;
}
- public void expand() throws XMLStreamException {
- dataSource.serialize(new BuilderHandlerXMLStreamWriter(handler, root));
+ public int next() {
+ try {
+ dataSource.serialize(new BuilderHandlerXMLStreamWriter(handler, root));
+ } catch (XMLStreamException ex) {
+ throw new DeferredParsingException(ex);
+ }
+ return -1;
}
@Override
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=1728840&r1=1728839&r2=1728840&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 Sat Feb 6 14:15:15 2016
@@ -38,6 +38,7 @@ import org.apache.axiom.om.impl.builder.
import org.apache.axiom.om.impl.builder.Detachable;
import org.apache.axiom.om.impl.intf.AxiomContainer;
import org.apache.axiom.om.impl.intf.AxiomElement;
+import org.apache.axiom.om.impl.intf.AxiomSourcedElement;
import org.apache.axiom.om.impl.intf.TextContent;
import org.apache.axiom.util.stax.XMLEventUtils;
import org.apache.axiom.util.stax.XMLStreamReaderUtils;
@@ -130,39 +131,28 @@ public class StAXOMBuilder extends Abstr
private int lookAheadToken = -1;
- private StAXOMBuilder(NodeFactory nodeFactory, XMLStreamReader parser, String encoding,
- boolean autoClose, Detachable detachable, Closeable closeable, Model model, PayloadSelector payloadSelector) {
- super(nodeFactory, model);
+ protected StAXOMBuilder(NodeFactory nodeFactory, XMLStreamReader parser,
+ boolean autoClose, Detachable detachable, Closeable closeable, Model model, PayloadSelector payloadSelector,
+ AxiomSourcedElement root) {
+ super(nodeFactory, model, root);
this.parser = parser;
this.autoClose = autoClose;
this.detachable = detachable;
this.closeable = closeable;
this.payloadSelector = payloadSelector;
- charEncoding = encoding;
+ charEncoding = parser.getEncoding();
dataHandlerReader = XMLStreamReaderUtils.getDataHandlerReader(parser);
}
- protected StAXOMBuilder(NodeFactory nodeFactory, XMLStreamReader parser, boolean autoClose,
- Detachable detachable, Closeable closeable, Model model, PayloadSelector payloadSelector) {
- // The getEncoding information is only available at the START_DOCUMENT event.
- this(nodeFactory, parser, parser.getEncoding(), autoClose, detachable, closeable, model, payloadSelector);
-
- }
-
public StAXOMBuilder(NodeFactory nodeFactory, XMLStreamReader parser, boolean autoClose,
Detachable detachable, Closeable closeable) {
- this(nodeFactory, parser, autoClose, detachable, closeable, PlainXMLModel.INSTANCE, PayloadSelector.DEFAULT);
+ this(nodeFactory, parser, autoClose, detachable, closeable, PlainXMLModel.INSTANCE, PayloadSelector.DEFAULT, null);
}
public StAXOMBuilder(NodeFactory nodeFactory,
XMLStreamReader parser,
- OMElement element,
- String characterEncoding) {
- // Use this constructor because the parser is passed the START_DOCUMENT state.
- this(nodeFactory, parser, characterEncoding, true, null, null, PlainXMLModel.INSTANCE, PayloadSelector.DEFAULT);
- handler.elementLevel = 1;
- handler.target = (AxiomContainer)element;
- populateOMElement(element);
+ AxiomSourcedElement element) {
+ this(nodeFactory, parser, true, null, null, PlainXMLModel.INSTANCE, PayloadSelector.DEFAULT, element);
}
/**
@@ -706,6 +696,7 @@ public class StAXOMBuilder extends Abstr
processNamespaceData(node);
// fill in the attributes
processAttributes(node);
+ handler.attributesCompleted();
Location location = parser.getLocation();
if(location != null) {
node.setLineNumber(location.getLineNumber());
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=1728840&r1=1728839&r2=1728840&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 Sat Feb 6 14:15:15 2016
@@ -43,7 +43,7 @@ public final class SAXOMBuilder extends
private final SAXSource source;
public SAXOMBuilder(NodeFactory nodeFactory, Model model, SAXSource source, boolean expandEntityReferences) {
- super(nodeFactory, model);
+ super(nodeFactory, model, null);
this.expandEntityReferences = expandEntityReferences;
this.source = source;
}
@@ -103,6 +103,8 @@ public final class SAXOMBuilder extends
element.addNamespaceDeclaration(namespaces[2*i+1], namespaces[2*i]);
}
BuilderUtil.setNamespace(element, namespaceURI, prefix);
+ // TODO: not entirely correct, but should work
+ handler.attributesCompleted();
return element;
}
@@ -137,4 +139,8 @@ public final class SAXOMBuilder extends
public void createOMEntityReference(String name, String replacementText) {
handler.createEntityReference(name, replacementText);
}
+
+ public int next() throws OMException {
+ throw new UnsupportedOperationException();
+ }
}
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=1728840&r1=1728839&r2=1728840&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 Sat Feb 6 14:15:15 2016
@@ -28,6 +28,7 @@ import org.apache.axiom.om.OMException;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.OMXMLStreamReaderConfiguration;
import org.apache.axiom.om.QNameAwareOMDataSource;
import org.apache.axiom.om.impl.common.DeferredNamespace;
@@ -42,7 +43,6 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.xml.namespace.QName;
-import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
@@ -214,14 +214,9 @@ public aspect AxiomSourcedElementSupport
}
}
+ OMXMLParserWrapper builder;
if (OMDataSourceUtil.isPushDataSource(dataSource)) {
- // Set this before we start expanding; otherwise this would result in an infinite recursion
- isExpanded = true;
- try {
- new PushOMBuilder(this, dataSource).expand();
- } catch (XMLStreamException ex) {
- throw new OMException("Failed to expand data source", ex);
- }
+ builder = new PushOMBuilder(this, dataSource);
} else {
// Get the XMLStreamReader
XMLStreamReader readerFromDS;
@@ -230,29 +225,14 @@ public aspect AxiomSourcedElementSupport
} catch (XMLStreamException ex) {
throw new OMException("Error obtaining parser from data source for element " + getPrintableName(), ex);
}
-
- // Advance past the START_DOCUMENT to the start tag.
- // Remember the character encoding.
- String characterEncoding = readerFromDS.getCharacterEncodingScheme();
- if (characterEncoding != null) {
- characterEncoding = readerFromDS.getEncoding();
- }
- try {
- if (readerFromDS.getEventType() != XMLStreamConstants.START_ELEMENT) {
- while (readerFromDS.next() != XMLStreamConstants.START_ELEMENT) ;
- }
- } catch (XMLStreamException ex) {
- throw new OMException("Error parsing data source document for element " + getLocalName(), ex);
- }
-
- validateName(readerFromDS.getPrefix(), readerFromDS.getLocalName(), readerFromDS.getNamespaceURI());
-
- // 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(coreGetNodeFactory(), readerFromDS, this, characterEncoding));
- setComplete(false);
+ builder = new StAXOMBuilder(coreGetNodeFactory(), readerFromDS, this);
}
+ isExpanded = true;
+ coreSetBuilder(builder);
+ coreSetState(ATTRIBUTES_PENDING);
+ do {
+ builder.next();
+ } while (getState() == ATTRIBUTES_PENDING);
}
}
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=1728840&r1=1728839&r2=1728840&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 Sat Feb 6 14:15:15 2016
@@ -43,7 +43,7 @@ public class StAXSOAPModelBuilder extend
public StAXSOAPModelBuilder(NodeFactory nodeFactory, XMLStreamReader parser,
boolean autoClose, Detachable detachable, Closeable closeable) {
super(nodeFactory, parser, autoClose, detachable, closeable, new SOAPModel(),
- SOAPPayloadSelector.INSTANCE);
+ SOAPPayloadSelector.INSTANCE, null);
// 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.
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=1728840&r1=1728839&r2=1728840&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 Sat Feb 6 14:15:15 2016
@@ -43,7 +43,7 @@ public class FOMBuilder extends StAXOMBu
public FOMBuilder(final FOMFactory factory, XMLStreamReader parser, ParserOptions parserOptions) {
super(FOMNodeFactory.INSTANCE, new FOMStAXFilter(parser, parserOptions), false, (Detachable)null, (Closeable)null,
- factory, PayloadSelector.DEFAULT);
+ factory, PayloadSelector.DEFAULT, null);
this.parserOptions = parserOptions;
this.fomfactory = factory;
addNodePostProcessor(new NodePostProcessor() {