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 2006/10/16 22:26:08 UTC
svn commit: r464652 - in /jakarta/commons/proper/configuration/trunk:
src/java/org/apache/commons/configuration/AbstractHierarchicalFileConfiguration.java
src/test/org/apache/commons/configuration/TestXMLConfiguration.java
xdocs/changes.xml
Author: oheger
Date: Mon Oct 16 13:26:04 2006
New Revision: 464652
URL: http://svn.apache.org/viewvc?view=rev&rev=464652
Log:
Override fetchNodeList() in AbstractHierarchicalFileConfiguration to always check for a reload; fix for CONFIGURATION-228
Modified:
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractHierarchicalFileConfiguration.java
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java
jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractHierarchicalFileConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractHierarchicalFileConfiguration.java?view=diff&rev=464652&r1=464651&r2=464652
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractHierarchicalFileConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/AbstractHierarchicalFileConfiguration.java Mon Oct 16 13:26:04 2006
@@ -24,6 +24,7 @@
import java.io.OutputStream;
import java.net.URL;
import java.util.Iterator;
+import java.util.List;
import org.apache.commons.configuration.event.ConfigurationEvent;
import org.apache.commons.configuration.event.ConfigurationListener;
@@ -296,6 +297,19 @@
{
reload();
return super.isEmpty();
+ }
+
+ /**
+ * Fetches a list of nodes, which are selected by the specified key. This
+ * implementation will perform a reload if necessary.
+ *
+ * @param key the key
+ * @return a list with the selected nodes
+ */
+ protected List fetchNodeList(String key)
+ {
+ reload();
+ return super.fetchNodeList(key);
}
/**
Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java?view=diff&rev=464652&r1=464651&r2=464652
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestXMLConfiguration.java Mon Oct 16 13:26:04 2006
@@ -882,6 +882,62 @@
}
/**
+ * Tests if reloads are recognized by subset().
+ */
+ public void testSubsetWithReload() throws ConfigurationException
+ {
+ XMLConfiguration c = setUpReloadTest();
+ Configuration sub = c.subset("test");
+ assertEquals("New value not read", "newValue", sub.getString("entity"));
+ }
+
+ /**
+ * Tests if reloads are recognized by configurationAt().
+ */
+ public void testConfigurationAtWithReload() throws ConfigurationException
+ {
+ XMLConfiguration c = setUpReloadTest();
+ HierarchicalConfiguration sub = c.configurationAt("test(0)");
+ assertEquals("New value not read", "newValue", sub.getString("entity"));
+ }
+
+ /**
+ * Tests if reloads are recognized by configurationsAt().
+ */
+ public void testConfigurationsAtWithReload() throws ConfigurationException
+ {
+ XMLConfiguration c = setUpReloadTest();
+ List configs = c.configurationsAt("test");
+ assertEquals("New value not read", "newValue",
+ ((HierarchicalConfiguration) configs.get(0))
+ .getString("entity"));
+ }
+
+ /**
+ * Prepares a configuration object for testing a reload operation.
+ *
+ * @return the initialized configuration
+ * @throws ConfigurationException if an error occurs
+ */
+ private XMLConfiguration setUpReloadTest() throws ConfigurationException
+ {
+ removeTestFile();
+ conf.save(testSaveConf);
+ XMLConfiguration c = new XMLConfiguration(testSaveConf);
+ c.setReloadingStrategy(new FileChangedReloadingStrategy()
+ {
+ // Report always a change
+ protected boolean hasChanged()
+ {
+ return true;
+ }
+ });
+ conf.setProperty("test(0).entity", "newValue");
+ conf.save(testSaveConf);
+ return c;
+ }
+
+ /**
* Removes the test output file if it exists.
*/
private void removeTestFile()
Modified: jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/xdocs/changes.xml?view=diff&rev=464652&r1=464651&r2=464652
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/changes.xml Mon Oct 16 13:26:04 2006
@@ -23,6 +23,13 @@
<body>
<release version="1.4-dev" date="in SVN">
+ <action dev="oheger" type="update" issue="CONFIGURATION-228">
+ Some of the methods of file-based hierarchical configurations (e.g.
+ subset() or configurationAt()) did not take an eventually set reloading
+ strategy into account. This is now fixed by overriding the internal
+ fetchNodeList() method in AbstractHierarchicalFileConfiguration and
+ letting it always check for a reload.
+ </action>
</release>
<release version="1.3" date="2006-09-24">
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org