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/01/15 21:56:02 UTC
svn commit: r1433642 - 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: Tue Jan 15 20:56:02 2013
New Revision: 1433642
URL: http://svn.apache.org/viewvc?rev=1433642&view=rev
Log:
Improved handling of file-based parameters in FileBasedConfigurationBuilder.
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=1433642&r1=1433641&r2=1433642&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 Tue Jan 15 20:56:02 2013
@@ -169,13 +169,24 @@ public class FileBasedConfigurationBuild
}
/**
- * Obtains the {@code FileHandler} from this builder's parameters.
+ * Obtains the {@code FileHandler} from this builder's parameters. If no
+ * {@code FileBasedBuilderParametersImpl} object is found in this builder's
+ * parameters, a new one is created now and stored. This makes it possible
+ * to change the location of the associated file even if no parameters
+ * object was provided.
*
* @return the {@code FileHandler} from initialization parameters
*/
private FileHandler fetchFileHandlerFromParameters()
{
- return FileBasedBuilderParametersImpl.fromParameters(getParameters(), true)
- .getFileHandler();
+ FileBasedBuilderParametersImpl fileParams =
+ FileBasedBuilderParametersImpl.fromParameters(getParameters(),
+ false);
+ if (fileParams == null)
+ {
+ fileParams = new FileBasedBuilderParametersImpl();
+ addParameters(fileParams.getParameters());
+ }
+ return fileParams.getFileHandler();
}
}
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=1433642&r1=1433641&r2=1433642&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 Tue Jan 15 20:56:02 2013
@@ -218,4 +218,20 @@ public class TestFileBasedConfigurationB
PropertiesConfiguration.class, null, true);
assertTrue("Flag not set", builder.isAllowFailOnInit());
}
+
+ /**
+ * Tests whether a file handler can be accessed and manipulated even if no
+ * file-based parameters are part of the initialization parameters.
+ */
+ @Test
+ public void testSetLocationNoFileHandler() throws ConfigurationException
+ {
+ File file = createTestFile(1);
+ FileBasedConfigurationBuilder<PropertiesConfiguration> builder =
+ new FileBasedConfigurationBuilder<PropertiesConfiguration>(
+ PropertiesConfiguration.class);
+ builder.getFileHandler().setFile(file);
+ PropertiesConfiguration config = builder.getConfiguration();
+ assertFalse("No data was loaded", config.isEmpty());
+ }
}