https://issues.apache.org/bugzilla/show_bug.cgi?id=10972
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 15 Dec 2010 17:58:05 +0000 (17:58 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 15 Dec 2010 17:58:05 +0000 (17:58 +0000)
Improve error message if the className attribute is missing on an element in server.xml where it is required.

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1049654 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/catalina/startup/Catalina.java
java/org/apache/tomcat/util/digester/Digester.java
java/org/apache/tomcat/util/digester/ObjectCreateRule.java
webapps/docs/changelog.xml

index 57da06d..0359999 100644 (file)
@@ -45,6 +45,7 @@ import org.apache.tomcat.util.log.SystemLogHandler;
 import org.apache.tomcat.util.res.StringManager;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
+import org.xml.sax.SAXParseException;
 
 
 /**
@@ -532,9 +533,12 @@ public class Catalina {
             digester.push(this);
             digester.parse(inputSource);
             inputStream.close();
+        } catch (SAXParseException spe) {
+            log.warn("Catalina.start using " + getConfigFile() + ": " +
+                    spe.getMessage());
+            return;
         } catch (Exception e) {
-            log.warn("Catalina.start using "
-                               + getConfigFile() + ": " , e);
+            log.warn("Catalina.start using " + getConfigFile() + ": " , e);
             return;
         }
 
index 1a8886f..25e52ab 100644 (file)
@@ -2682,7 +2682,7 @@ public class Digester extends DefaultHandler {
         }
         if (locator != null) {
             String error = "Error at (" + locator.getLineNumber() + ", " +
-                    locator.getColumnNumber() + ": " + message;
+                    locator.getColumnNumber() + ": " + message;
             if (e != null) {
                 return new SAXParseException(error, locator, e);
             } else {
index 834520b..b6b948c 100644 (file)
@@ -136,11 +136,15 @@ public class ObjectCreateRule extends Rule {
                     "}New " + realClassName);
         }
 
+        if (realClassName == null) {
+            throw new NullPointerException("No class name specified for " +
+                    namespace + " " + name);
+        }
+
         // Instantiate the new object and push it on the context stack
         Class<?> clazz = digester.getClassLoader().loadClass(realClassName);
         Object instance = clazz.newInstance();
         digester.push(instance);
-
     }
 
 
index 4d7218f..948b33a 100644 (file)
         performance benefits. (markt)
       </add>
       <update>
+        <bug>10972</bug>: Improve error message if the className attribute is
+        missing on an element in server.xml where it is required. (markt)
+      </update>
+      <update>
         <bug>48692</bug>: Provide option to parse
         <code>application/x-www-form-urlencoded</code> PUT requests. (schultz)
       </update>