Author: scheu
Date: Mon Aug  4 10:20:18 2008
New Revision: 682443

URL: http://svn.apache.org/viewvc?rev=682443&view=rev
Log:
Quick Trace Improvement
Added trace to ensure that the event returned from "parser.next()" is the same 
event that is returned by 
the parser's current event.  If these don't match, then the parser is in a bad 
state.  Thus this trace information
is useful for identifying problems in the underlying parser.

Modified:
    
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java

Modified: 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java
URL: 
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java?rev=682443&r1=682442&r2=682443&view=diff
==============================================================================
--- 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java
 (original)
+++ 
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java
 Mon Aug  4 10:20:18 2008
@@ -162,20 +162,33 @@
             if (!cache) {
                 return token;
             }
-            // Now log the current state of the parser
+           
+            // The current token should be the same as the 
+            // one just obtained.  This bit of code is used to 
+            // detect invalid parser state.
             if (doTrace) {
-                logParserState();
-            }
-            
-            /*
-            int currentParserToken = parser.getEventType();
-            if (currentParserToken != token) {
-                throw new OMException("The current token " + token + 
+                int currentParserToken = parser.getEventType();
+                if (currentParserToken != token) {
+
+
+                    log.debug("WARNING: The current state of the parser is not 
equal to the " +
+                              "state just received from the parser. The 
current state in the paser is " +
+                              getStateString(currentParserToken) + " the state 
just received is " +
+                              getStateString(token));
+
+                    /*
+                      throw new OMException("The current token " + token + 
                                      " does not match the current event " +
                                      "reported by the parser token.  The 
parser did not update its state correctly.  " +
                                      "The parser is " + parser);
+                     */
+                }
+            }
+            
+            // Now log the current state of the parser
+            if (doTrace) {
+                logParserState();
             }
-            */
            
             switch (token) {
                 case XMLStreamConstants.START_ELEMENT:
@@ -596,4 +609,46 @@
     public boolean isLookahead() {
         return lookAheadToken >= 0;
     }
+    
+    private String getStateString(int token) {
+        String state = null;
+        switch(token) {
+        case XMLStreamConstants.START_ELEMENT:
+            state = "START_ELEMENT";
+            break;
+        case XMLStreamConstants.START_DOCUMENT:
+            state = "START_DOCUMENT";
+            break;
+        case XMLStreamConstants.CHARACTERS:
+            state = "CHARACTERS";
+            break;
+        case XMLStreamConstants.CDATA:
+            state = "CDATA";
+            break;
+        case XMLStreamConstants.END_ELEMENT:
+            state = "END_ELEMENT";
+            break;
+        case XMLStreamConstants.END_DOCUMENT:
+            state = "END_DOCUMENT";
+            break;
+        case XMLStreamConstants.SPACE:
+            state = "SPACE";
+            break;
+        case XMLStreamConstants.COMMENT:
+            state = "COMMENT";
+            break;
+        case XMLStreamConstants.DTD:
+            state = "DTD";
+            break;
+        case XMLStreamConstants.PROCESSING_INSTRUCTION:
+            state = "PROCESSING_INSTRUCTION";
+            break;
+        case XMLStreamConstants.ENTITY_REFERENCE:
+            state = "ENTITY_REFERENCE";
+            break;
+        default :
+            state = "UNKNOWN_STATE: " + token;
+        }
+        return state;
+    }
 }


Reply via email to