You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2013/09/28 21:41:43 UTC

svn commit: r1527238 - in /commons/proper/configuration/trunk/src: main/java/org/apache/commons/configuration/builder/FileBasedConfigurationBuilder.java test/java/org/apache/commons/configuration/builder/TestFileBasedConfigurationBuilder.java

Author: oheger
Date: Sat Sep 28 19:41:43 2013
New Revision: 1527238

URL: http://svn.apache.org/r1527238
Log:
FileBasedConfigurationBuilder now ensures that its FileLocator is fully defined.

Before actually loading the associated file, the locator's locate() method is
called. This ensures that all properties of the FileLocator pointing to the
file are initialized. This is important when saving the file: a fully
initialized FileLocator ensures that the correct output file is written.

Modified:
    commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/FileBasedConfigurationBuilder.java
    commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestFileBasedConfigurationBuilder.java

Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/FileBasedConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/FileBasedConfigurationBuilder.java?rev=1527238&r1=1527237&r2=1527238&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/FileBasedConfigurationBuilder.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/builder/FileBasedConfigurationBuilder.java Sat Sep 28 19:41:43 2013
@@ -296,6 +296,7 @@ public class FileBasedConfigurationBuild
         initEncoding(handler);
         if (handler.isLocationDefined())
         {
+            handler.locate();
             handler.load();
         }
     }

Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestFileBasedConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestFileBasedConfigurationBuilder.java?rev=1527238&r1=1527237&r2=1527238&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestFileBasedConfigurationBuilder.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/builder/TestFileBasedConfigurationBuilder.java Sat Sep 28 19:41:43 2013
@@ -37,6 +37,8 @@ import org.apache.commons.configuration.
 import org.apache.commons.configuration.XMLConfiguration;
 import org.apache.commons.configuration.XMLPropertiesConfiguration;
 import org.apache.commons.configuration.io.FileHandler;
+import org.apache.commons.configuration.io.FileLocator;
+import org.apache.commons.configuration.io.FileLocatorUtils;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
@@ -148,6 +150,24 @@ public class TestFileBasedConfigurationB
     }
 
     /**
+     * Tests whether the location in the FileHandler is fully defined. This
+     * ensures that saving writes to the expected file.
+     */
+    @Test
+    public void testLocationIsFullyDefined() throws ConfigurationException
+    {
+        File file = createTestFile(1);
+        FileBasedConfigurationBuilder<PropertiesConfiguration> builder =
+                new FileBasedConfigurationBuilder<PropertiesConfiguration>(
+                        PropertiesConfiguration.class);
+        builder.configure(new FileBasedBuilderParametersImpl().setFile(file));
+        builder.getConfiguration();
+        FileLocator locator = builder.getFileHandler().getFileLocator();
+        assertTrue("Not fully defined: " + locator,
+                FileLocatorUtils.isFullyInitialized(locator));
+    }
+
+    /**
      * Tests whether the location can be changed after a configuration has been
      * created.
      */