You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by oh...@apache.org on 2006/04/17 20:11:19 UTC

svn commit: r394744 - in /jakarta/commons/proper/configuration/trunk/src: java/org/apache/commons/configuration/XMLConfiguration.java test/org/apache/commons/configuration/TestXMLConfiguration.java

Author: oheger
Date: Mon Apr 17 11:11:19 2006
New Revision: 394744

URL: http://svn.apache.org/viewcvs?rev=394744&view=rev
Log:
Catching TransformerFactoryConfigurationError when saving XML files. Thanks to Rahul Akolkar for this tip!

Modified:
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/XMLConfiguration.java
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/XMLConfiguration.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/XMLConfiguration.java?rev=394744&r1=394743&r2=394744&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/XMLConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/XMLConfiguration.java Mon Apr 17 11:11:19 2006
@@ -35,6 +35,7 @@
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
@@ -632,6 +633,10 @@
         catch (TransformerException e)
         {
             throw new ConfigurationException(e.getMessage(), e);
+        }
+        catch (TransformerFactoryConfigurationError err)
+        {
+            throw new ConfigurationException(err.getMessage(), err);
         }
     }
 

Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java?rev=394744&r1=394743&r2=394744&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java Mon Apr 17 11:11:19 2006
@@ -61,6 +61,9 @@
     /** Constant for the DOCTYPE prefix.*/
     static final String DOCTYPE = "<!DOCTYPE ";
 
+    /** Constant for the transformer factory property.*/
+    static final String PROP_FACTORY = "javax.xml.transform.TransformerFactory";
+
     /** The File that we test with */
     private String testProperties = new File("conf/test.xml").getAbsolutePath();
     private String testProperties2 = new File("conf/testDigesterConfigurationInclude1.xml").getAbsolutePath();
@@ -852,6 +855,29 @@
         conf.save(out);
         assertTrue("Did not find DOCTYPE", out.toString().indexOf(
                 DOCTYPE + "testconfig" + DOCTYPE_DECL) >= 0);
+    }
+
+    /**
+     * Tests saving a configuration when an invalid transformer factory is
+     * specified. In this case the error thrown by the TransformerFactory class
+     * should be caught and re-thrown as a ConfigurationException.
+     */
+    public void testSaveWithInvalidTransformerFactory()
+    {
+        System.setProperty(PROP_FACTORY, "an.invalid.Class");
+        try
+        {
+            conf.save(testSaveConf);
+            fail("Could save with invalid TransformerFactory!");
+        }
+        catch (ConfigurationException cex)
+        {
+            // ok
+        }
+        finally
+        {
+            System.getProperties().remove(PROP_FACTORY);
+        }
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org