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/21 21:34:12 UTC
svn commit: r1580038 - in
/commons/proper/configuration/branches/immutableNodes/src:
main/java/org/apache/commons/configuration/
test/java/org/apache/commons/configuration/
Author: oheger
Date: Fri Mar 21 20:34:12 2014
New Revision: 1580038
URL: http://svn.apache.org/r1580038
Log:
Implemented resolveNodeKey() in AbstractHierarchicalConfiguration.
Some refactoring to remove duplicated code.
Modified:
commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java
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/TestAbstractHierarchicalConfiguration.java
Modified: commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java?rev=1580038&r1=1580037&r2=1580038&view=diff
==============================================================================
--- commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java (original)
+++ commons/proper/configuration/branches/immutableNodes/src/main/java/org/apache/commons/configuration/AbstractHierarchicalConfiguration.java Fri Mar 21 20:34:12 2014
@@ -469,9 +469,22 @@ public abstract class AbstractHierarchic
return getExpressionEngine().query(root, key, handler);
}
- public List<T> resolveNodeKey(T root, String key, NodeHandler<T> handler) {
- //TODO implementation
- return null;
+ /**
+ * {@inheritDoc} This implementation delegates to {@code resolveKey()} and
+ * then filters out attribute results.
+ */
+ public List<T> resolveNodeKey(T root, String key, NodeHandler<T> handler)
+ {
+ List<QueryResult<T>> results = resolveKey(root, key, handler);
+ List<T> targetNodes = new LinkedList<T>();
+ for (QueryResult<T> result : results)
+ {
+ if (!result.isAttributeResult())
+ {
+ targetNodes.add(result.getNode());
+ }
+ }
+ return targetNodes;
}
/**
@@ -742,8 +755,7 @@ public abstract class AbstractHierarchic
*/
protected List<QueryResult<T>> fetchNodeList(String key)
{
- return getExpressionEngine().query(getRootNode(), key,
- getModel().getNodeHandler());
+ return resolveKey(getRootNode(), key, getModel().getNodeHandler());
}
/**
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=1580038&r1=1580037&r2=1580038&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 Fri Mar 21 20:34:12 2014
@@ -33,6 +33,7 @@ import org.apache.commons.configuration.
import org.apache.commons.configuration.tree.ConfigurationNodeVisitorAdapter;
import org.apache.commons.configuration.tree.ImmutableNode;
import org.apache.commons.configuration.tree.InMemoryNodeModel;
+import org.apache.commons.configuration.tree.NodeHandler;
import org.apache.commons.configuration.tree.NodeModel;
import org.apache.commons.configuration.tree.NodeSelector;
import org.apache.commons.configuration.tree.QueryResult;
@@ -330,16 +331,8 @@ public class BaseHierarchicalConfigurati
*/
private List<ImmutableNode> fetchFilteredNodeResults(String key)
{
- List<QueryResult<ImmutableNode>> results = fetchNodeList(key);
- List<ImmutableNode> targetNodes = new LinkedList<ImmutableNode>();
- for (QueryResult<ImmutableNode> result : results)
- {
- if (!result.isAttributeResult())
- {
- targetNodes.add(result.getNode());
- }
- }
- return targetNodes;
+ NodeHandler<ImmutableNode> handler = getModel().getNodeHandler();
+ return resolveNodeKey(handler.getRootNode(), key, handler);
}
/**
Modified: commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestAbstractHierarchicalConfiguration.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestAbstractHierarchicalConfiguration.java?rev=1580038&r1=1580037&r2=1580038&view=diff
==============================================================================
--- commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestAbstractHierarchicalConfiguration.java (original)
+++ commons/proper/configuration/branches/immutableNodes/src/test/java/org/apache/commons/configuration/TestAbstractHierarchicalConfiguration.java Fri Mar 21 20:34:12 2014
@@ -800,6 +800,38 @@ public class TestAbstractHierarchicalCon
}
/**
+ * Tests whether node keys can be resolved.
+ */
+ @Test
+ public void testResolveNodeKey()
+ {
+ List<ImmutableNode> nodes =
+ config.resolveNodeKey(config.getRootNode(),
+ "tables.table.name", config.getModel().getNodeHandler());
+ assertEquals("Wrong number of nodes",
+ NodeStructureHelper.tablesLength(), nodes.size());
+ for (int i = 0; i < NodeStructureHelper.tablesLength(); i++)
+ {
+ assertEquals("Wrong node value at " + i,
+ NodeStructureHelper.table(i), nodes.get(i).getValue());
+ }
+ }
+
+ /**
+ * Tests whether attribute keys are filtered out when resolving node keys.
+ */
+ @Test
+ public void testResolveNodeKeyAttribute()
+ {
+ String attrKey = "tables.table(0)[@type]";
+ config.addProperty(attrKey, "system");
+ assertTrue(
+ "Got attribute results",
+ config.resolveNodeKey(config.getRootNode(), attrKey,
+ config.getModel().getNodeHandler()).isEmpty());
+ }
+
+ /**
* Helper method for testing the getKeys(String) method.
*
* @param prefix the key to pass into getKeys()