You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ve...@apache.org on 2009/03/14 00:09:33 UTC
svn commit: r753469 - in /webservices/commons/trunk/modules/axiom/modules:
axiom-api/src/test/java/org/apache/axiom/om/impl/
axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/
axiom-tests/src/test/java/org/apache/axiom/om/impl/llom/
Author: veithen
Date: Fri Mar 13 23:09:33 2009
New Revision: 753469
URL: http://svn.apache.org/viewvc?rev=753469&view=rev
Log:
* Merged changes in r425401 (!) (Implementing the getElementText support as per the API contract) from OMStAXWrapper to DOMStAXWrapper.
* Moved the test case in OMElementGetElementTextTest to OMStAXWrapperTestBase, so that it is also executed for DOOM.
Removed:
webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/om/impl/llom/OMElementGetElementTextTest.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/om/impl/OMStAXWrapperTestBase.java
webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/om/impl/OMStAXWrapperTestBase.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/om/impl/OMStAXWrapperTestBase.java?rev=753469&r1=753468&r2=753469&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/om/impl/OMStAXWrapperTestBase.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/om/impl/OMStAXWrapperTestBase.java Fri Mar 13 23:09:33 2009
@@ -30,6 +30,7 @@
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMMetaFactory;
+import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.om.OMNode;
import org.apache.axiom.om.OMText;
import org.apache.axiom.om.impl.builder.StAXOMBuilder;
@@ -117,4 +118,23 @@
}
assertEquals("comment text", text.toString());
}
+
+ public void testGetElementText() throws Exception {
+ OMFactory factory = omMetaFactory.getOMFactory();
+
+ OMNamespace namespace = factory.createOMNamespace("http://testuri.org", "test");
+ OMElement documentElement = factory.createOMElement("DocumentElement", namespace);
+ factory.createOMText(documentElement, "this is a TEXT");
+ factory.createOMComment(documentElement, "this is a comment");
+ factory.createOMText(documentElement, "this is a TEXT block 2");
+
+ XMLStreamReader xmlStreamReader = documentElement.getXMLStreamReader();
+ //move to the Start_Element
+ while (xmlStreamReader.getEventType() != XMLStreamReader.START_ELEMENT) {
+ xmlStreamReader.next();
+ }
+
+ String elementText = xmlStreamReader.getElementText();
+ assertEquals("this is a TEXTthis is a TEXT block 2", elementText);
+ }
}
Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java?rev=753469&r1=753468&r2=753469&view=diff
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/DOMStAXWrapper.java Fri Mar 13 23:09:33 2009
@@ -800,13 +800,37 @@
throw new OMStreamingException(e);
}
} else {
- if (currentNode.getType() == OMNode.ELEMENT_NODE) {
- return ((OMElement) currentNode).getText();
- } else if (currentNode.getType() == OMNode.TEXT_NODE) {
- return ((OMText) currentNode).getText();
- } else {
- return "";
+ ///////////////////////////////////////////////////////
+ //// Code block directly from the API documentation ///
+ if (getEventType() != XMLStreamConstants.START_ELEMENT) {
+ throw new XMLStreamException(
+ "parser must be on START_ELEMENT to read next text", getLocation());
+ }
+ int eventType = next();
+ StringBuffer content = new StringBuffer();
+ while (eventType != XMLStreamConstants.END_ELEMENT) {
+ if (eventType == XMLStreamConstants.CHARACTERS
+ || eventType == XMLStreamConstants.CDATA
+ || eventType == XMLStreamConstants.SPACE
+ || eventType == XMLStreamConstants.ENTITY_REFERENCE) {
+ content.append(getText());
+ } else if (eventType == XMLStreamConstants.PROCESSING_INSTRUCTION
+ || eventType == XMLStreamConstants.COMMENT) {
+ // skipping
+ } else if (eventType == XMLStreamConstants.END_DOCUMENT) {
+ throw new XMLStreamException(
+ "unexpected end of document when reading element text content");
+ } else if (eventType == XMLStreamConstants.START_ELEMENT) {
+ throw new XMLStreamException(
+ "element text content may not contain START_ELEMENT");
+ } else {
+ throw new XMLStreamException(
+ "Unexpected event type " + eventType, getLocation());
+ }
+ eventType = next();
}
+ return content.toString();
+ ///////////////////////////////////////////////////////////////
}
}