You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by ap...@apache.org on 2007/10/12 22:39:28 UTC

svn commit: r584262 - in /tiles/framework/trunk/tiles-core/src: main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java

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 {@link 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 {
+
+        /** {@inheritDoc} */
+        public void warning(SAXParseException exception) throws SAXException {
+            throw exception;
+        }
+
+        /** {@inheritDoc} */
+        public void error(SAXParseException exception) throws SAXException {
+            throw exception;
+        }
+
+        /** {@inheritDoc} */
+        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);
         }
-         */
     }
 }