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;
+ }
}