public void addResolvedFunction(String function) { resolvedFunctions.add(function); if (getParent() != null) { getParent().addResolvedFunction(function); } }
@Override public Method resolveFunction(String prefix, String localName) { final Context context = JinjavaInterpreter.getCurrent().getContext(); MacroFunction macroFunction = context.getGlobalMacro(localName); if (macroFunction != null) { return AbstractCallableMethod.EVAL_METHOD; } final String functionName = buildFunctionName(prefix, localName); if (context.isFunctionDisabled(functionName)) { throw new DisabledException(functionName); } if (map.containsKey(functionName)) { context.addResolvedFunction(functionName); } return map.get(functionName); }
@Test public void itRecursivelyAddsValuesUpTheContextChain() { Context child = new Context(context); child.addResolvedValue(RESOLVED_VALUE); child.addResolvedFunction(RESOLVED_FUNCTION); child.addResolvedExpression(RESOLVED_EXPRESSION); assertThat(context.getResolvedValues()).contains(RESOLVED_VALUE); assertThat(context.getResolvedFunctions()).contains(RESOLVED_FUNCTION); assertThat(context.getResolvedExpressions()).contains(RESOLVED_EXPRESSION); }
@Test public void itRecursivelyAddsValuesUpTheContextChain() { Context child = new Context(context); child.addResolvedValue(RESOLVED_VALUE); child.addResolvedFunction(RESOLVED_FUNCTION); child.addResolvedExpression(RESOLVED_EXPRESSION); assertThat(context.getResolvedValues()).contains(RESOLVED_VALUE); assertThat(context.getResolvedFunctions()).contains(RESOLVED_FUNCTION); assertThat(context.getResolvedExpressions()).contains(RESOLVED_EXPRESSION); }
@Test public void itAddsResolvedValuesFromAnotherContextObject() { Context donor = new Context(); donor.addResolvedValue(RESOLVED_VALUE); donor.addResolvedFunction(RESOLVED_FUNCTION); donor.addResolvedExpression(RESOLVED_EXPRESSION); assertThat(context.getResolvedValues()).doesNotContain(RESOLVED_VALUE); assertThat(context.getResolvedFunctions()).doesNotContain(RESOLVED_FUNCTION); assertThat(context.getResolvedExpressions()).doesNotContain(RESOLVED_EXPRESSION); context.addResolvedFrom(donor); assertThat(context.getResolvedValues()).contains(RESOLVED_VALUE); assertThat(context.getResolvedFunctions()).contains(RESOLVED_FUNCTION); assertThat(context.getResolvedExpressions()).contains(RESOLVED_EXPRESSION); }
@Test public void itAddsResolvedValuesFromAnotherContextObject() { Context donor = new Context(); donor.addResolvedValue(RESOLVED_VALUE); donor.addResolvedFunction(RESOLVED_FUNCTION); donor.addResolvedExpression(RESOLVED_EXPRESSION); assertThat(context.getResolvedValues()).doesNotContain(RESOLVED_VALUE); assertThat(context.getResolvedFunctions()).doesNotContain(RESOLVED_FUNCTION); assertThat(context.getResolvedExpressions()).doesNotContain(RESOLVED_EXPRESSION); context.addResolvedFrom(donor); assertThat(context.getResolvedValues()).contains(RESOLVED_VALUE); assertThat(context.getResolvedFunctions()).contains(RESOLVED_FUNCTION); assertThat(context.getResolvedExpressions()).contains(RESOLVED_EXPRESSION); }