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 2012/02/25 17:01:28 UTC

svn commit: r1293631 - /myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java

Author: lu4242
Date: Sat Feb 25 16:01:28 2012
New Revision: 1293631

URL: http://svn.apache.org/viewvc?rev=1293631&view=rev
Log:
MYFACES-3474 [perf] LifecycleProviderFactory does not cache created Factory (Thanks to Martin Koci for provide this patch)

Modified:
    myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java

Modified: myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java?rev=1293631&r1=1293630&r2=1293631&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java (original)
+++ myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java Sat Feb 25 16:01:28 2012
@@ -20,6 +20,7 @@ package org.apache.myfaces.config.annota
 
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
+import java.util.Map;
 
 import javax.faces.FacesException;
 import javax.faces.context.ExternalContext;
@@ -28,7 +29,9 @@ import javax.faces.context.FacesContext;
 import org.apache.myfaces.spi.impl.SpiUtils;
 
 
-public abstract class LifecycleProviderFactory {
+
+public abstract class LifecycleProviderFactory
+{
     protected static final String FACTORY_DEFAULT = DefaultLifecycleProviderFactory.class.getName();
 
     private static final String FACTORY_KEY = LifecycleProviderFactory.class.getName();
@@ -41,7 +44,8 @@ public abstract class LifecycleProviderF
     
     public static LifecycleProviderFactory getLifecycleProviderFactory(ExternalContext ctx)
     {
-        LifecycleProviderFactory instance = (LifecycleProviderFactory) ctx.getApplicationMap().get(FACTORY_KEY);
+        Map<String, Object> applicationMap = ctx.getApplicationMap();
+        LifecycleProviderFactory instance = (LifecycleProviderFactory) applicationMap.get(FACTORY_KEY);
         if (instance != null)
         {
             return instance;
@@ -53,7 +57,8 @@ public abstract class LifecycleProviderF
             if (System.getSecurityManager() != null)
             {
                 final ExternalContext ectx = ctx; 
-                lpf = (LifecycleProviderFactory) AccessController.doPrivileged(new java.security.PrivilegedExceptionAction<Object>()
+                lpf = (LifecycleProviderFactory)
+                        AccessController.doPrivileged(new java.security.PrivilegedExceptionAction<Object>()
                         {
                             public Object run() throws PrivilegedActionException
                             {
@@ -72,11 +77,16 @@ public abstract class LifecycleProviderF
         {
             throw new FacesException(pae);
         }
+        if (lpf != null)
+        {
+            applicationMap.put(FACTORY_KEY, lpf);
+        }
         return lpf;
     }
 
 
-    public static void setLifecycleProviderFactory(LifecycleProviderFactory instance) {
+    public static void setLifecycleProviderFactory(LifecycleProviderFactory instance)
+    {
         FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put(FACTORY_KEY, instance);
     }