Author: veithen Date: Sat Mar 14 10:11:55 2009 New Revision: 753628 URL: http://svn.apache.org/viewvc?rev=753628&view=rev Log: * Merged changes in r356660 (implement nextTag) from OMStAXWrapper to DOMStAXWrapper. * Added a unit test for nextTag.
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=753628&r1=753627&r2=753628&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 Sat Mar 14 10:11:55 2009 @@ -161,4 +161,19 @@ public void testNonRootElementWithoutCaching() throws Exception { testNonRootElement(false); } + + public void testNextTag() throws Exception { + OMElement element = AXIOMUtil.stringToOM(omMetaFactory.getOMFactory(), + "<a> <b> </b> <?pi?> <!--comment--> <c/> </a>"); + XMLStreamReader stream = element.getXMLStreamReaderWithoutCaching(); + assertEquals(XMLStreamReader.START_ELEMENT, stream.next()); + stream.nextTag(); + assertEquals(XMLStreamReader.START_ELEMENT, stream.getEventType()); + assertEquals("b", stream.getLocalName()); + stream.nextTag(); + assertEquals(XMLStreamReader.END_ELEMENT, stream.getEventType()); + stream.nextTag(); + assertEquals(XMLStreamReader.START_ELEMENT, stream.getEventType()); + assertEquals("c", stream.getLocalName()); + } } 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=753628&r1=753627&r2=753628&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 Sat Mar 14 10:11:55 2009 @@ -779,7 +779,7 @@ } /** - * Not implemented yet + * Returns the next tag. * * @return Returns int. * @throws org.apache.axiom.om.impl.exception.OMStreamingException @@ -787,7 +787,19 @@ * @throws XMLStreamException */ public int nextTag() throws XMLStreamException { - throw new UnsupportedOperationException(); + int eventType = next(); + while ((eventType == XMLStreamConstants.CHARACTERS && isWhiteSpace()) // skip whitespace + || (eventType == XMLStreamConstants.CDATA && isWhiteSpace()) // skip whitespace + || eventType == XMLStreamConstants.SPACE + || eventType == XMLStreamConstants.PROCESSING_INSTRUCTION + || eventType == XMLStreamConstants.COMMENT) { + eventType = next(); + } + if (eventType != XMLStreamConstants.START_ELEMENT && + eventType != XMLStreamConstants.END_ELEMENT) { + throw new XMLStreamException("expected start or end tag", getLocation()); + } + return eventType; } /**