You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2013/11/01 17:09:08 UTC
svn commit: r1537970 -
/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
Author: lu4242
Date: Fri Nov 1 16:09:08 2013
New Revision: 1537970
URL: http://svn.apache.org/r1537970
Log:
Small fix user reflection for InitialContext lookup to avoid restricted API in GAE
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java?rev=1537970&r1=1537969&r2=1537970&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java Fri Nov 1 16:09:08 2013
@@ -51,8 +51,6 @@ import javax.faces.context.FacesContext;
import javax.faces.event.PostConstructApplicationEvent;
import javax.faces.event.PreDestroyApplicationEvent;
import javax.faces.event.SystemEvent;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
import javax.servlet.ServletContext;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@@ -62,6 +60,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
+import org.apache.myfaces.shared.util.ClassUtils;
import org.apache.myfaces.spi.ServiceProviderFinder;
import org.apache.myfaces.spi.ServiceProviderFinderFactory;
@@ -564,28 +563,48 @@ public abstract class AbstractFacesIniti
CDI_SERVLET_CONTEXT_BEAN_MANAGER_ATTRIBUTE);
if (beanManager == null)
{
- // Try with JNDI
+ // Use reflection to avoid restricted API in GAE
+ Class icclazz = null;
+ Method lookupMethod = null;
try
{
- // in an application server
- beanManager = InitialContext.doLookup("java:comp/BeanManager");
+ icclazz = ClassUtils.simpleClassForName("javax.naming.InitialContext");
+ if (icclazz != null)
+ {
+ lookupMethod = icclazz.getMethod("doLookup", String.class);
+ }
}
- catch (NamingException e)
+ catch (Throwable t)
{
- // silently ignore
+ //
}
-
- if (beanManager == null)
+ if (lookupMethod != null)
{
+ // Try with JNDI
try
{
- // in a servlet container
- beanManager = InitialContext.doLookup("java:comp/env/BeanManager");
+ // in an application server
+ //beanManager = InitialContext.doLookup("java:comp/BeanManager");
+ beanManager = lookupMethod.invoke(icclazz, "java:comp/BeanManager");
}
- catch (NamingException e)
+ catch (Exception e)
{
// silently ignore
}
+
+ if (beanManager == null)
+ {
+ try
+ {
+ // in a servlet container
+ //beanManager = InitialContext.doLookup("java:comp/env/BeanManager");
+ beanManager = lookupMethod.invoke(icclazz, "java:comp/env/BeanManager");
+ }
+ catch (Exception e)
+ {
+ // silently ignore
+ }
+ }
}
}
if (beanManager != null)