Merge from trunk to TILES_2_0_X branch.

TILES-223
Now validation is turned ON by default.

TILES-225
Now the DefinitionsFactoryException is a normal implementation of an extended exception.


git-svn-id: https://svn.apache.org/repos/asf/tiles/framework/branches/TILES_2_0_X@585406 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactoryException.java b/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactoryException.java
index 41d7639..1670fe7 100644
--- a/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactoryException.java
+++ b/tiles-core/src/main/java/org/apache/tiles/definition/DefinitionsFactoryException.java
@@ -36,7 +36,6 @@
      */
     public DefinitionsFactoryException() {
         super();
-        this.exception = null;
     }
 
     /**
@@ -46,7 +45,6 @@
      */
     public DefinitionsFactoryException(String message) {
         super(message);
-        this.exception = null;
     }
 
 
@@ -60,8 +58,7 @@
      * @param e The exception to be wrapped.
      */
     public DefinitionsFactoryException(Exception e) {
-        super();
-        this.exception = e;
+        super(e);
     }
 
 
@@ -75,49 +72,6 @@
      * @param e       The exception to be wrapped.
      */
     public DefinitionsFactoryException(String message, Exception e) {
-        super(message);
-        this.exception = e;
+        super(message, e);
     }
-
-
-    /**
-     * Return a detail message for this exception.
-     * <p/>
-     * <p>If there is a embedded exception, and if the DefinitionsFactoryException
-     * has no detail message of its own, this method will return
-     * the detail message from the embedded exception.</p>
-     *
-     * @return The error or warning message.
-     */
-    public String getMessage() {
-        String message = super.getMessage();
-
-        if (message == null && exception != null) {
-            return exception.getMessage();
-        } else {
-            return message;
-        }
-    }
-
-
-    /**
-     * Return the embedded exception, if any.
-     *
-     * @return The embedded exception, or <code>null</code> if there is none.
-     */
-    public Exception getException() {
-        return exception;
-    }
-
-    //////////////////////////////////////////////////////////////////////
-    // Internal state.
-    //////////////////////////////////////////////////////////////////////
-
-
-    /**
-     * Any "wrapped" exception will be exposed when this is serialized.
-     *
-     * @serial
-     */
-    private Exception exception;
 }
diff --git a/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java b/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
index 25cf2f2..469b0f0 100644
--- a/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
+++ b/tiles-core/src/main/java/org/apache/tiles/definition/digester/DigesterDefinitionsReader.java
@@ -166,9 +166,9 @@
     private Map<String, Definition> definitions;
     /**
      * Should we use a validating XML parser to read the configuration file.
-     * Default is <code>false</code>.
+     * Default is <code>true</code>.
      */
-    protected boolean validating = false;
+    protected boolean validating = true;
     /**
      * The set of public identifiers, and corresponding resource names for
      * the versions of the configuration file DTDs we know about.  There
diff --git a/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java b/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
index 700a63c..9c1a732 100644
--- a/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
+++ b/tiles-core/src/test/java/org/apache/tiles/definition/digester/TestDigesterDefinitionsReader.java
@@ -198,11 +198,10 @@
      * configuration file with invalid XML.
      */
     public void testValidatingParameter() {
+        // Testing with default (validation ON).
         try {
             DefinitionsReader reader = new DigesterDefinitionsReader();
             Map<String, String> params = new HashMap<String, String>();
-            params.put(DigesterDefinitionsReader.PARSER_VALIDATE_PARAMETER_NAME,
-                    "true");
             reader.init(params);
 
             URL configFile = this.getClass().getClassLoader().getResource(
@@ -220,5 +219,25 @@
         } catch (Exception e) {
             fail("Exception reading configuration." + e);
         }
+
+        // Testing with validation OFF.
+        try {
+            DefinitionsReader reader = new DigesterDefinitionsReader();
+            Map<String, String> params = new HashMap<String, String>();
+            params.put(DigesterDefinitionsReader.PARSER_VALIDATE_PARAMETER_NAME,
+                    "false");
+            reader.init(params);
+
+            URL configFile = this.getClass().getClassLoader().getResource(
+                    "org/apache/tiles/config/invalid-defs.xml");
+            assertNotNull("Config file not found", configFile);
+
+            InputStream source = configFile.openStream();
+            reader.read(source);
+        } catch (DefinitionsFactoryException e) {
+            fail("Should not have thrown an exception." + e);
+        } catch (Exception e) {
+            fail("Exception reading configuration." + e);
+        }
     }
 }