package org.jboss.jsfunit.analysis.el; import java.util.Map; import javax.el.ExpressionFactory; import javax.el.ValueExpression; import javax.el.VariableMapper; /** * * @author Jason * @since 1.0 */ public class JSFUnitVariableMapper extends VariableMapper { private final Map<String, Class<?>> managedBeans; private final ExpressionFactory factory; public JSFUnitVariableMapper(final Map<String, Class<?>> managedBeans, final ExpressionFactory factory) { this.managedBeans = managedBeans; this.factory = factory; } /** * We aren't evaluating anything, so we don't need the actual object the * variable refers to, we just need that object's class. Once * we have the class, our ELResolver implementation will be responsible * for reflecting on that class to resolve any properties or methods. */ @Override public ValueExpression resolveVariable(final String variable) { final Class<?> managedBeanClass = managedBeans.get(variable); if(managedBeanClass != null) { return factory.createValueExpression(managedBeanClass, Class.class); } else { return null; } } @Override public ValueExpression setVariable(final String variable, final ValueExpression expression) { throw new UnsupportedOperationException(); } }