001 package com.mockrunner.mock.web;
002
003 import java.util.HashMap;
004 import java.util.Map;
005
006 import javax.servlet.jsp.el.ELException;
007 import javax.servlet.jsp.el.Expression;
008 import javax.servlet.jsp.el.ExpressionEvaluator;
009 import javax.servlet.jsp.el.FunctionMapper;
010 import javax.servlet.jsp.el.VariableResolver;
011
012 /**
013 * Mock implementation of <code>ExpressionEvaluator</code>.
014 */
015 public class MockExpressionEvaluator extends ExpressionEvaluator
016 {
017 private Map expressions = new HashMap();
018
019 public void addObject(String expression, Object object)
020 {
021 expressions.put(expression, object);
022 }
023
024 public void clearObjects()
025 {
026 expressions.clear();
027 }
028
029 public Object evaluate(String expression, Class expectedType, VariableResolver resolver, FunctionMapper mapper) throws ELException
030 {
031 Object object = expressions.get(expression);
032 if(null == object)
033 {
034 throw new ELException("No object for expression " + expression + " defined.");
035 }
036 if(!object.getClass().equals(expectedType))
037 {
038 throw new ELException("Expected type " + expectedType + " for expression " + expression + " but actual type is " + object.getClass());
039 }
040 return object;
041 }
042
043 public Expression parseExpression(String expression, Class expectedType, FunctionMapper mapper) throws ELException
044 {
045 return new MockExpression(this, expression, expectedType, mapper);
046 }
047 }