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:55 UTC

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

Author: lu4242
Date: Sat Feb 25 16:01:55 2012
New Revision: 1293632

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

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

Modified: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java?rev=1293632&r1=1293631&r2=1293632&view=diff
==============================================================================
--- myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java Sat Feb 25 16:01:55 2012
@@ -25,7 +25,8 @@ import javax.faces.context.ExternalConte
 import javax.faces.context.FacesContext;
 
 
-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();
@@ -38,16 +39,23 @@ 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;
         }
-        return (LifecycleProviderFactory) DiscoverSingleton.find(LifecycleProviderFactory.class, FACTORY_DEFAULT);
+        LifecycleProviderFactory lpf = (LifecycleProviderFactory) DiscoverSingleton.find(LifecycleProviderFactory.class, FACTORY_DEFAULT);
+        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);
     }