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]