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 2013/01/19 11:32:50 UTC
svn commit: r1435520 - in /webservices/commons/trunk/modules/axiom/modules:
axiom-api/src/main/java/org/apache/axiom/om/impl/builder/
axiom-testsuite/src/main/java/org/apache/axiom/ts/om/
axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/ ax...
Author: veithen
Date: Sat Jan 19 10:32:49 2013
New Revision: 1435520
URL: http://svn.apache.org/viewvc?rev=1435520&view=rev
Log:
Consolidated some test cases, increased code coverage and fixed several issues in SAXOMBuilder.
Added:
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/strategy/BuilderFactory.java
- copied, changed from r1435508, webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/BuilderFactory.java
Removed:
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestGetDocumentElementWithDiscardDocument.java
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/BuilderFactory.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/SAXOMBuilder.java
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestGetDocumentElement.java
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/TestGetXMLStreamReader.java
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderCommentEvent.java
webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderGetElementTextFromParser.java
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/SAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/SAXOMBuilder.java?rev=1435520&r1=1435519&r2=1435520&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/SAXOMBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/SAXOMBuilder.java Sat Jan 19 10:32:49 2013
@@ -21,7 +21,6 @@ package org.apache.axiom.om.impl.builder
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMAttribute;
-import org.apache.axiom.om.OMContainer;
import org.apache.axiom.om.OMDocument;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
@@ -32,7 +31,6 @@ import org.apache.axiom.om.OMXMLBuilderF
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.impl.OMContainerEx;
import org.apache.axiom.om.impl.OMElementEx;
-import org.apache.axiom.om.impl.OMNodeEx;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -42,9 +40,7 @@ import org.xml.sax.ext.LexicalHandler;
import org.xml.sax.helpers.DefaultHandler;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import javax.xml.XMLConstants;
@@ -86,17 +82,13 @@ public class SAXOMBuilder extends Defaul
*/
private boolean inExternalSubset;
- OMElement root = null;
+ private OMContainerEx target;
- OMNode lastNode = null;
-
- OMElement nextElem = null;
+ private OMElement nextElement;
private final OMFactoryEx factory;
- List prefixMappings = new ArrayList();
-
- int textNodeType = OMNode.TEXT_NODE;
+ private int textNodeType = OMNode.TEXT_NODE;
private boolean inEntityReference;
private int entityReferenceDepth;
@@ -132,32 +124,20 @@ public class SAXOMBuilder extends Defaul
this(OMAbstractFactory.getOMFactory());
}
- private OMContainer getContainer() {
- if (lastNode != null) {
- return lastNode.isComplete() ? lastNode.getParent() : (OMContainer)lastNode;
- } else if (document != null) {
- return document;
- } else {
- throw new OMException("Unexpected event. There is no container to add the node to.");
- }
- }
-
- private void addNode(OMNode node) {
- if (root == null && node instanceof OMElement) {
- root = (OMElement)node;
- }
- lastNode = node;
- }
-
public void setDocumentLocator(Locator locator) {
}
public void startDocument() throws SAXException {
document = factory.createOMDocument(this);
+ target = (OMContainerEx)document;
}
public void endDocument() throws SAXException {
- ((OMContainerEx)document).setComplete(true);
+ if (target != document) {
+ throw new IllegalStateException();
+ }
+ target.setComplete(true);
+ target = null;
}
public void startDTD(String name, String publicId, String systemId) throws SAXException {
@@ -257,15 +237,13 @@ public class SAXOMBuilder extends Defaul
}
public void endDTD() throws SAXException {
- addNode(factory.createOMDocType(getContainer(), dtdName, dtdPublicId, dtdSystemId,
- internalSubset.length() == 0 ? null : internalSubset.toString(), true));
+ factory.createOMDocType(target, dtdName, dtdPublicId, dtdSystemId,
+ internalSubset.length() == 0 ? null : internalSubset.toString(), true);
internalSubset = null;
}
protected OMElement createNextElement(String localName) throws OMException {
- OMElement element = factory.createOMElement(localName, getContainer(), this);
- addNode(element);
- return element;
+ return factory.createOMElement(localName, target, this);
}
/*
@@ -277,10 +255,10 @@ public class SAXOMBuilder extends Defaul
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
if (!inEntityReference) {
- if (nextElem == null) {
- nextElem = createNextElement("DUMMY");
+ if (nextElement == null) {
+ nextElement = createNextElement("DUMMY");
}
- ((OMElementEx)nextElem).addNamespaceDeclaration(uri, prefix);
+ ((OMElementEx)nextElement).addNamespaceDeclaration(uri, prefix);
}
}
@@ -298,14 +276,14 @@ public class SAXOMBuilder extends Defaul
if (!inEntityReference) {
if (localName == null || localName.trim().equals(""))
localName = qName.substring(qName.indexOf(':') + 1);
- if (nextElem == null)
- nextElem = createNextElement(localName);
+ if (nextElement == null)
+ nextElement = createNextElement(localName);
else
- nextElem.setLocalName(localName);
+ nextElement.setLocalName(localName);
int idx = qName.indexOf(':');
String prefix = idx == -1 ? "" : qName.substring(0, idx);
- BuilderUtil.setNamespace(nextElem, namespaceURI, prefix, false);
+ BuilderUtil.setNamespace(nextElement, namespaceURI, prefix, false);
int j = atts.getLength();
for (int i = 0; i < j; i++) {
@@ -319,7 +297,7 @@ public class SAXOMBuilder extends Defaul
String attrNamespaceURI = atts.getURI(i);
OMNamespace ns;
if (attrNamespaceURI.length() > 0) {
- ns = nextElem.findNamespace(atts.getURI(i), null);
+ ns = nextElement.findNamespace(atts.getURI(i), null);
if (ns == null) {
// The "xml" prefix is not necessarily declared explicitly; in this case,
// create a new OMNamespace instance.
@@ -332,13 +310,13 @@ public class SAXOMBuilder extends Defaul
} else {
ns = null;
}
- OMAttribute attr = nextElem.addAttribute(atts.getLocalName(i), atts.getValue(i), ns);
+ OMAttribute attr = nextElement.addAttribute(atts.getLocalName(i), atts.getValue(i), ns);
attr.setAttributeType(atts.getType(i));
}
}
- lastNode = nextElem;
- nextElem = null;
+ target = (OMContainerEx)nextElement;
+ nextElement = null;
}
}
@@ -351,14 +329,8 @@ public class SAXOMBuilder extends Defaul
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (!inEntityReference) {
- if (lastNode.isComplete()) {
- OMContainer parent = lastNode.getParent();
- ((OMNodeEx) parent).setComplete(true);
- lastNode = (OMNode) parent;
- } else {
- OMElement e = (OMElement) lastNode;
- ((OMNodeEx) e).setComplete(true);
- }
+ target.setComplete(true);
+ target = (OMContainerEx)((OMNode)target).getParent();
}
}
@@ -377,7 +349,7 @@ public class SAXOMBuilder extends Defaul
public void characterData(char[] ch, int start, int length, int nodeType)
throws SAXException {
if (!inEntityReference) {
- addNode(factory.createOMText(getContainer(), new String(ch, start, length), nodeType, true));
+ factory.createOMText(target, new String(ch, start, length), nodeType, true);
}
}
@@ -395,20 +367,16 @@ public class SAXOMBuilder extends Defaul
}
}
- public void processingInstruction(String target, String data)
+ public void processingInstruction(String piTarget, String data)
throws SAXException {
if (!inEntityReference) {
- addNode(factory.createOMProcessingInstruction(getContainer(), target, data, true));
+ factory.createOMProcessingInstruction(target, piTarget, data, true);
}
}
public void comment(char[] ch, int start, int length) throws SAXException {
if (!inEntityReference) {
- if (lastNode == null) {
- // Do nothing: the comment appears before the root element.
- return;
- }
- addNode(factory.createOMComment(getContainer(), new String(ch, start, length), true));
+ factory.createOMComment(target, new String(ch, start, length), true);
}
}
@@ -421,7 +389,7 @@ public class SAXOMBuilder extends Defaul
} else if (name.equals("[dtd]")) {
inExternalSubset = true;
} else if (!expandEntityReferences) {
- addNode(factory.createOMEntityReference(getContainer(), name, entities == null ? null : (String)entities.get(name), true));
+ factory.createOMEntityReference(target, name, entities == null ? null : (String)entities.get(name), true);
inEntityReference = true;
entityReferenceDepth = 1;
}
@@ -471,10 +439,12 @@ public class SAXOMBuilder extends Defaul
/**
* Get the root element of the Axiom tree built by this content handler.
*
+ * @deprecated
* @return the root element of the tree
* @throws OMException if the tree is not complete
*/
public OMElement getRootElement() {
+ OMElement root = getDocumentElement();
if (root != null && root.isComplete()) {
return root;
} else {
@@ -512,7 +482,9 @@ public class SAXOMBuilder extends Defaul
public OMElement getDocumentElement(boolean discardDocument) {
OMElement documentElement = getDocument().getOMDocumentElement();
- documentElement.detach();
+ if (discardDocument) {
+ documentElement.detach();
+ }
return documentElement;
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java?rev=1435520&r1=1435519&r2=1435520&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java Sat Jan 19 10:32:49 2013
@@ -25,7 +25,6 @@ import javax.xml.namespace.QName;
import org.apache.axiom.om.OMMetaFactory;
import org.apache.axiom.testutils.conformance.ConformanceTestFile;
import org.apache.axiom.testutils.suite.TestSuiteBuilder;
-import org.apache.axiom.ts.om.container.BuilderFactory;
import org.apache.axiom.ts.om.container.OMContainerFactory;
import org.apache.axiom.ts.om.container.OMElementFactory;
import org.apache.axiom.ts.om.factory.CreateOMElementParentSupplier;
@@ -33,6 +32,7 @@ import org.apache.axiom.ts.om.factory.Cr
import org.apache.axiom.ts.om.sourcedelement.OMSourcedElementVariant;
import org.apache.axiom.ts.om.xpath.AXIOMXPathTestCase;
import org.apache.axiom.ts.om.xpath.TestAXIOMXPath;
+import org.apache.axiom.ts.strategy.BuilderFactory;
import org.apache.axiom.ts.strategy.ExpansionStrategy;
import org.apache.axiom.ts.strategy.serialization.SerializationStrategy;
import org.apache.axiom.ts.strategy.serialization.SerializeFromXMLStreamReader;
@@ -113,8 +113,12 @@ public class OMTestSuiteBuilder extends
addTest(new org.apache.axiom.ts.om.builder.TestCreateStAXOMBuilderIncorrectState(metaFactory));
addTest(new org.apache.axiom.ts.om.builder.TestCreateStAXOMBuilderNamespaceRepairing(metaFactory));
addTest(new org.apache.axiom.ts.om.builder.TestCreateStAXOMBuilderNamespaceRepairing2(metaFactory));
- addTest(new org.apache.axiom.ts.om.builder.TestGetDocumentElement(metaFactory));
- addTest(new org.apache.axiom.ts.om.builder.TestGetDocumentElementWithDiscardDocument(metaFactory));
+ for (int i=0; i<builderFactories.length; i++) {
+ BuilderFactory bf = builderFactories[i];
+ addTest(new org.apache.axiom.ts.om.builder.TestGetDocumentElement(metaFactory, bf, null));
+ addTest(new org.apache.axiom.ts.om.builder.TestGetDocumentElement(metaFactory, bf, Boolean.FALSE));
+ addTest(new org.apache.axiom.ts.om.builder.TestGetDocumentElement(metaFactory, bf, Boolean.TRUE));
+ }
addTest(new org.apache.axiom.ts.om.builder.TestGetDocumentElementWithDiscardDocumentIllFormedEpilog(metaFactory));
addTest(new org.apache.axiom.ts.om.builder.TestGetDocumentElementWithIllFormedDocument(metaFactory));
addTest(new org.apache.axiom.ts.om.builder.TestInvalidXML(metaFactory));
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestGetDocumentElement.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestGetDocumentElement.java?rev=1435520&r1=1435519&r2=1435520&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestGetDocumentElement.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/builder/TestGetDocumentElement.java Sat Jan 19 10:32:49 2013
@@ -23,28 +23,65 @@ import java.io.StringReader;
import org.apache.axiom.om.OMComment;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMMetaFactory;
-import org.apache.axiom.om.OMXMLBuilderFactory;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.ts.AxiomTestCase;
+import org.apache.axiom.ts.strategy.BuilderFactory;
+import org.custommonkey.xmlunit.XMLAssert;
+import org.xml.sax.InputSource;
/**
- * Tests the behavior of {@link OMXMLParserWrapper#getDocumentElement()}.
+ * Tests the behavior of {@link OMXMLParserWrapper#getDocumentElement()} and
+ * {@link OMXMLParserWrapper#getDocumentElement(boolean)}.
*/
public class TestGetDocumentElement extends AxiomTestCase {
- public TestGetDocumentElement(OMMetaFactory metaFactory) {
+ private final BuilderFactory builderFactory;
+ private final Boolean discardDocument;
+
+ public TestGetDocumentElement(OMMetaFactory metaFactory, BuilderFactory builderFactory, Boolean discardDocument) {
super(metaFactory);
+ this.builderFactory = builderFactory;
+ this.discardDocument = discardDocument;
+ builderFactory.addTestProperties(this);
+ addTestProperty("discardDocument", String.valueOf(discardDocument));
}
protected void runTest() throws Throwable {
- OMXMLParserWrapper builder = OMXMLBuilderFactory.createOMBuilder(metaFactory.getOMFactory(),
- new StringReader("<!--comment1--><root/><!--comment2-->"));
- OMElement element = builder.getDocumentElement();
+ OMXMLParserWrapper builder = builderFactory.getBuilder(metaFactory,
+ new InputSource(new StringReader("<!--comment1--><root/><!--comment2-->")));
+ OMElement element;
+ if (discardDocument == null) {
+ element = builder.getDocumentElement();
+ } else {
+ element = builder.getDocumentElement(discardDocument.booleanValue());
+ }
assertNotNull("Document element can not be null", element);
assertEquals("Name of the document element is wrong", "root", element.getLocalName());
- // The getDocumentElement doesn't detach the document element from the document:
- assertSame(builder.getDocument(), element.getParent());
- assertSame(builder.getDocument().getOMDocumentElement(), element);
- assertTrue(element.getPreviousOMSibling() instanceof OMComment);
- assertTrue(element.getNextOMSibling() instanceof OMComment);
+ if (Boolean.TRUE.equals(discardDocument)) {
+ if (builderFactory.isDeferredParsing()) {
+ assertFalse(element.isComplete());
+ }
+ assertNull(element.getParent());
+ // Note: we can't test getNextOMSibling here because this would build the element
+ assertNull(element.getPreviousOMSibling());
+ OMElement newParent = element.getOMFactory().createOMElement("newParent", null);
+ newParent.addChild(element);
+ if (builderFactory.isDeferredParsing()) {
+ assertFalse(element.isComplete());
+ assertFalse(builder.isCompleted());
+ }
+ XMLAssert.assertXMLEqual("<newParent><root/></newParent>", newParent.toString());
+ assertTrue(element.isComplete());
+ // Since we discarded the document, the nodes in the epilog will not be accessible.
+ // Therefore we expect that when the document element changes its completion status,
+ // the builder will consume the epilog and change its completion status as well.
+ // This gives the underlying parser a chance to release some resources.
+ assertTrue(builder.isCompleted());
+ } else {
+ // The getDocumentElement doesn't detach the document element from the document:
+ assertSame(builder.getDocument(), element.getParent());
+ assertSame(builder.getDocument().getOMDocumentElement(), element);
+ assertTrue(element.getPreviousOMSibling() instanceof OMComment);
+ assertTrue(element.getNextOMSibling() instanceof OMComment);
+ }
}
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/TestGetXMLStreamReader.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/TestGetXMLStreamReader.java?rev=1435520&r1=1435519&r2=1435520&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/TestGetXMLStreamReader.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/TestGetXMLStreamReader.java Sat Jan 19 10:32:49 2013
@@ -29,6 +29,7 @@ import org.apache.axiom.om.util.StAXUtil
import org.apache.axiom.testutils.conformance.ConformanceTestFile;
import org.apache.axiom.testutils.stax.XMLStreamReaderComparator;
import org.apache.axiom.ts.ConformanceTestCase;
+import org.apache.axiom.ts.strategy.BuilderFactory;
import org.xml.sax.InputSource;
/**
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderCommentEvent.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderCommentEvent.java?rev=1435520&r1=1435519&r2=1435520&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderCommentEvent.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderCommentEvent.java Sat Jan 19 10:32:49 2013
@@ -26,7 +26,7 @@ import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMMetaFactory;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.ts.AxiomTestCase;
-import org.apache.axiom.ts.om.container.BuilderFactory;
+import org.apache.axiom.ts.strategy.BuilderFactory;
import org.xml.sax.InputSource;
public class TestGetXMLStreamReaderCommentEvent extends AxiomTestCase {
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderGetElementTextFromParser.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderGetElementTextFromParser.java?rev=1435520&r1=1435519&r2=1435520&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderGetElementTextFromParser.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderGetElementTextFromParser.java Sat Jan 19 10:32:49 2013
@@ -26,7 +26,7 @@ import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMMetaFactory;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.ts.AxiomTestCase;
-import org.apache.axiom.ts.om.container.BuilderFactory;
+import org.apache.axiom.ts.strategy.BuilderFactory;
import org.xml.sax.InputSource;
public class TestGetXMLStreamReaderGetElementTextFromParser extends AxiomTestCase {
Copied: webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/strategy/BuilderFactory.java (from r1435508, webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/BuilderFactory.java)
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/strategy/BuilderFactory.java?p2=webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/strategy/BuilderFactory.java&p1=webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/BuilderFactory.java&r1=1435508&r2=1435520&rev=1435520&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/container/BuilderFactory.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/strategy/BuilderFactory.java Sat Jan 19 10:32:49 2013
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.axiom.ts.om.container;
+package org.apache.axiom.ts.strategy;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.SAXParser;
@@ -28,7 +28,6 @@ import org.apache.axiom.om.OMXMLBuilderF
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.testutils.stax.XMLStreamReaderComparator;
import org.apache.axiom.ts.AxiomTestCase;
-import org.apache.axiom.ts.strategy.Strategy;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
@@ -41,6 +40,10 @@ public interface BuilderFactory extends
* instantiate an appropriate parser.
*/
BuilderFactory PARSER = new BuilderFactory() {
+ public boolean isDeferredParsing() {
+ return true;
+ }
+
public void configureXMLStreamReaderComparator(XMLStreamReaderComparator comparator) {
}
@@ -59,6 +62,10 @@ public interface BuilderFactory extends
* tree to Axiom.
*/
BuilderFactory DOM = new BuilderFactory() {
+ public boolean isDeferredParsing() {
+ return true;
+ }
+
public void configureXMLStreamReaderComparator(XMLStreamReaderComparator comparator) {
// DOM gives access to the parsed replacement value (via the Entity interface), but Axiom
// stores the unparsed replacement value. Therefore OMEntityReference#getReplacementText()
@@ -83,6 +90,10 @@ public interface BuilderFactory extends
* Creates an {@link OMXMLParserWrapper} by passing a {@link SAXSource} to Axiom.
*/
BuilderFactory SAX = new BuilderFactory() {
+ public boolean isDeferredParsing() {
+ return false;
+ }
+
public void configureXMLStreamReaderComparator(XMLStreamReaderComparator comparator) {
// SAX doesn't provide this information
comparator.setCompareCharacterEncodingScheme(false);
@@ -103,6 +114,15 @@ public interface BuilderFactory extends
}
};
+ /**
+ * Determines if the builder created by this strategy supports deferred parsing.
+ *
+ * @return <code>true</code> if the builder supports deferred parsing, <code>false</code> if the
+ * builder doesn't support deferred parsing and will build the document all in once
+ * (this is the case for SAX only)
+ */
+ boolean isDeferredParsing();
+
void configureXMLStreamReaderComparator(XMLStreamReaderComparator comparator);
OMXMLParserWrapper getBuilder(OMMetaFactory metaFactory, InputSource inputSource) throws Exception;