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 2005/08/21 19:13:29 UTC

svn commit: r234275 - in /jakarta/commons/proper/configuration/trunk: conf/ src/java/org/apache/commons/configuration/ src/test/org/apache/commons/configuration/ xdocs/

Author: oheger
Date: Sun Aug 21 10:13:01 2005
New Revision: 234275

URL: http://svn.apache.org/viewcvs?rev=234275&view=rev
Log:
Fixed a bug in the handling of relative file names in ConfigurationFactory (issue 35316)

Modified:
    jakarta/commons/proper/configuration/trunk/conf/testDigesterConfiguration.xml
    jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationNamespaceAware.xml
    jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationReverseOrder.xml
    jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationWJNDI.xml
    jakarta/commons/proper/configuration/trunk/conf/testEqualDigester.xml
    jakarta/commons/proper/configuration/trunk/conf/testSequenceDigester.xml
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationFactory.java
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestConfigurationFactory.java
    jakarta/commons/proper/configuration/trunk/xdocs/changes.xml

Modified: jakarta/commons/proper/configuration/trunk/conf/testDigesterConfiguration.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/conf/testDigesterConfiguration.xml?rev=234275&r1=234274&r2=234275&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/conf/testDigesterConfiguration.xml (original)
+++ jakarta/commons/proper/configuration/trunk/conf/testDigesterConfiguration.xml Sun Aug 21 10:13:01 2005
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
 
 <configuration>
-  <properties fileName="conf/test.properties"/>
-  <properties fileName="conf/test.properties.xml"/>
-  <xml fileName="conf/test.xml"/>
+  <properties fileName="test.properties"/>
+  <properties fileName="test.properties.xml"/>
+  <xml fileName="test.xml"/>
 </configuration>

Modified: jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationNamespaceAware.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationNamespaceAware.xml?rev=234275&r1=234274&r2=234275&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationNamespaceAware.xml (original)
+++ jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationNamespaceAware.xml Sun Aug 21 10:13:01 2005
@@ -2,6 +2,6 @@
 
 <configuration xmlns:foo="namespace-one"
                xmlns:bar="namespace-two">
-  <foo:properties fileName="conf/test.properties"/>
-  <bar:xml fileName="conf/test.xml"/>
+  <foo:properties fileName="test.properties"/>
+  <bar:xml fileName="test.xml"/>
 </configuration>

Modified: jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationReverseOrder.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationReverseOrder.xml?rev=234275&r1=234274&r2=234275&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationReverseOrder.xml (original)
+++ jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationReverseOrder.xml Sun Aug 21 10:13:01 2005
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
 
 <configuration>
-  <xml fileName="conf/test.xml"/>
-  <properties fileName="conf/test.properties"/>
+  <xml fileName="test.xml"/>
+  <properties fileName="test.properties"/>
 </configuration>

Modified: jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationWJNDI.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationWJNDI.xml?rev=234275&r1=234274&r2=234275&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationWJNDI.xml (original)
+++ jakarta/commons/proper/configuration/trunk/conf/testDigesterConfigurationWJNDI.xml Sun Aug 21 10:13:01 2005
@@ -2,6 +2,6 @@
 
 <configuration>
   <jndi prefix="java:comp/env"/>
-  <properties fileName="conf/test.properties"/>
-  <xml fileName="conf/test.xml"/>
+  <properties fileName="test.properties"/>
+  <xml fileName="test.xml"/>
 </configuration>

Modified: jakarta/commons/proper/configuration/trunk/conf/testEqualDigester.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/conf/testEqualDigester.xml?rev=234275&r1=234274&r2=234275&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/conf/testEqualDigester.xml (original)
+++ jakarta/commons/proper/configuration/trunk/conf/testEqualDigester.xml Sun Aug 21 10:13:01 2005
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
 
 <configuration>
-  <properties fileName="conf/testEqual.properties"/>
+  <properties fileName="testEqual.properties"/>
 </configuration>

Modified: jakarta/commons/proper/configuration/trunk/conf/testSequenceDigester.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/conf/testSequenceDigester.xml?rev=234275&r1=234274&r2=234275&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/conf/testSequenceDigester.xml (original)
+++ jakarta/commons/proper/configuration/trunk/conf/testSequenceDigester.xml Sun Aug 21 10:13:01 2005
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
 
 <configuration>
-  <properties fileName="conf/testSequence.properties"/>
+  <properties fileName="testSequence.properties"/>
 </configuration>

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationFactory.java?rev=234275&r1=234274&r2=234275&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationFactory.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationFactory.java Sun Aug 21 10:13:01 2005
@@ -1,5 +1,5 @@
 /*
- * Copyright 2001-2004 The Apache Software Foundation.
+ * Copyright 2001-2005 The Apache Software Foundation.
  *
  * Licensed under the Apache License, Version 2.0 (the "License")
  * you may not use this file except in compliance with the License.
@@ -108,14 +108,14 @@
      */
     public ConfigurationFactory(String configurationFileName)
     {
-        this.configurationFileName = configurationFileName;
+        setConfigurationFileName(configurationFileName);
     }
 
     /**
      * Return the configuration provided by this factory. It loads the
      * configuration file which is a XML description of the actual
      * configurations to load. It can contain various different types of
-     * configuration, currently Properties, XML and JNDI.
+     * configuration, e.g. Properties, XML and JNDI.
      *
      * @return A Configuration object
      * @throws ConfigurationException A generic exception that we had trouble during the
@@ -220,15 +220,6 @@
     {
         configurationURL = url;
         implicitBasePath = url.toString();
-
-        // The following is a hack caused by the need to keep backwards
-        // compatibility: Per default the base path is set to the current
-        // directory. For loading from a URL this makes no sense. So
-        // unless no specific base path was set we clear it.
-        if (DEF_BASE_PATH.equals(getBasePath()))
-        {
-            setBasePath(null);
-        }
     }
 
     /**
@@ -421,8 +412,9 @@
      */
     public String getBasePath()
     {
-        String path = StringUtils.isEmpty(basePath) ? implicitBasePath : basePath;
-        return StringUtils.isEmpty(path) ? "." : path;
+        String path = StringUtils.isEmpty(basePath)
+                || DEF_BASE_PATH.equals(basePath) ? implicitBasePath : basePath;
+        return StringUtils.isEmpty(path) ? DEF_BASE_PATH : path;
     }
 
     /**

Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestConfigurationFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestConfigurationFactory.java?rev=234275&r1=234274&r2=234275&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestConfigurationFactory.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestConfigurationFactory.java Sun Aug 21 10:13:01 2005
@@ -166,6 +166,19 @@
     {
         factory.setConfigurationURL(testDigesterFileEnhanced.toURL());
         checkUnionConfig();
+        
+        factory = new ConfigurationFactory();
+        File nonExistingFile = new File("conf/nonexisting.xml");
+        factory.setConfigurationURL(nonExistingFile.toURL());
+        try
+        {
+            factory.getConfiguration();
+            fail("Could load non existing file!");
+        }
+        catch(ConfigurationException cex)
+        {
+            //ok
+        }
     }
 
     public void testLoadingFromJAR() throws Exception
@@ -278,6 +291,33 @@
                 testAbsConfig.delete();
             }
         }
+    }
+    
+    public void testBasePath() throws Exception
+    {
+        assertEquals(".", factory.getBasePath());
+        factory.setConfigurationFileName(testDigesterFile.getAbsolutePath());
+        // if no specific base path has been set, the base is determined
+        // from the file name
+        assertEquals(testDigesterFile.getParentFile().getAbsolutePath(),
+                factory.getBasePath());
+
+        String homeDir = System.getProperty("user.home");
+        factory = new ConfigurationFactory();
+        factory.setBasePath(homeDir);
+        factory.setConfigurationFileName(testDigesterFile.getAbsolutePath());
+        // if a base path was set, the file name does not play a role
+        assertEquals(homeDir, factory.getBasePath());
+        
+        factory = new ConfigurationFactory(testDigesterFile.getAbsolutePath());
+        assertEquals(testDigesterFile.getParentFile().getAbsolutePath(),
+                factory.getBasePath());
+        factory.setBasePath(homeDir);
+        assertEquals(homeDir, factory.getBasePath());
+        
+        factory = new ConfigurationFactory();
+        factory.setConfigurationURL(testDigesterFile.toURL());
+        assertEquals(testDigesterFile.toURL().toString(), factory.getBasePath());
     }
 
     private void checkUnionConfig() throws Exception

Modified: jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/xdocs/changes.xml?rev=234275&r1=234274&r2=234275&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/changes.xml Sun Aug 21 10:13:01 2005
@@ -23,6 +23,14 @@
   <body>
 
     <release version="1.2-dev" date="in SVN">
+      <action dev="oheger" type="update" issue="35316">
+        Fixed a bug in the handling of relative file names in ConfigurationFactory:
+        In most cases relative file names were not resolved relative to the
+        location of the configuration definition file as stated in the documentation.
+        This behavior was now changed to always be in sync with the documentation.
+        This may have an impact on existing code which uses workarounds for
+        the erroneous resolving mechanism.
+      </action>
       <action dev="oheger" type="update" issue="35963">
         Empty elements or elements whose content consists only of comments or
         whitespace are now taken into account by XMLConfiguration. They are



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