/** * */ package org.jboss.test.faces.staging; import javax.el.ELContextListener; import javax.el.ELResolver; import javax.el.ExpressionFactory; import javax.servlet.ServletContext; import javax.servlet.jsp.JspApplicationContext; import org.jboss.test.faces.TestException; /** * @author asmirnov * */ public class StaggingJspApplicationContext implements JspApplicationContext { public static final String FACES_EXPRESSION_FACTORY = "com.sun.faces.expressionFactory"; public static final String SUN_EXPRESSION_FACTORY="com.sun.el.ExpressionFactoryImpl"; public static final String JBOSS_EXPRESSION_FACTORY="org.jboss.el.ExpressionFactoryImpl"; private ExpressionFactory expressionFactory ; private final ServletContext servletContext; public StaggingJspApplicationContext(ServletContext servletContext) { this.servletContext = servletContext; String elFactoryClass = servletContext.getInitParameter(FACES_EXPRESSION_FACTORY); if(null == elFactoryClass){ elFactoryClass = servletContext.getInitParameter("com.sun.el.ExpressionFactoryImpl"); } try { if(null == elFactoryClass){ try { expressionFactory = instantiate(SUN_EXPRESSION_FACTORY); } catch (ClassNotFoundException e) { expressionFactory = instantiate(JBOSS_EXPRESSION_FACTORY); } } else { expressionFactory = instantiate(elFactoryClass); } } catch (Exception e) { throw new TestException("Couldn't instantiate EL expression factory",e); } } private ExpressionFactory instantiate(String elFactoryClass) throws InstantiationException, IllegalAccessException, ClassNotFoundException { return Class.forName(elFactoryClass).asSubclass(ExpressionFactory.class).newInstance(); } /* (non-Javadoc) * @see javax.servlet.jsp.JspApplicationContext#addELContextListener(javax.el.ELContextListener) */ public void addELContextListener(ELContextListener listener) { } /* (non-Javadoc) * @see javax.servlet.jsp.JspApplicationContext#addELResolver(javax.el.ELResolver) */ public void addELResolver(ELResolver resolver) { } /* (non-Javadoc) * @see javax.servlet.jsp.JspApplicationContext#getExpressionFactory() */ public ExpressionFactory getExpressionFactory() { return expressionFactory; } }