private IContext toIContext(final Map<String, Object> context) { final VariablesMap<String, Object> variables = new VariablesMap<>(context); return new IContext() { @Override public VariablesMap<String, Object> getVariables() { return variables; } @Override public Locale getLocale() { return Locale.getDefault(); } @Override public void addContextExecutionInfo(String templateName) { } }; } }
/** * <p> * Create an instance specifying a locale and an initial set of context * variables. * </p> * * @param locale the locale to be used. * @param variables the initial set of context variables. */ AbstractContext(final Locale locale, final Map<String, ?> variables) { super(); Validate.notNull(locale, "Locale cannot be null"); this.locale = locale; final VariablesMap<String,Object> newVariablesMap; if (variables != null) { newVariablesMap = new VariablesMap<String,Object>((variables.size()*3)/2, 1.0f); newVariablesMap.putAll(variables); } else { newVariablesMap = new VariablesMap<String,Object>(5); } this.variables = newVariablesMap; }
private Object createEvaluationRoot() { final VariablesMap<String, Object> contextVariables = this.context.getVariables(); // We create a new VariablesMap instance using its constructor instead of cloning the existing one // because we want to avoid undesirable interactions like, for example, those that could happen // if we executed putAll on a WebVariablesMap object (which would add those variables to the HttpServletRequest // and therefore make them available to the whole page and not just the local variable scope). final VariablesMap<String,Object> newEvaluationRoot = new VariablesMap<String, Object>(contextVariables); if (this.localVariables != null) { newEvaluationRoot.putAll(this.localVariables); } return newEvaluationRoot; }