package com.softwaremill.common.cdi.el; import java.util.Map; /** * @author Adam Warski (adam at warski dot org) */ public abstract class AbstractELEvaluator implements ELEvaluator { public abstract <T> T evaluate(String expression, Class<T> expectedResultType); @SuppressWarnings({"unchecked"}) public <T> T evaluate(String expression, Class<T> expectedResultType, Map<String, Object> parameters) { try { // Setting parameters for (Map.Entry<String, Object> parameter : parameters.entrySet()) { setParameter(parameter.getKey(), parameter.getValue()); } // Evaluating expression return evaluate(expression, expectedResultType); } finally { // Clearing up parameters for (String parameterName : parameters.keySet()) { clearParameter(parameterName); } } } public abstract void setParameter(String name, Object value); public abstract void clearParameter(String name); }