Author: oheger
Date: Wed Apr  9 13:08:42 2008
New Revision: 646512

URL: http://svn.apache.org/viewvc?rev=646512&view=rev
Log:
Change return value of AbstractFlatConfiguration.getNodeHandler() to 
NodeHandler<FlatNode> and ensure that the node handler also gets cloned

Modified:
    
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/flat/AbstractFlatConfiguration.java
    
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestAbstractFlatConfiguration.java

Modified: 
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/flat/AbstractFlatConfiguration.java
URL: 
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/flat/AbstractFlatConfiguration.java?rev=646512&r1=646511&r2=646512&view=diff
==============================================================================
--- 
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/flat/AbstractFlatConfiguration.java
 (original)
+++ 
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/flat/AbstractFlatConfiguration.java
 Wed Apr  9 13:08:42 2008
@@ -23,6 +23,7 @@
 import org.apache.commons.configuration2.AbstractConfiguration;
 import org.apache.commons.configuration2.event.ConfigurationEvent;
 import org.apache.commons.configuration2.event.ConfigurationListener;
+import org.apache.commons.configuration2.expr.NodeHandler;
 
 /**
  * <p>
@@ -85,7 +86,7 @@
     protected AbstractFlatConfiguration()
     {
         lockRoot = new ReentrantLock();
-        nodeHandler = new FlatNodeHandler(this);
+        initNodeHandler();
         registerChangeListener();
     }
 
@@ -95,7 +96,7 @@
      *
      * @return the <code>NodeHandler</code> used
      */
-    public FlatNodeHandler getNodeHandler()
+    public NodeHandler<FlatNode> getNodeHandler()
     {
         return nodeHandler;
     }
@@ -189,6 +190,7 @@
     {
         AbstractFlatConfiguration copy = (AbstractFlatConfiguration) super
                 .clone();
+        copy.initNodeHandler();
         copy.clearConfigurationListeners();
         copy.registerChangeListener();
         return copy;
@@ -262,6 +264,14 @@
             Object value);
 
     /**
+     * Initializes the node handler of this configuration.
+     */
+    private void initNodeHandler()
+    {
+        nodeHandler = new FlatNodeHandler(this);
+    }
+
+    /**
      * Performs the actual remove property value operation. This method is
      * called by <code>clearPropertyValue()</code>.
      *
@@ -288,7 +298,7 @@
             {
                 if (!event.isBeforeUpdate())
                 {
-                    if (!getNodeHandler().isInternalUpdate())
+                    if (!((FlatNodeHandler) 
getNodeHandler()).isInternalUpdate())
                     {
                         invalidateRootNode();
                     }

Modified: 
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestAbstractFlatConfiguration.java
URL: 
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestAbstractFlatConfiguration.java?rev=646512&r1=646511&r2=646512&view=diff
==============================================================================
--- 
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestAbstractFlatConfiguration.java
 (original)
+++ 
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/flat/TestAbstractFlatConfiguration.java
 Wed Apr  9 13:08:42 2008
@@ -234,6 +234,9 @@
         prepareGetRootNode(1);
         checkNodeStructure(config.getRootNode());
         FlatConfigurationMockImpl copy = (FlatConfigurationMockImpl) 
config.clone();
+        FlatNodeHandler handler = (FlatNodeHandler) copy.getNodeHandler();
+        assertSame("Wrong config for node handler", copy, 
handler.getConfiguration());
+        assertNotSame("Node handler not copied", handler, 
config.getNodeHandler());
         prepareGetRootNode(copy, 2);
         FlatNode root = copy.getRootNode();
         checkNodeStructure(root);


Reply via email to