Author: apetrelli
Date: Fri Oct 12 13:39:04 2007
New Revision: 584262

URL: http://svn.apache.org/viewvc?rev=584262&view=rev
Log:
TILES-224
Now loading an invalid Tiles definition file raises an exception, thanks to a 
specific error handler.

Modified:
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
    
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java?rev=584262&r1=584261&r2=584262&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
 Fri Oct 12 13:39:04 2007
@@ -30,6 +30,7 @@
 import org.apache.tiles.definition.DefinitionsFactoryException;
 import org.apache.tiles.definition.DefinitionsReader;
 import org.xml.sax.Attributes;
+import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXException;
 
 import java.io.IOException;
@@ -37,6 +38,7 @@
 import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
+import org.xml.sax.SAXParseException;
 
 /**
  * Reads [EMAIL PROTECTED] Definition} objects from
@@ -195,6 +197,7 @@
         digester.setValidating(validating);
         digester.setNamespaceAware(true);
         digester.setUseContextClassLoader(true);
+        digester.setErrorHandler(new ThrowingErrorHandler());
 
         // Register our local copy of the DTDs that we can find
         for (int i = 0; i < registrations.length; i += 2) {
@@ -365,5 +368,26 @@
      */
     public void addDefinition(Definition definition) {
         definitions.put(definition.getName(), definition);
+    }
+
+    /**
+     * Error Handler that throws every exception it receives.
+     */
+    private static class ThrowingErrorHandler implements ErrorHandler {
+
+        /** [EMAIL PROTECTED] */
+        public void warning(SAXParseException exception) throws SAXException {
+            throw exception;
+        }
+
+        /** [EMAIL PROTECTED] */
+        public void error(SAXParseException exception) throws SAXException {
+            throw exception;
+        }
+
+        /** [EMAIL PROTECTED] */
+        public void fatalError(SAXParseException exception) throws 
SAXException {
+            throw exception;
+        }
     }
 }

Modified: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java?rev=584262&r1=584261&r2=584262&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
 Fri Oct 12 13:39:04 2007
@@ -204,7 +204,7 @@
          *
          * I don't know why DigesterDefinitionsReader doesn't catch the
          * SAXParseException or how it makes it to the "fail" statement below.
-         *
+         */
         try {
             DefinitionsReader reader = new DigesterDefinitionsReader();
             Map params = new HashMap();
@@ -224,6 +224,5 @@
         } catch (Exception e) {
             fail("Exception reading configuration." + e);
         }
-         */
     }
 }


Reply via email to