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 }