[prev in list] [next in list] [prev in thread] [next in thread]
List: jakarta-commons-dev
Subject: [configuration] System configuration & ConfigurationFactory
From: Emmanuel Bourg <ebourg () micropole-univers ! com>
Date: 2004-03-31 13:07:30
Message-ID: 200403311308.PAA14669 () vertigo ! micropole ! com
[Download RAW message or body]
Hi, I'd like to suggest the addition of a <system/> element for the
files read by the ConfigurationFactory. It would add a configuration
wrapping the system properties to the composite configuration. I'm
attaching a small patch enabling this feature.
Emmanuel Bourg
["system.patch" (text/plain)]
Index: src/java/org/apache/commons/configuration/ConfigurationFactory.java
===================================================================
RCS file: /home/cvspublic/jakarta-commons/configuration/src/java/org/apache/commons/configuration/ConfigurationFactory.java,v
retrieving revision 1.9
diff -u -r1.9 ConfigurationFactory.java
--- src/java/org/apache/commons/configuration/ConfigurationFactory.java 8 Mar 2004 \
23:27:09 -0000 1.9
+++ src/java/org/apache/commons/configuration/ConfigurationFactory.java 31 Mar 2004 \
12:57:46 -0000 @@ -101,7 +101,7 @@
* different types of configuration, currently Properties, XML and JNDI.
*
* @return A Configuration object
- * @throws Exception A generic exception that we had trouble during the
+ * @throws ConfigurationException A generic exception that we had trouble during \
the
* loading of the configuration data.
*/
public Configuration getConfiguration() throws ConfigurationException
@@ -256,24 +256,34 @@
new BasePathConfigurationFactory(PropertiesConfiguration.class),
METH_LOAD,
additional);
+
setupDigesterInstance(
digester,
matchString + "dom4j",
new BasePathConfigurationFactory(DOM4JConfiguration.class),
METH_LOAD,
additional);
+
setupDigesterInstance(
digester,
matchString + "hierarchicalDom4j",
new BasePathConfigurationFactory(HierarchicalDOM4JConfiguration.class),
METH_LOAD,
additional);
+
setupDigesterInstance(
digester,
matchString + "jndi",
new JNDIConfigurationFactory(),
null,
additional);
+
+ setupDigesterInstance(
+ digester,
+ matchString + "system",
+ new SystemConfigurationFactory(),
+ null,
+ additional);
}
/**
@@ -396,7 +406,6 @@
*/
public class DigesterConfigurationFactory
extends AbstractObjectCreationFactory
- implements ObjectCreationFactory
{
/** Actual class to use. */
private Class clazz;
@@ -471,6 +480,16 @@
public JNDIConfigurationFactory()
{
super(JNDIConfiguration.class);
+ }
+ }
+
+ /**
+ * An object factory to let the digester construct system configurations.
+ */
+ protected class SystemConfigurationFactory extends AbstractObjectCreationFactory
+ {
+ public Object createObject(Attributes attribs) throws Exception {
+ return ConfigurationConverter.getConfiguration(System.getProperties());
}
}
Index: src/test/org/apache/commons/configuration/TestConfigurationFactory.java
===================================================================
RCS file: /home/cvspublic/jakarta-commons/configuration/src/test/org/apache/commons/configuration/TestConfigurationFactory.java,v
retrieving revision 1.9
diff -u -r1.9 TestConfigurationFactory.java
--- src/test/org/apache/commons/configuration/TestConfigurationFactory.java 27 Feb \
2004 17:41:34 -0000 1.9
+++ src/test/org/apache/commons/configuration/TestConfigurationFactory.java 31 Mar \
2004 12:57:47 -0000 @@ -65,8 +65,8 @@
Object o = jndiConfiguration.getProperty("test.boolean");
assertNotNull(o);
assertEquals("true",o.toString());
-
}
+
public void testLoadingConfiguration() throws Exception
{
configurationFactory.setConfigurationFileName(
@@ -184,6 +184,17 @@
//configurationFactory.setDigesterRuleNamespaceURI("namespace-one");
checkCompositeConfiguration();
+ }
+
+ public void testLoadingConfigurationSystem() throws Exception
+ {
+ configurationFactory.setConfigurationFileName("conf/testDigesterConfigurationSystem.xml");
+ Configuration configuration = configurationFactory.getConfiguration();
+
+ System.setProperty("test.system", "value");
+
+ assertNotNull("null configuration");
+ assertEquals("'test.system' system property", "value", \
configuration.getProperty("test.system")); }
public void testLoadingAdditional() throws Exception
["testDigesterConfigurationSystem.xml" (text/xml)]
<?xml version="1.0"?>
<configuration>
<system/>
</configuration>
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic