Fix for issue #1796. I am not sure that the behavior is what we want. The original problem is that the XML parser throws a NULL pointer exception if there is a non-blank body to an XML element and there is no stack element left (we are at an inner most definition of a class.) I modified the characters() method so that a body filled with whitepace is OK, but a body with some text in it will throw a (specific) exception.
The problem occurs in the module XML file under the following condition:
<servelet> </servelet> <!-- OK -->
<servelet> stuff </servelet> <!-- throws a SAXException pointing out that the " stuff " is unexpected -->
(I ran into this when editing my module.xml file with the eclipse built-in XML editor.)
Patch by: zundel
Review by: me
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1509 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/util/xml/ReflectiveParser.java b/dev/core/src/com/google/gwt/dev/util/xml/ReflectiveParser.java
index 5c31158..1b53760 100644
--- a/dev/core/src/com/google/gwt/dev/util/xml/ReflectiveParser.java
+++ b/dev/core/src/com/google/gwt/dev/util/xml/ReflectiveParser.java
@@ -65,6 +65,21 @@
//
Schema schemaLevel = getTopSchemaLevel();
+ if (schemaLevel == null) {
+ // It is legitimate to run out of schemaLevels if there is an empty node
+ // in the XML. Otherwise, it indicates that the user has specified
+ // extra stuff in the body of the XML tag that we don't understand.
+ //
+ for (int i = 0; i < length; i++) {
+ if (!Character.isWhitespace(ch[i + start])) {
+ throw new SAXException("Unexpected XML data found: "
+ + String.valueOf(ch, start, length));
+ }
+ }
+ // This is okay. Nothing special to do.
+ //
+ return;
+ }
// Find the precomputed handler class info.
//
Class slc = schemaLevel.getClass();