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;