You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2005/12/27 19:24:30 UTC
svn commit: r359259 -
/webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMStAXWrapper.java
Author: dims
Date: Tue Dec 27 10:24:28 2005
New Revision: 359259
URL: http://svn.apache.org/viewcvs?rev=359259&view=rev
Log:
Fix for problem reported here: http://marc.theaimsgroup.com/?l=axis-dev&m=113570250225223&w=2
Modified:
webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMStAXWrapper.java
Modified: webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMStAXWrapper.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMStAXWrapper.java?rev=359259&r1=359258&r2=359259&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMStAXWrapper.java (original)
+++ webservices/axis2/trunk/java/modules/xml/src/org/apache/axis2/om/impl/llom/OMStAXWrapper.java Tue Dec 27 10:24:28 2005
@@ -129,6 +129,11 @@
*/
private OMNode lastNode = null;
+ /**
+ * Track depth to ensure we stop generating events when we are done with the root node.
+ */
+ int depth = 0;
+
private boolean needToThrowEndDocument = false;
/**
@@ -852,7 +857,10 @@
} catch (Exception e) {
throw new XMLStreamException("problem accessing the parser", e);
}
-
+ // Initialize the depth
+ depth = 0;
+ // We should throw an END_DOCUMENT as well
+ needToThrowEndDocument = true;
if ((currentEvent == START_DOCUMENT) &&
(currentEvent == parser.getEventType())) {
currentEvent = parser.next();
@@ -945,6 +953,16 @@
}
}
} else {
+ if (state == SWITCHED) {
+ if (currentEvent == START_ELEMENT) {
+ ++depth;
+ } else if (currentEvent == END_ELEMENT) {
+ --depth;
+ if(depth < 0) {
+ state = COMPLETED;
+ }
+ }
+ }
state = (currentEvent == END_DOCUMENT)
? DOCUMENT_COMPLETE
: state;