Author: scheu
Date: Sun Mar 16 14:59:02 2008
New Revision: 637668

URL: http://svn.apache.org/viewvc?rev=637668&view=rev
Log:
WSCOMMONS-312
Contributor: Rich Scheuerle
Don't call builder.next() if the builder is marked as complete.

Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
    
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMStAXWrapper.java

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java?rev=637668&r1=637667&r2=637668&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
 Sun Mar 16 14:59:02 2008
@@ -37,7 +37,6 @@
 import org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory;
 import org.apache.axiom.om.impl.traverse.OMChildElementIterator;
 import org.apache.axiom.om.impl.traverse.OMChildrenIterator;
-import org.apache.axiom.om.impl.traverse.OMChildrenLegacyQNameIterator;
 import org.apache.axiom.om.impl.traverse.OMChildrenLocalNameIterator;
 import org.apache.axiom.om.impl.traverse.OMChildrenNamespaceIterator;
 import org.apache.axiom.om.impl.traverse.OMChildrenQNameIterator;
@@ -45,12 +44,15 @@
 import org.apache.axiom.om.impl.util.OMSerializerUtil;
 import org.apache.axiom.om.util.ElementHelper;
 import org.apache.axiom.om.util.StAXUtils;
+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;
 import javax.xml.stream.XMLStreamWriter;
+
 import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -60,6 +62,9 @@
 public class OMElementImpl extends OMNodeImpl
         implements OMElement, OMConstants, OMContainerEx {
 
+    private static final Log log = LogFactory.getLog(OMElementImpl.class);
+    private static boolean DEBUG_ENABLED = log.isDebugEnabled();
+    
     public static final OMNamespace DEFAULT_DEFAULT_NS_OBJECT = new 
OMNamespaceImpl("", "");
 
     /** Field ns */
@@ -292,11 +297,18 @@
      * @throws OMException
      */
     public OMNode getNextOMSibling() throws OMException {
-        while (!done && builder != null) {
-            int token = builder.next();
-            if (token == XMLStreamConstants.END_DOCUMENT) {
-                throw new OMException(
-                        "Parser has already reached end of the document. No 
siblings found");
+        while (!done && builder != null ) {
+            if (builder.isCompleted()) {
+                if (DEBUG_ENABLED) {
+                    log.debug("Builder is complete.  Setting OMElement to 
complete.");
+                }
+                setComplete(true);
+            } else {
+                int token = builder.next();
+                if (token == XMLStreamConstants.END_DOCUMENT) {
+                    throw new OMException(
+                    "Parser has already reached end of the document. No 
siblings found");
+                }
             }
         }
         return super.getNextOMSibling();
@@ -617,7 +629,14 @@
     /** Forces the parser to proceed, if parser has not yet finished with the 
XML input. */
     public void buildNext() {
         if (builder != null) {
-            builder.next();
+            if (!builder.isCompleted()) {
+                builder.next();
+            } else {
+                this.setComplete(true);
+                if (DEBUG_ENABLED) {
+                    log.debug("Builder is complete.  Setting OMElement to 
complete.");
+                }
+            }         
         }
     }
 

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java?rev=637668&r1=637667&r2=637668&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMNodeImpl.java
 Sun Mar 16 14:59:02 2008
@@ -37,6 +37,8 @@
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory;
 import org.apache.axiom.om.util.StAXUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
@@ -45,6 +47,10 @@
 
 /** Class OMNodeImpl */
 public abstract class OMNodeImpl implements OMNode, OMNodeEx {
+    
+    private static final Log log = LogFactory.getLog(OMNodeImpl.class);
+    private static boolean DEBUG_ENABLED = log.isDebugEnabled();
+    
     /** Field parent */
     protected OMContainerEx parent;
 
@@ -317,6 +323,12 @@
     public void build() throws OMException {
         while (!done) {
             builder.next();
+            if (builder.isCompleted() && !done) {
+                if (DEBUG_ENABLED) {
+                    log.debug("Builder is complete.  Setting OMNode to 
complete.");
+                }
+                setComplete(true);
+            }
         }
     }
 

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMStAXWrapper.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMStAXWrapper.java?rev=637668&r1=637667&r2=637668&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMStAXWrapper.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMStAXWrapper.java
 Sun Mar 16 14:59:02 2008
@@ -47,12 +47,18 @@
 import org.apache.axiom.om.impl.builder.StAXBuilder;
 import org.apache.axiom.om.impl.exception.OMStreamingException;
 import org.apache.axiom.om.impl.llom.util.NamespaceContextImpl;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 /**
  * Note  - This class also implements the streaming constants interface to get 
access to the StAX
  * constants
  */
 public class OMStAXWrapper implements XMLStreamReader, XMLStreamConstants {
+    
+    private static final Log log = LogFactory.getLog(OMStAXWrapper.class);
+    private static boolean DEBUG_ENABLED = log.isDebugEnabled();
+    
     /** Field navigator */
     private OMNavigator navigator;
 
@@ -1052,9 +1058,13 @@
             nextNode = navigator.next();
         } else {
             if (!switchingAllowed) {
-                if (navigator.isCompleted()) {
+                if (navigator.isCompleted() || builder.isCompleted()) {
                     nextNode = null;
-
+                    if (DEBUG_ENABLED) {
+                        if (builder.isCompleted()) {
+                            log.debug("Builder is complete.  Next node is set 
to null.");
+                        }
+                    }
                 } else {
                     builder.next();
                     navigator.step();



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to