oheger 2004/11/14 11:06:32
Modified: configuration/xdocs changes.xml
configuration/src/test/org/apache/commons/configuration
TestConfigurationFactory.java
configuration/src/java/org/apache/commons/configuration
ConfigurationFactory.java
configuration project.xml
Added: configuration/conf testDigesterOptionalConfiguration.xml
Log:
Added support for optional configurations in configuration definition files
for ConfigurationFactory.
Revision Changes Path
1.69 +9 -0 jakarta-commons/configuration/xdocs/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/jakarta-commons/configuration/xdocs/changes.xml,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -r1.68 -r1.69
--- changes.xml 21 Oct 2004 18:36:14 -0000 1.68
+++ changes.xml 14 Nov 2004 19:06:32 -0000 1.69
@@ -71,6 +71,15 @@
AppletConfiguration, ServletConfiguration,
ServletContextConfiguration,
ServletRequestConfiguration, ServletFilterConfiguration.
</action>
+ <action dev="oheger" type="fix" issue="32236">
+ Fixed NPE that where caused in the constructors of file based
+ configurations if an invalid file name was specified.
+ </action>
+ <action dev="oheger" type="add" issue="31797">
+ Added support for optional configuration sources in definition
files for
+ ConfigurationFactory. A new required attribute allows to
specify whether a
+ configuration source is mandatory or optional.
+ </action>
</release>
<release version="1.0.1-dev" date="in CVS">
1.17 +12 -1
jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestConfigurationFactory.java
Index: TestConfigurationFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestConfigurationFactory.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- TestConfigurationFactory.java 18 Oct 2004 12:50:41 -0000 1.16
+++ TestConfigurationFactory.java 14 Nov 2004 19:06:32 -0000 1.17
@@ -44,6 +44,8 @@
new File("conf/testDigesterConfiguration2.xml");
private File testDigesterFileComplete =
new File("conf/testDigesterConfiguration3.xml");
+ private File testDigesterFileOptional =
+ new File("conf/testDigesterOptionalConfiguration.xml");
private File testDigesterBadXML = new
File("conf/testDigesterBadXML.xml");
@@ -237,6 +239,15 @@
// test SystemConfiguration
assertNotNull(config.getProperty("java.version"));
assertEquals(System.getProperty("java.version"),
config.getString("java.version"));
+ }
+
+ // Checks if optional configurations work
+ public void testOptionalConfigurations() throws Exception
+ {
+ factory.setConfigurationURL(testDigesterFileOptional.toURL());
+ Configuration config = factory.getConfiguration();
+ assertTrue(config.getBoolean("test.boolean"));
+ assertEquals("value", config.getProperty("element"));
}
private void checkUnionConfig() throws Exception
1.1
jakarta-commons/configuration/conf/testDigesterOptionalConfiguration.xml
Index: testDigesterOptionalConfiguration.xml
===================================================================
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- Configuration test file that demonstrates
optional configurations -->
<configuration>
<properties fileName="test.properties"/>
<xml fileName="test.xml" required="true"/>
<hierarchicalXml fileName="nonExistingHierarchicalXML1.xml"
required="false"/>
<properties fileName="nonExistingProperties1.properties" required="no"/>
<xml fileName="nonExistingXML1.xml" required="false"/>
<additional>
<properties fileName="nonExistingProperties2.properties" required="no"/>
<hierarchicalXml fileName="nonExistingHierarchicalXML2.xml"
required="false"/>
<xml fileName="nonExistingXML2.xml" required="false"/>
</additional>
</configuration>
1.18 +28 -7
jakarta-commons/configuration/src/java/org/apache/commons/configuration/ConfigurationFactory.java
Index: ConfigurationFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/configuration/src/java/org/apache/commons/configuration/ConfigurationFactory.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- ConfigurationFactory.java 18 Oct 2004 12:50:41 -0000 1.17
+++ ConfigurationFactory.java 14 Nov 2004 19:06:32 -0000 1.18
@@ -57,9 +57,12 @@
/** Constant for the additional section.*/
private static final String SEC_ADDITIONAL = SEC_ROOT + "additional/";
-
- /** Constant for the name of the load method.*/
- private static final String METH_LOAD = "load";
+
+ /** Constant for the optional attribute.*/
+ private static final String ATTR_REQUIRED = "required";
+
+ /** Constant for the fileName attribute.*/
+ private static final String ATTR_FILENAME = "fileName";
/** Constant for the default base path (points to actual directory).*/
private static final String DEF_BASE_PATH = ".";
@@ -275,21 +278,21 @@
digester,
matchString + "properties",
new FileConfigurationFactory(PropertiesConfiguration.class),
- METH_LOAD,
+ null,
additional);
setupDigesterInstance(
digester,
matchString + "xml",
new FileConfigurationFactory(XMLConfiguration.class),
- METH_LOAD,
+ null,
additional);
setupDigesterInstance(
digester,
matchString + "hierarchicalXml",
new FileConfigurationFactory(HierarchicalXMLConfiguration.class),
- METH_LOAD,
+ null,
additional);
setupDigesterInstance(
@@ -488,6 +491,24 @@
{
FileConfiguration conf = (FileConfiguration)
super.createObject(attributes);
conf.setBasePath(getBasePath());
+ conf.setFileName(attributes.getValue(ATTR_FILENAME));
+ try
+ {
+ log.info("Trying to load configuration " +
conf.getFileName());
+ conf.load();
+ }
+ catch(ConfigurationException cex)
+ {
+ if(attributes.getValue(ATTR_REQUIRED) == null
+ ||
!PropertyConverter.toBoolean(attributes.getValue(ATTR_REQUIRED)).booleanValue())
+ {
+ log.warn("Could not load optional configuration " +
conf.getFileName());
+ }
+ else
+ {
+ throw cex;
+ }
+ }
return conf;
}
}
1.40 +9 -7 jakarta-commons/configuration/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/jakarta-commons/configuration/project.xml,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- project.xml 14 Oct 2004 09:54:35 -0000 1.39
+++ project.xml 14 Nov 2004 19:06:32 -0000 1.40
@@ -155,16 +155,18 @@
<id>ebourg</id>
<email>[EMAIL PROTECTED]</email>
</developer>
+
+ <developer>
+ <name>Oliver Heger</name>
+ <id>oheger</id>
+ <email>[EMAIL PROTECTED]</email>
+ <organization>University Marburg</organization>
+ <timezone>+1</timezone>
+ </developer>
</developers>
<contributors>
-
- <contributor>
- <name>Oliver Heger</name>
- <id>oheger</id>
- <email>[EMAIL PROTECTED]</email>
- </contributor>
<contributor>
<name>Jörg Schaible</name>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]