Author: oheger
Date: Sat Mar 17 20:49:17 2018
New Revision: 1827106
URL: http://svn.apache.org/viewvc?rev=1827106&view=rev
Log:
CONFIGURATION-690: ExprLookup.getVariables() no longer returns null.
The method now returns a copy of the variables managed by this lookup
object.
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/interpol/ExprLookup.java
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/interpol/TestExprLookup.java
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/interpol/ExprLookup.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/interpol/ExprLookup.java?rev=1827106&r1=1827105&r2=1827106&view=diff
==============================================================================
---
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/interpol/ExprLookup.java
(original)
+++
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration2/interpol/ExprLookup.java
Sat Mar 17 20:49:17 2018
@@ -157,11 +157,14 @@ public class ExprLookup implements Looku
/**
* Returns the list of Variables that are accessible within expressions.
+ * This method returns a copy of the variables managed by this lookup; so
+ * modifying this object has no impact on this lookup.
+ *
* @return the List of Variables that are accessible within expressions.
*/
public Variables getVariables()
{
- return null;
+ return new Variables(variables);
}
/**
Modified:
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/interpol/TestExprLookup.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/interpol/TestExprLookup.java?rev=1827106&r1=1827105&r2=1827106&view=diff
==============================================================================
---
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/interpol/TestExprLookup.java
(original)
+++
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration2/interpol/TestExprLookup.java
Sat Mar 17 20:49:17 2018
@@ -89,6 +89,32 @@ public class TestExprLookup
assertEquals("Wrong result", value, lookup.lookup(value));
}
+ /**
+ * Tests whether variables can be queried.
+ */
+ @Test
+ public void testGetVariables()
+ {
+ ExprLookup.Variables vars = new ExprLookup.Variables();
+ vars.add(new ExprLookup.Variable("String",
org.apache.commons.lang3.StringUtils.class));
+ ExprLookup lookup = new ExprLookup(vars);
+ assertEquals("Wrong variables", vars, lookup.getVariables());
+ }
+
+ /**
+ * Tests that getVariables() returns a copy of the original variables.
+ */
+ @Test
+ public void testGetVariablesDefensiveCopy()
+ {
+ ExprLookup.Variables vars = new ExprLookup.Variables();
+ vars.add(new ExprLookup.Variable("String",
org.apache.commons.lang3.StringUtils.class));
+ ExprLookup lookup = new ExprLookup(vars);
+ ExprLookup.Variables vars2 = lookup.getVariables();
+ vars2.add(new ExprLookup.Variable("System", "Class:java.lang.System"));
+ assertEquals("Modified variables", vars, lookup.getVariables());
+ }
+
public static class Utility
{
String message;