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/07/06 22:26:51 UTC
svn commit: r419689 - in /jakarta/commons/proper/configuration/trunk/src:
java/org/apache/commons/configuration/
java/org/apache/commons/configuration/event/
test/org/apache/commons/configuration/
Author: oheger
Date: Thu Jul 6 13:26:51 2006
New Revision: 419689
URL: http://svn.apache.org/viewvc?rev=419689&view=rev
Log:
Dealing with event listeners when cloning configurations
Modified:
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/BaseConfiguration.java
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/HierarchicalConfiguration.java
jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/event/EventSource.java
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestBaseConfiguration.java
jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java
Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/BaseConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/BaseConfiguration.java?rev=419689&r1=419688&r2=419689&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/BaseConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/BaseConfiguration.java Thu Jul 6 13:26:51 2006
@@ -166,7 +166,8 @@
try
{
BaseConfiguration copy = (BaseConfiguration) super.clone();
- copy.store = (Map) ((LinkedMap) store).clone();
+ copy.store = (Map) ConfigurationUtils.clone(store);
+ copy.clearConfigurationListeners();
return copy;
}
catch (CloneNotSupportedException cex)
Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/HierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/HierarchicalConfiguration.java?rev=419689&r1=419688&r2=419689&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/HierarchicalConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/HierarchicalConfiguration.java Thu Jul 6 13:26:51 2006
@@ -648,7 +648,8 @@
/**
* Creates a copy of this object. This new configuration object will contain
- * copies of all nodes in the same structure.
+ * copies of all nodes in the same structure. Registered event listeners
+ * won't be cloned; so they are not registered at the returned copy.
*
* @return the copy
* @since 1.2
@@ -664,6 +665,7 @@
CloneVisitor v = new CloneVisitor();
getRootNode().visit(v);
copy.setRootNode(v.getClone());
+ copy.clearConfigurationListeners();
return copy;
}
Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/event/EventSource.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/event/EventSource.java?rev=419689&r1=419688&r2=419689&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/event/EventSource.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/event/EventSource.java Thu Jul 6 13:26:51 2006
@@ -69,7 +69,7 @@
*/
public EventSource()
{
- listeners = new LinkedList();
+ clearConfigurationListeners();
}
/**
@@ -118,6 +118,14 @@
{
return Collections.unmodifiableCollection(listeners);
}
+ }
+
+ /**
+ * Removes all registered configuration listeners.
+ */
+ public void clearConfigurationListeners()
+ {
+ listeners = new LinkedList();
}
/**
Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestBaseConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestBaseConfiguration.java?rev=419689&r1=419688&r2=419689&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestBaseConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestBaseConfiguration.java Thu Jul 6 13:26:51 2006
@@ -26,6 +26,9 @@
import java.util.Properties;
import java.util.StringTokenizer;
+import org.apache.commons.configuration.event.ConfigurationEvent;
+import org.apache.commons.configuration.event.ConfigurationListener;
+
import junit.framework.TestCase;
import junitx.framework.ListAssert;
import junitx.framework.ObjectAssert;
@@ -762,6 +765,14 @@
*/
public void testCloneModify()
{
+ ConfigurationListener l = new ConfigurationListener()
+ {
+ public void configurationChanged(ConfigurationEvent event)
+ {
+ // just a dummy
+ }
+ };
+ config.addConfigurationListener(l);
config.addProperty("original", Boolean.TRUE);
BaseConfiguration config2 = (BaseConfiguration) config.clone();
@@ -770,5 +781,8 @@
config2.setProperty("original", Boolean.FALSE);
assertTrue("Wrong value of original property", config
.getBoolean("original"));
+
+ assertEquals("Event listener was copied", 0, config2
+ .getConfigurationListeners().size());
}
}
Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java?rev=419689&r1=419688&r2=419689&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestHierarchicalConfiguration.java Thu Jul 6 13:26:51 2006
@@ -25,6 +25,8 @@
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.configuration.HierarchicalConfiguration.Node;
+import org.apache.commons.configuration.event.ConfigurationEvent;
+import org.apache.commons.configuration.event.ConfigurationListener;
import org.apache.commons.configuration.tree.DefaultConfigurationNode;
import org.apache.commons.configuration.tree.DefaultExpressionEngine;
import org.apache.commons.configuration.tree.ExpressionEngine;
@@ -485,6 +487,25 @@
assertEquals(fields[i][j], copy.getString("tables.table(" + i + ").fields.field(" + j + ").name"));
}
}
+ }
+
+ /**
+ * Tests whether registered event handlers are handled correctly when a
+ * configuration is cloned. They should not be registered at the clone.
+ */
+ public void testCloneWithEventListeners()
+ {
+ config.addConfigurationListener(new ConfigurationListener()
+ {
+ public void configurationChanged(ConfigurationEvent event)
+ {
+ // just a dummy
+ }
+ });
+ HierarchicalConfiguration copy = (HierarchicalConfiguration) config
+ .clone();
+ assertTrue("Event listener registered at clone", copy
+ .getConfigurationListeners().isEmpty());
}
public void testAddNodes()
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org