myfaces-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From lu4...@apache.org
Subject svn commit: r1795381 - in /myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces: application/ application/viewstate/ renderkit/html/ spi/ spi/impl/
Date Tue, 16 May 2017 22:09:24 GMT
Author: lu4242
Date: Tue May 16 22:09:24 2017
New Revision: 1795381

URL: http://svn.apache.org/viewvc?rev=1795381&view=rev
Log:
MYFACES-4078 Expose StateCacheFactory/StateCache as a SPI service

Added:
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProvider.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProviderFactory.java
      - copied, changed from r1794638, myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/ViewScopeProviderFactory.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProviderWrapper.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultStateCacheProviderFactory.java
      - copied, changed from r1794638, myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultViewScopeProviderFactory.java
Modified:
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/application/StateCacheFactory.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/application/viewstate/StateCacheFactoryImpl.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
    myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/AnnotationProviderWrapper.java

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/application/StateCacheFactory.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/application/StateCacheFactory.java?rev=1795381&r1=1795380&r2=1795381&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/application/StateCacheFactory.java
(original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/application/StateCacheFactory.java
Tue May 16 22:09:24 2017
@@ -21,6 +21,10 @@ package org.apache.myfaces.application;
 import javax.faces.FacesWrapper;
 import javax.faces.context.FacesContext;
 
+/**
+ * @deprecated Use org.apache.myfaces.spi.StateCacheProvider instead
+ */
+@Deprecated
 public abstract class StateCacheFactory implements FacesWrapper<StateCacheFactory>
 {
     public abstract StateCache getStateCache(FacesContext facesContext);

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/application/viewstate/StateCacheFactoryImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/application/viewstate/StateCacheFactoryImpl.java?rev=1795381&r1=1795380&r2=1795381&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/application/viewstate/StateCacheFactoryImpl.java
(original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/application/viewstate/StateCacheFactoryImpl.java
Tue May 16 22:09:24 2017
@@ -21,9 +21,9 @@ package org.apache.myfaces.application.v
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.application.StateCache;
-import org.apache.myfaces.application.StateCacheFactory;
+import org.apache.myfaces.spi.StateCacheProvider;
 
-public class StateCacheFactoryImpl extends StateCacheFactory
+public class StateCacheFactoryImpl extends StateCacheProvider
 {
 
     private StateCache _clientSideStateCache;

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java?rev=1795381&r1=1795380&r2=1795381&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
(original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
Tue May 16 22:09:24 2017
@@ -30,8 +30,6 @@ import javax.faces.render.RenderKitFacto
 import javax.faces.render.ResponseStateManager;
 
 import org.apache.myfaces.application.StateCache;
-import org.apache.myfaces.application.StateCacheFactory;
-import org.apache.myfaces.application.viewstate.StateCacheFactoryImpl;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
 import org.apache.myfaces.renderkit.MyfacesResponseStateManager;
 import org.apache.myfaces.renderkit.StateTokenProcessor;
@@ -39,6 +37,8 @@ import org.apache.myfaces.shared.config.
 import org.apache.myfaces.shared.renderkit.html.HTML;
 import org.apache.myfaces.shared.util.StateUtils;
 import org.apache.myfaces.shared.util.WebConfigParamUtils;
+import org.apache.myfaces.spi.StateCacheProvider;
+import org.apache.myfaces.spi.StateCacheProviderFactory;
 
 /**
  * @author Manfred Geiler (latest modification by $Author$)
@@ -80,7 +80,7 @@ public class HtmlResponseStateManager ex
     public static final String INIT_PARAM_AUTOCOMPLETE_OFF_VIEW_STATE = 
             "org.apache.myfaces.AUTOCOMPLETE_OFF_VIEW_STATE";
             
-    private StateCacheFactory _stateCacheFactory;
+    private StateCacheProvider _stateCacheFactory;
     
     private StateTokenProcessor _stateTokenProcessor;
     
@@ -88,7 +88,6 @@ public class HtmlResponseStateManager ex
     
     public HtmlResponseStateManager()
     {
-        _stateCacheFactory = new StateCacheFactoryImpl();
         _stateTokenProcessor = new DefaultStateTokenProcessor();
         _autoCompleteOffViewState = null;
     }
@@ -292,6 +291,12 @@ public class HtmlResponseStateManager ex
 
     protected StateCache getStateCache(FacesContext facesContext)
     {
+        if (_stateCacheFactory == null)
+        {
+            _stateCacheFactory = StateCacheProviderFactory
+                    .getStateCacheProviderFactory(facesContext.getExternalContext())
+                    .getStateCacheProvider(facesContext.getExternalContext());
+        }
         return _stateCacheFactory.getStateCache(facesContext);
     }
 

Modified: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/AnnotationProviderWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/AnnotationProviderWrapper.java?rev=1795381&r1=1795380&r2=1795381&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/AnnotationProviderWrapper.java
(original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/AnnotationProviderWrapper.java
Tue May 16 22:09:24 2017
@@ -36,12 +36,18 @@ import javax.faces.context.ExternalConte
  */
 public abstract class AnnotationProviderWrapper extends AnnotationProvider implements FacesWrapper<AnnotationProvider>
 {
+    private AnnotationProvider delegate;
 
     public AnnotationProviderWrapper()
     {
         
     }
 
+    public AnnotationProviderWrapper(AnnotationProvider delegate)
+    {
+        this.delegate = delegate;
+    }
+
     public Map<Class<? extends Annotation>,Set<Class<?>>> getAnnotatedClasses(ExternalContext
ctx)
     {
         return getWrapped().getAnnotatedClasses(ctx);
@@ -56,4 +62,11 @@ public abstract class AnnotationProvider
     {
         return getWrapped().getBaseUrls(ctx);
     }
+
+    @Override
+    public AnnotationProvider getWrapped()
+    {
+        return this.delegate;
+    }
+
 }

Added: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProvider.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProvider.java?rev=1795381&view=auto
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProvider.java
(added)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProvider.java
Tue May 16 22:09:24 2017
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.spi;
+
+import javax.faces.FacesWrapper;
+import javax.faces.context.FacesContext;
+import org.apache.myfaces.application.StateCache;
+
+/**
+ * This class provides an interface to separate the state caching operations (saving/restoring)
+ * from the renderkit specific stuff that HtmlResponseStateManager should do.
+ * 
+ * @since 2.3
+ */
+public abstract class StateCacheProvider implements FacesWrapper<StateCacheProvider>
+{
+    
+    public abstract StateCache getStateCache(FacesContext facesContext);
+
+    public StateCacheProvider getWrapped()
+    {
+        return null;
+    }
+}

Copied: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProviderFactory.java
(from r1794638, myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/ViewScopeProviderFactory.java)
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProviderFactory.java?p2=myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProviderFactory.java&p1=myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/ViewScopeProviderFactory.java&r1=1794638&r2=1795381&rev=1795381&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/ViewScopeProviderFactory.java
(original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProviderFactory.java
Tue May 16 22:09:24 2017
@@ -28,45 +28,44 @@ import org.apache.myfaces.spi.impl.SpiUt
 
 /**
  *
- * @author Leonardo Uribe
  */
-public abstract class ViewScopeProviderFactory implements FacesWrapper<ViewScopeProviderFactory>
+public abstract class StateCacheProviderFactory implements FacesWrapper<StateCacheProviderFactory>
 {
     protected static final String FACTORY_DEFAULT = 
-        "org.apache.myfaces.spi.impl.DefaultViewScopeProviderFactory";
+        "org.apache.myfaces.spi.impl.DefaultStateCacheProviderFactory";
     
-    private static final String FACTORY_KEY = ViewScopeProviderFactory.class.getName();
+    private static final String FACTORY_KEY = StateCacheProviderFactory.class.getName();
     
-    public static ViewScopeProviderFactory getViewScopeHandlerFactory(ExternalContext ctx)
+    public static StateCacheProviderFactory getStateCacheProviderFactory(ExternalContext
ctx)
     {
-        ViewScopeProviderFactory instance
-                = (ViewScopeProviderFactory) ctx.getApplicationMap().get(FACTORY_KEY);
+        StateCacheProviderFactory instance
+                = (StateCacheProviderFactory) ctx.getApplicationMap().get(FACTORY_KEY);
         if (instance != null)
         {
             return instance;
         }
-        ViewScopeProviderFactory lpf = null;
+        StateCacheProviderFactory lpf = null;
         try
         {
 
             if (System.getSecurityManager() != null)
             {
                 final ExternalContext ectx = ctx;
-                lpf = (ViewScopeProviderFactory)
+                lpf = (StateCacheProviderFactory)
                         AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
                         {
                             public Object run() throws PrivilegedActionException
                             {
                                 return SpiUtils.build(ectx,
-                                        ViewScopeProviderFactory.class,
+                                        StateCacheProviderFactory.class,
                                         FACTORY_DEFAULT);
                             }
                         });
             }
             else
             {
-                lpf = (ViewScopeProviderFactory)
-                        SpiUtils.build(ctx, ViewScopeProviderFactory.class, FACTORY_DEFAULT);
+                lpf = (StateCacheProviderFactory)
+                        SpiUtils.build(ctx, StateCacheProviderFactory.class, FACTORY_DEFAULT);
             }
         }
         catch (PrivilegedActionException pae)
@@ -75,23 +74,27 @@ public abstract class ViewScopeProviderF
         }
         if (lpf != null)
         {
-            setViewScopeHandlerFactory(ctx, lpf);
+            setStateCacheProviderFactory(ctx, lpf);
         }
         return lpf;
     }
 
-    public static void setViewScopeHandlerFactory(ExternalContext ctx,
-                                                             ViewScopeProviderFactory instance)
+    public static void setStateCacheProviderFactory(ExternalContext ctx,
+                                                             StateCacheProviderFactory instance)
     {
         ctx.getApplicationMap().put(FACTORY_KEY, instance);
     }    
     
-    public abstract ViewScopeProvider getViewScopeHandler(ExternalContext ctx);
+    public StateCacheProvider getStateCacheProvider(ExternalContext ctx)
+    {
+        return createStateCacheProvider(ctx);
+    }
+    
+    public abstract StateCacheProvider createStateCacheProvider(ExternalContext externalContext);
     
-    public ViewScopeProviderFactory getWrapped()
+    public StateCacheProviderFactory getWrapped()
     {
         return null;
     }
     
-    public abstract void setViewScopeHandler(ExternalContext ctx, ViewScopeProvider viewScopeHandler);
 }

Added: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProviderWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProviderWrapper.java?rev=1795381&view=auto
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProviderWrapper.java
(added)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/StateCacheProviderWrapper.java
Tue May 16 22:09:24 2017
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.spi;
+
+import javax.faces.FacesWrapper;
+import javax.faces.context.FacesContext;
+import org.apache.myfaces.application.StateCache;
+
+/**
+ *
+ */
+public class StateCacheProviderWrapper extends StateCacheProvider implements FacesWrapper<StateCacheProvider>
+{
+    
+    private StateCacheProvider delegate;
+
+    public StateCacheProviderWrapper()
+    {
+    }
+
+    public StateCacheProviderWrapper(StateCacheProvider delegate)
+    {
+        this.delegate = delegate;
+    }
+
+    @Override
+    public StateCache getStateCache(FacesContext facesContext)
+    {
+        return getWrapped().getStateCache(facesContext);
+    }
+
+    @Override
+    public StateCacheProvider getWrapped()
+    {
+        return delegate;
+    }
+    
+}

Copied: myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultStateCacheProviderFactory.java
(from r1794638, myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultViewScopeProviderFactory.java)
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultStateCacheProviderFactory.java?p2=myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultStateCacheProviderFactory.java&p1=myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultViewScopeProviderFactory.java&r1=1794638&r2=1795381&rev=1795381&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultViewScopeProviderFactory.java
(original)
+++ myfaces/core/branches/2.3.x/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultStateCacheProviderFactory.java
Tue May 16 22:09:24 2017
@@ -18,52 +18,122 @@
  */
 package org.apache.myfaces.spi.impl;
 
+import java.lang.reflect.InvocationTargetException;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.faces.FacesException;
 import javax.faces.context.ExternalContext;
+import org.apache.myfaces.application.viewstate.StateCacheFactoryImpl;
 import org.apache.myfaces.shared.util.ClassUtils;
-import org.apache.myfaces.spi.ViewScopeProvider;
-import org.apache.myfaces.spi.ViewScopeProviderFactory;
-import org.apache.myfaces.util.ExternalSpecifications;
-import org.apache.myfaces.view.impl.DefaultViewScopeHandler;
+import org.apache.myfaces.spi.ServiceProviderFinderFactory;
+import org.apache.myfaces.spi.StateCacheProvider;
+import org.apache.myfaces.spi.StateCacheProviderFactory;
 
 /**
  *
- * @author Leonardo Uribe
  */
-public class DefaultViewScopeProviderFactory extends ViewScopeProviderFactory
+public class DefaultStateCacheProviderFactory extends StateCacheProviderFactory
 {
     
-    public static final String VIEW_SCOPE_HANDLER = ViewScopeProvider.class.getName();
-    public static final String VIEW_SCOPE_HANDLER_INSTANCE_KEY = VIEW_SCOPE_HANDLER + ".INSTANCE";
-
+    public static final String STATE_CACHE_PROVIDER = StateCacheProvider.class.getName();
+    
+    public static final String STATE_CACHE_PROVIDER_LIST = StateCacheProvider.class.getName()+".LIST";
+    
+    public static final String STATE_CACHE_PROVIDER_INSTANCE = StateCacheProvider.class.getName()+".INSTANCE";
+    
+    private Logger getLogger()
+    {
+        return Logger.getLogger(DefaultStateCacheProviderFactory.class.getName());
+    }
+    
     @Override
-    public ViewScopeProvider getViewScopeHandler(ExternalContext externalContext)
+    public StateCacheProvider getStateCacheProvider(ExternalContext externalContext)
     {
-        // check for cached instance
-        ViewScopeProvider returnValue = (ViewScopeProvider)
-                externalContext.getApplicationMap().get(VIEW_SCOPE_HANDLER_INSTANCE_KEY);
-
-        if (returnValue == null)
+        StateCacheProvider stateCacheProvider
+                = (StateCacheProvider) externalContext.getApplicationMap().get(STATE_CACHE_PROVIDER_INSTANCE);
+        if (stateCacheProvider == null)
         {
-            if (ExternalSpecifications.isCDIAvailable(externalContext))
+            stateCacheProvider = createStateCacheProvider(externalContext);
+            externalContext.getApplicationMap().put(STATE_CACHE_PROVIDER_INSTANCE, stateCacheProvider);
+        }
+        return stateCacheProvider;
+    }
+    
+    @Override
+    public StateCacheProvider createStateCacheProvider(
+            ExternalContext externalContext)
+    {
+        StateCacheProvider returnValue = null;
+        final ExternalContext extContext = externalContext;
+        try
+        {
+            if (System.getSecurityManager() != null)
             {
-                returnValue = (ViewScopeProvider) ClassUtils.newInstance(
-                    "org.apache.myfaces.cdi.impl.CDIManagedBeanHandlerImpl");
-                    //CDIManagedBeanHandler.getInstance(externalContext);
+                returnValue = AccessController.doPrivileged(new PrivilegedExceptionAction<StateCacheProvider>()
+                        {
+                            public StateCacheProvider run() throws ClassNotFoundException,
+                                    NoClassDefFoundError,
+                                    InstantiationException,
+                                    IllegalAccessException,
+                                    InvocationTargetException,
+                                    PrivilegedActionException
+                            {
+                                return resolveStateCacheProviderFromService(extContext);
+                            }
+                        });
             }
             else
             {
-                returnValue = new DefaultViewScopeHandler();
+                returnValue = resolveStateCacheProviderFromService(extContext);
             }
-            // cache the result on the ApplicationMap
-            externalContext.getApplicationMap().put(VIEW_SCOPE_HANDLER_INSTANCE_KEY, returnValue);
         }
-
+        catch (ClassNotFoundException e)
+        {
+            // ignore
+        }
+        catch (NoClassDefFoundError e)
+        {
+            // ignore
+        }
+        catch (InstantiationException e)
+        {
+            getLogger().log(Level.SEVERE, "", e);
+        }
+        catch (IllegalAccessException e)
+        {
+            getLogger().log(Level.SEVERE, "", e);
+        }
+        catch (InvocationTargetException e)
+        {
+            getLogger().log(Level.SEVERE, "", e);
+        }
+        catch (PrivilegedActionException e)
+        {
+            throw new FacesException(e);
+        }
         return returnValue;
     }
-
-    @Override
-    public void setViewScopeHandler(ExternalContext externalContext, ViewScopeProvider viewScopeHandler)
+    
+    private StateCacheProvider resolveStateCacheProviderFromService(
+            ExternalContext externalContext) throws ClassNotFoundException,
+            NoClassDefFoundError,
+            InstantiationException,
+            IllegalAccessException,
+            InvocationTargetException,
+            PrivilegedActionException
     {
-        externalContext.getApplicationMap().put(VIEW_SCOPE_HANDLER_INSTANCE_KEY, viewScopeHandler);
-    }
+        List<String> classList = (List<String>) externalContext.getApplicationMap().get(STATE_CACHE_PROVIDER_LIST);
+        if (classList == null)
+        {
+            classList = ServiceProviderFinderFactory.getServiceProviderFinder(externalContext).
+                    getServiceProviderList(STATE_CACHE_PROVIDER);
+            externalContext.getApplicationMap().put(STATE_CACHE_PROVIDER_LIST, classList);
+        }
+        return ClassUtils.buildApplicationObject(StateCacheProvider.class, classList, new
StateCacheFactoryImpl());
+    }    
+    
 }



Mime
View raw message