Author: oheger
Date: Thu Dec 20 21:16:06 2012
New Revision: 1424706
URL: http://svn.apache.org/viewvc?rev=1424706&view=rev
Log:
XMLBeanDeclaration now also performs interpolation when querying constructor
arguments.
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/beanutils/XMLBeanDeclaration.java
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/beanutils/TestXMLBeanDeclaration.java
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/beanutils/XMLBeanDeclaration.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/beanutils/XMLBeanDeclaration.java?rev=1424706&r1=1424705&r2=1424706&view=diff
==============================================================================
---
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/beanutils/XMLBeanDeclaration.java
(original)
+++
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/beanutils/XMLBeanDeclaration.java
Thu Dec 20 21:16:06 2012
@@ -538,28 +538,28 @@ public class XMLBeanDeclaration implemen
}
/**
- * Checks whether the constructor argument represented by the given
- * configuration node is a bean declaration.
+ * Helper method for obtaining an attribute of a configuration node.
*
- * @param nd the configuration node in question
- * @return a flag whether this constructor argument is a bean declaration
+ * @param nd the node
+ * @param attr the name of the attribute
+ * @return the string value of this attribute (can be <b>null</b>)
*/
- private static boolean isBeanDeclarationArgument(ConfigurationNode nd)
+ private String getAttribute(ConfigurationNode nd, String attr)
{
- return nd.getAttributes(ATTR_BEAN_CLASS_NAME).isEmpty();
+ List<ConfigurationNode> attributes = nd.getAttributes(attr);
+ return attributes.isEmpty() ? null : String
+ .valueOf(interpolate(attributes.get(0).getValue()));
}
/**
- * Helper method for obtaining an attribute of a configuration node.
+ * Checks whether the constructor argument represented by the given
+ * configuration node is a bean declaration.
*
- * @param nd the node
- * @param attr the name of the attribute
- * @return the string value of this attribute (can be <b>null</b>)
+ * @param nd the configuration node in question
+ * @return a flag whether this constructor argument is a bean declaration
*/
- private static String getAttribute(ConfigurationNode nd, String attr)
+ private static boolean isBeanDeclarationArgument(ConfigurationNode nd)
{
- List<ConfigurationNode> attributes = nd.getAttributes(attr);
- return attributes.isEmpty() ? null : String.valueOf(attributes.get(0)
- .getValue());
+ return nd.getAttributes(ATTR_BEAN_CLASS_NAME).isEmpty();
}
}
Modified:
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/beanutils/TestXMLBeanDeclaration.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/beanutils/TestXMLBeanDeclaration.java?rev=1424706&r1=1424705&r2=1424706&view=diff
==============================================================================
---
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/beanutils/TestXMLBeanDeclaration.java
(original)
+++
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/beanutils/TestXMLBeanDeclaration.java
Thu Dec 20 21:16:06 2012
@@ -467,6 +467,23 @@ public class TestXMLBeanDeclaration
}
/**
+ * Tests whether interpolation is done on constructor arguments.
+ */
+ @Test
+ public void testGetInterpolatedConstructorArgs()
+ {
+ HierarchicalConfiguration config = new BaseHierarchicalConfiguration();
+ String expectedValue = "ctorArg";
+ config.addProperty("value", expectedValue);
+ setupBeanDeclaration(config, KEY, TEST_PROPS, TEST_VALUES);
+ config.addProperty(KEY + ".config-constrarg[@config-value]",
"${value}");
+ XMLBeanDeclaration decl = new XMLBeanDeclaration(config, KEY);
+ Collection<ConstructorArg> args = decl.getConstructorArgs();
+ ConstructorArg arg = args.iterator().next();
+ assertEquals("Wrong interpolated value", expectedValue,
arg.getValue());
+ }
+
+ /**
* Initializes a configuration object with a bean declaration. Under the
* specified key the given properties will be added.
*