You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2014/03/23 21:32:16 UTC
svn commit: r1580596 - in
/commons/proper/configuration/branches/immutableNodes/src:
main/java/org/apache/commons/configuration/
test/java/org/apache/commons/configuration/
Author: oheger
Date: Sun Mar 23 20:32:16 2014
New Revision: 1580596
URL: http://svn.apache.org/r1580596
Log:
Some cleanup of methods related to sub configurations.
Removed unused methods. Made a method protected which is needed by sub classes.
Modified:
commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/BaseHierarchicalConfiguration.java
commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestBaseHierarchicalConfigurationSynchronization.java
commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestHierarchicalConfiguration.java
Modified: commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/BaseHierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/BaseHierarchicalConfiguration.java?rev=1580596&r1=1580595&r2=1580596&view=diff
==============================================================================
--- commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/BaseHierarchicalConfiguration.java (original)
+++ commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/BaseHierarchicalConfiguration.java Sun Mar 23 20:32:16 2014
@@ -226,11 +226,8 @@ public class BaseHierarchicalConfigurati
public HierarchicalConfiguration<ImmutableNode> configurationAt(String key,
boolean supportUpdates)
{
- BaseHierarchicalConfiguration sub =
- supportUpdates ? createConnectedSubConfiguration(key)
- : createIndependentSubConfiguration(key);
- initSubConfiguration(sub);
- return sub;
+ return supportUpdates ? createConnectedSubConfiguration(key)
+ : createIndependentSubConfiguration(key);
}
/**
@@ -264,6 +261,40 @@ public class BaseHierarchicalConfigurati
}
/**
+ * Creates a connected sub configuration based on a selector for a tracked
+ * node.
+ *
+ * @param selector the {@code NodeSelector}
+ * @param parentModel the parent node model
+ * @return the newly created sub configuration
+ * @since 2.0
+ */
+ protected SubnodeConfiguration createSubConfigurationForTrackedNode(
+ NodeSelector selector, InMemoryNodeModel parentModel)
+ {
+ SubnodeConfiguration subConfig =
+ new SubnodeConfiguration(this, new TrackedNodeModel(
+ parentModel, selector, true));
+ initSubConfigurationForThisParent(subConfig);
+ return subConfig;
+ }
+
+ /**
+ * Initializes a {@code SubnodeConfiguration} object. This method should be
+ * called for each sub configuration created for this configuration. It
+ * ensures that the sub configuration is correctly connected to its parent
+ * instance and that update events are correctly propagated.
+ *
+ * @param subConfig the sub configuration to be initialized
+ * @since 2.0
+ */
+ protected void initSubConfigurationForThisParent(SubnodeConfiguration subConfig)
+ {
+ initSubConfiguration(subConfig);
+ subConfig.addConfigurationListener(changeListener);
+ }
+
+ /**
* Creates a sub configuration from the specified key which is connected to
* this configuration. This implementation creates a
* {@link SubnodeConfiguration} with a tracked node identified by the passed
@@ -282,24 +313,6 @@ public class BaseHierarchicalConfigurati
}
/**
- * Creates a connected sub configuration based on a selector for a tracked
- * node.
- *
- * @param selector the {@code NodeSelector}
- * @param parentModel the parent node model
- * @return the newly created sub configuration
- */
- private SubnodeConfiguration createSubConfigurationForTrackedNode(
- NodeSelector selector, InMemoryNodeModel parentModel)
- {
- SubnodeConfiguration subConfig =
- new SubnodeConfiguration(this, new TrackedNodeModel(
- parentModel, selector, true));
- subConfig.addConfigurationListener(changeListener);
- return subConfig;
- }
-
- /**
* Creates a list of connected sub configurations based on a passed in list
* of node selectors.
*
@@ -338,8 +351,11 @@ public class BaseHierarchicalConfigurati
throw new ConfigurationRuntimeException(
"Passed in key must select exactly one node: " + key);
}
- return new BaseHierarchicalConfiguration(new InMemoryNodeModel(
- targetNodes.get(0)));
+ BaseHierarchicalConfiguration sub =
+ new BaseHierarchicalConfiguration(new InMemoryNodeModel(
+ targetNodes.get(0)));
+ initSubConfiguration(sub);
+ return sub;
}
/**
@@ -515,25 +531,6 @@ public class BaseHierarchicalConfigurati
}
/**
- * Creates a new {@code SubnodeConfiguration} for the specified node and
- * sets its construction key. If the key is not <b>null</b>, a
- * {@code SubnodeConfiguration} created this way will be aware of structural
- * changes of its parent.
- *
- * @param node the node, for which a {@code SubnodeConfiguration} is to be
- * created
- * @param subnodeKey the key used to construct the configuration
- * @return the configuration for the given node
- * @since 1.5
- */
- protected SubnodeConfiguration createSubnodeConfiguration(
- ConfigurationNode node, String subnodeKey)
- {
- //TODO implementation
- return null; //new SubnodeConfiguration(this, node, subnodeKey);
- }
-
- /**
* This method is always called when a subnode configuration created from
* this configuration has been modified. This implementation transforms the
* received event into an event of type {@code EVENT_SUBNODE_CHANGED}
@@ -548,28 +545,6 @@ public class BaseHierarchicalConfigurati
}
/**
- * Creates a new {@code SubnodeConfiguration} instance from this
- * configuration and initializes it. This method also takes care that data
- * structures are created to manage all {@code SubnodeConfiguration}
- * instances with support for updates. They are stored, so that they can be
- * triggered when this configuration is changed. <strong>Important
- * note:</strong> This method expects that a write lock is held on this
- * configuration!
- *
- * @param node the root node of the new {@code SubnodeConfiguration}
- * @param key the key to this node
- * @param supportUpdates a flag whether updates are supported
- * @return the newly created and initialized {@code SubnodeConfiguration}
- * @since 2.0
- */
- protected final SubnodeConfiguration createAndInitializeSubnodeConfiguration(
- ConfigurationNode node, String key, boolean supportUpdates)
- {
- //TODO adapt clients
- return null;
- }
-
- /**
* Initializes properties of a sub configuration. A sub configuration
* inherits some settings from its parent, e.g. the expression engine or the
* synchronizer. The corresponding values are copied by this method.
Modified: commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestBaseHierarchicalConfigurationSynchronization.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestBaseHierarchicalConfigurationSynchronization.java?rev=1580596&r1=1580595&r2=1580596&view=diff
==============================================================================
--- commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestBaseHierarchicalConfigurationSynchronization.java (original)
+++ commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestBaseHierarchicalConfigurationSynchronization.java Sun Mar 23 20:32:16 2014
@@ -38,7 +38,6 @@ import org.apache.commons.configuration.
import org.apache.commons.configuration.builder.fluent.Parameters;
import org.apache.commons.configuration.ex.ConfigurationException;
import org.apache.commons.configuration.io.FileHandler;
-import org.apache.commons.configuration.tree.ConfigurationNode;
import org.apache.commons.configuration.tree.DefaultConfigurationNode;
import org.junit.Before;
import org.junit.Test;
@@ -268,22 +267,6 @@ public class TestBaseHierarchicalConfigu
{
private static final long serialVersionUID = 1L;
- @Override
- protected SubnodeConfiguration createSubnodeConfiguration(
- ConfigurationNode node, String subnodeKey)
- {
- return new SubnodeConfiguration(this, node)
- {
- private static final long serialVersionUID = 1L;
-
- @Override
- void validateRootNode()
- {
- super.validateRootNode();
- validatedConfigs.add(this);
- }
- };
- }
};
SubnodeConfiguration sub =
Modified: commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestHierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestHierarchicalConfiguration.java?rev=1580596&r1=1580595&r2=1580596&view=diff
==============================================================================
--- commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestHierarchicalConfiguration.java (original)
+++ commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestHierarchicalConfiguration.java Sun Mar 23 20:32:16 2014
@@ -416,6 +416,25 @@ public class TestHierarchicalConfigurati
}
/**
+ * Tests whether a connected configuration is correctly initialized with
+ * properties of its parent.
+ */
+ @Test
+ public void testConfigurationAtWithUpdateInitialized()
+ {
+ String key = "tables.table";
+ config.setListDelimiterHandler(new DefaultListDelimiterHandler(';'));
+ config.setThrowExceptionOnMissing(true);
+ List<HierarchicalConfiguration<ImmutableNode>> subs =
+ config.configurationsAt(key, true);
+ BaseHierarchicalConfiguration sub =
+ (BaseHierarchicalConfiguration) subs.get(0);
+ assertEquals("Wrong delimiter handler",
+ config.getListDelimiterHandler(), sub.getListDelimiterHandler());
+ assertTrue("Wrong exception flag", sub.isThrowExceptionOnMissing());
+ }
+
+ /**
* Tests whether a list of immutable sub configurations can be queried.
*/
@Test