You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2018/12/10 14:26:43 UTC
[myfaces] branch 2.3.x updated: MYFACES-4274 Lookup
ExpressionFactory, also if SUPPORT_JSP_AND_FACES_EL is false
This is an automated email from the ASF dual-hosted git repository.
tandraschko pushed a commit to branch 2.3.x
in repository https://gitbox.apache.org/repos/asf/myfaces.git
The following commit(s) were added to refs/heads/2.3.x by this push:
new 137a20e MYFACES-4274 Lookup ExpressionFactory, also if SUPPORT_JSP_AND_FACES_EL is false
137a20e is described below
commit 137a20e00e4fe7edda163f806c01507590d4e567
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Mon Dec 10 15:26:31 2018 +0100
MYFACES-4274 Lookup ExpressionFactory, also if SUPPORT_JSP_AND_FACES_EL is false
---
.../myfaces/webapp/AbstractFacesInitializer.java | 5 ++++
.../myfaces/webapp/FaceletsInitilializer.java | 27 +++++++++++++++++++---
2 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java b/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
index bdd04ef..7c251ba 100644
--- a/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
+++ b/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
@@ -511,6 +511,11 @@ public abstract class AbstractFacesInitializer implements FacesInitializer
*/
protected static ExpressionFactory loadExpressionFactory(String expressionFactoryClassName)
{
+ return loadExpressionFactory(expressionFactoryClassName, true);
+ }
+
+ protected static ExpressionFactory loadExpressionFactory(String expressionFactoryClassName, boolean logMissing)
+ {
try
{
ClassLoader cl = ClassUtils.getContextClassLoader();
diff --git a/impl/src/main/java/org/apache/myfaces/webapp/FaceletsInitilializer.java b/impl/src/main/java/org/apache/myfaces/webapp/FaceletsInitilializer.java
index 1bb0200..491041c 100644
--- a/impl/src/main/java/org/apache/myfaces/webapp/FaceletsInitilializer.java
+++ b/impl/src/main/java/org/apache/myfaces/webapp/FaceletsInitilializer.java
@@ -18,11 +18,12 @@
*/
package org.apache.myfaces.webapp;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.el.ExpressionFactory;
import javax.faces.FacesException;
import javax.faces.context.ExternalContext;
import javax.servlet.ServletContext;
-
/**
* This initializer initializes only Facelets. Specially checks for
* org.apache.myfaces.EXPRESSION_FACTORY parameter.
@@ -31,18 +32,38 @@ import javax.servlet.ServletContext;
*/
public class FaceletsInitilializer extends org.apache.myfaces.webapp.AbstractFacesInitializer
{
+ private static final Logger log = Logger.getLogger(FaceletsInitilializer.class.getName());
@Override
protected void initContainerIntegration(ServletContext servletContext, ExternalContext externalContext)
{
-
ExpressionFactory expressionFactory = getUserDefinedExpressionFactory(externalContext);
if (expressionFactory == null)
{
+ String[] candidates = new String[] { "org.apache.el.ExpressionFactoryImpl",
+ "com.sun.el.ExpressionFactoryImpl", "de.odysseus.el.ExpressionFactoryImpl",
+ "org.jboss.el.ExpressionFactoryImpl", "com.caucho.el.ExpressionFactoryImpl" };
+
+ for (String candidate : candidates)
+ {
+ expressionFactory = loadExpressionFactory(candidate, false);
+ if (expressionFactory != null)
+ {
+ if (log.isLoggable(Level.FINE))
+ {
+ log.fine("javax.el.ExpressionFactory implementation found: " + candidate);
+ }
+ break;
+ }
+ }
+ }
+
+ if (expressionFactory == null)
+ {
throw new FacesException("No javax.el.ExpressionFactory found. Please provide" +
" <context-param> in web.xml: org.apache.myfaces.EXPRESSION_FACTORY");
}
-
+
buildConfiguration(servletContext, externalContext, expressionFactory);
}