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)