Let XMLStreamReaderValidator catch unexpected END_DOCUMENT events.
diff --git a/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java b/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java
index d09dddc..40d33f5 100644
--- a/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java
+++ b/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/debug/XMLStreamReaderValidator.java
@@ -96,41 +96,32 @@
case XMLStreamConstants.END_ELEMENT:
QName delegateQName = super.getName();
if (stack.isEmpty()) {
- reportMismatchedEndElement(null, delegateQName);
+ reportError("An END_ELEMENT event for " + delegateQName +
+ " was encountered, but the START_ELEMENT stack is empty.");
} else {
QName expectedQName = (QName) stack.pop();
if (!expectedQName.equals(delegateQName)) {
- reportMismatchedEndElement(expectedQName, delegateQName);
+ reportError("An END_ELEMENT event for " + delegateQName +
+ " was encountered, but this doesn't match the corresponding START_ELEMENT " +
+ expectedQName + " event.");
}
}
break;
-
+ case XMLStreamConstants.END_DOCUMENT:
+ if (!stack.isEmpty()) {
+ reportError("An unexpected END_DOCUMENT event was encountered; element stack: " + stack);
+ }
+ break;
default :
}
}
-
- /**
- * Report a mismatched end element.
- * @param expectedQName
- * @param delegateQName
- * @throws XMLStreamException
- */
- private void reportMismatchedEndElement(QName expectedQName, QName delegateQName) throws XMLStreamException {
- String text = null;
- if (expectedQName == null) {
- text = "An END_ELEMENT event for " + delegateQName +
- " was encountered, but the START_ELEMENT stack is empty.";
- } else {
- text = "An END_ELEMENT event for " + delegateQName +
- " was encountered, but this doesn't match the corresponding START_ELEMENT " +
- expectedQName + " event.";
- }
- log.debug(text);
+ private void reportError(String message) throws XMLStreamException {
+ log.debug(message);
if (throwExceptions) {
- throw new XMLStreamException(text);
+ throw new XMLStreamException(message);
}
}