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 2011/02/05 23:23:31 UTC
svn commit: r1067542 - in
/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation:
DefaultLifecycleProviderFactory.java LifecycleProviderFactory.java
Author: lu4242
Date: Sat Feb 5 22:23:31 2011
New Revision: 1067542
URL: http://svn.apache.org/viewvc?rev=1067542&view=rev
Log:
make LifecycleProviderFactory to be on servlet context attribute map, not bound to a static variable to ensure LifecycleProviderFactory.release to be executed correctly
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java?rev=1067542&r1=1067541&r2=1067542&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java Sat Feb 5 22:23:31 2011
@@ -58,31 +58,27 @@ public class DefaultLifecycleProviderFac
@Override
public LifecycleProvider getLifecycleProvider(ExternalContext externalContext)
{
- LifecycleProvider lifecycleProvider = (LifecycleProvider) externalContext.getApplicationMap().get(LIFECYCLE_PROVIDER_INSTANCE_KEY);
+ LifecycleProvider lifecycleProvider = null;
+ if (externalContext == null)
+ {
+ // Really in jsf 2.0, this will not happen, because a Startup/Shutdown
+ // FacesContext and ExternalContext are provided on initialization and shutdown,
+ // and in other scenarios the real FacesContext/ExternalContext is provided.
+ log.info("No ExternalContext using fallback LifecycleProvider.");
+ lifecycleProvider = resolveFallbackLifecycleProvider();
+ }
+ else
+ {
+ lifecycleProvider = (LifecycleProvider) externalContext.getApplicationMap().get(LIFECYCLE_PROVIDER_INSTANCE_KEY);
+ }
if (lifecycleProvider == null)
{
- if (externalContext == null)
- {
- // Really in jsf 2.0, this will not happen, because a Startup/Shutdown
- // FacesContext and ExternalContext are provided on initialization and shutdown,
- // and in other scenarios the real FacesContext/ExternalContext is provided.
- log.info("No ExternalContext using fallback LifecycleProvider.");
- lifecycleProvider = resolveFallbackLifecycleProvider();
- }
- else
+ if (!resolveLifecycleProviderFromExternalContext(externalContext))
{
- if (!resolveLifecycleProviderFromExternalContext(externalContext))
+ if (!resolveLifecycleProviderFromService(externalContext))
{
- if (!resolveLifecycleProviderFromService(externalContext))
- {
- lifecycleProvider = resolveFallbackLifecycleProvider();
- externalContext.getApplicationMap().put(LIFECYCLE_PROVIDER_INSTANCE_KEY, lifecycleProvider);
- }
- else
- {
- //Retrieve it because it was resolved
- lifecycleProvider = (LifecycleProvider) externalContext.getApplicationMap().get(LIFECYCLE_PROVIDER_INSTANCE_KEY);
- }
+ lifecycleProvider = resolveFallbackLifecycleProvider();
+ externalContext.getApplicationMap().put(LIFECYCLE_PROVIDER_INSTANCE_KEY, lifecycleProvider);
}
else
{
@@ -90,6 +86,11 @@ public class DefaultLifecycleProviderFac
lifecycleProvider = (LifecycleProvider) externalContext.getApplicationMap().get(LIFECYCLE_PROVIDER_INSTANCE_KEY);
}
}
+ else
+ {
+ //Retrieve it because it was resolved
+ lifecycleProvider = (LifecycleProvider) externalContext.getApplicationMap().get(LIFECYCLE_PROVIDER_INSTANCE_KEY);
+ }
log.info("Using LifecycleProvider "+ lifecycleProvider.getClass().getName());
}
return lifecycleProvider;
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java?rev=1067542&r1=1067541&r2=1067542&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/LifecycleProviderFactory.java Sat Feb 5 22:23:31 2011
@@ -31,7 +31,7 @@ import org.apache.myfaces.spi.impl.SpiUt
public abstract class LifecycleProviderFactory {
protected static final String FACTORY_DEFAULT = DefaultLifecycleProviderFactory.class.getName();
- private static volatile LifecycleProviderFactory INSTANCE;
+ private static final String FACTORY_KEY = LifecycleProviderFactory.class.getName();
public static LifecycleProviderFactory getLifecycleProviderFactory()
{
@@ -41,7 +41,7 @@ public abstract class LifecycleProviderF
public static LifecycleProviderFactory getLifecycleProviderFactory(ExternalContext ctx)
{
- LifecycleProviderFactory instance = INSTANCE;
+ LifecycleProviderFactory instance = (LifecycleProviderFactory) ctx.getApplicationMap().get(FACTORY_KEY);
if (instance != null)
{
return instance;
@@ -77,7 +77,7 @@ public abstract class LifecycleProviderF
public static void setLifecycleProviderFactory(LifecycleProviderFactory instance) {
- INSTANCE = instance;
+ FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().put(FACTORY_KEY, instance);
}
public abstract LifecycleProvider getLifecycleProvider(ExternalContext externalContext);