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/05/11 22:28:17 UTC
svn commit: r1102072 - in /myfaces/core/branches/2.0.x/impl/src:
main/java/org/apache/myfaces/application/
main/java/org/apache/myfaces/renderkit/html/
main/java/org/apache/myfaces/view/facelets/
test/java/org/apache/myfaces/application/
Author: lu4242
Date: Wed May 11 20:28:16 2011
New Revision: 1102072
URL: http://svn.apache.org/viewvc?rev=1102072&view=rev
Log:
MYFACES-3137 Align ResponseStateManager implementation with the spec
Modified:
myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/application/StateManagerImpl.java
myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java
myfaces/core/branches/2.0.x/impl/src/test/java/org/apache/myfaces/application/StateManagerImplTest.java
Modified: myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/application/StateManagerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/application/StateManagerImpl.java?rev=1102072&r1=1102071&r2=1102072&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/application/StateManagerImpl.java (original)
+++ myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/application/StateManagerImpl.java Wed May 11 20:28:16 2011
@@ -38,8 +38,6 @@ import javax.faces.render.ResponseStateM
import javax.faces.view.StateManagementStrategy;
import javax.faces.view.ViewDeclarationLanguage;
-import org.apache.myfaces.application.jsp.JspStateManagerImpl;
-
public class StateManagerImpl extends StateManager
{
private static final Logger log = Logger.getLogger(StateManagerImpl.class.getName());
@@ -49,11 +47,8 @@ public class StateManagerImpl extends St
private RenderKitFactory _renderKitFactory = null;
- private StateCache _stateCache;
-
public StateManagerImpl()
{
- _stateCache = new StateCacheImpl();
}
@Override
@@ -120,7 +115,7 @@ public class StateManagerImpl extends St
RenderKit renderKit = getRenderKitFactory().getRenderKit(facesContext, renderKitId);
ResponseStateManager responseStateManager = renderKit.getResponseStateManager();
- Object state = getStateCache().restoreSerializedView(facesContext, viewId, responseStateManager.getState(facesContext, viewId));
+ Object state = responseStateManager.getState(facesContext, viewId);
if (state != null) {
Object[] stateArray = (Object[])state;
@@ -196,9 +191,6 @@ public class StateManagerImpl extends St
if (log.isLoggable(Level.FINEST)) log.finest("Processing saveSerializedView - new serialized view created");
}
-
- getStateCache().saveSerializedView(facesContext, serializedView);
-
if (log.isLoggable(Level.FINEST)) log.finest("Exiting saveView");
return serializedView;
@@ -286,13 +278,15 @@ public class StateManagerImpl extends St
RenderKit renderKit = getRenderKitFactory().getRenderKit(facesContext, uiViewRoot.getRenderKitId());
ResponseStateManager responseStateManager = renderKit.getResponseStateManager();
- responseStateManager.writeState(facesContext,
- getStateCache().encodeSerializedState(facesContext, state));
+ responseStateManager.writeState(facesContext, state);
if (log.isLoggable(Level.FINEST)) log.finest("Exiting writeState");
}
+ /*
+ * NOTE: This is not required anymore, because all logic related to state storing or caching on session has
+ * been moved to ResponseStateManager
@Override
public String getViewState(FacesContext facesContext)
{
@@ -312,9 +306,9 @@ public class StateManagerImpl extends St
}
Object[] savedState = (Object[]) saveView(facesContext);
- return facesContext.getRenderKit().getResponseStateManager().getViewState(facesContext,
- getStateCache().encodeSerializedState(facesContext, savedState));
- }
+ return facesContext.getRenderKit().getResponseStateManager().getViewState(facesContext, savedState);
+
+ }*/
//helpers
@@ -327,16 +321,4 @@ public class StateManagerImpl extends St
return _renderKitFactory;
}
-
-
- protected StateCache getStateCache()
- {
- return _stateCache;
- }
-
- protected void setStateCache(StateCache stateCache)
- {
- this._stateCache = stateCache;
- }
-
}
Modified: myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java?rev=1102072&r1=1102071&r2=1102072&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java (original)
+++ myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java Wed May 11 20:28:16 2011
@@ -31,12 +31,16 @@ import javax.faces.context.ResponseWrite
import javax.faces.render.RenderKitFactory;
import javax.faces.render.ResponseStateManager;
+import org.apache.myfaces.application.StateCache;
+import org.apache.myfaces.application.StateCacheImpl;
+import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
import org.apache.myfaces.renderkit.MyfacesResponseStateManager;
import org.apache.myfaces.shared_impl.config.MyfacesConfig;
import org.apache.myfaces.shared_impl.renderkit.html.HTML;
import org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils;
import org.apache.myfaces.shared_impl.renderkit.html.util.JavascriptUtils;
import org.apache.myfaces.shared_impl.util.StateUtils;
+import org.apache.myfaces.shared_impl.util.WebConfigParamUtils;
/**
* @author Manfred Geiler (latest modification by $Author$)
@@ -52,20 +56,51 @@ public class HtmlResponseStateManager ex
private static final int VIEWID_PARAM = 2;
public static final String STANDARD_STATE_SAVING_PARAM = "javax.faces.ViewState";
-
- @Override
- public void writeState(FacesContext facescontext, StateManager.SerializedView serializedview) throws IOException
+
+ @JSFWebConfigParam(since="2.0.6", expectedValues="true, false", defaultValue="true")
+ public static final String INIT_PARAM_HANDLE_STATE_CACHING_MECHANICS = "org.apache.myfaces.HANDLE_STATE_CACHING_MECHANICS";
+
+ private Boolean _handleStateCachingMechanics;
+
+ private StateCache _stateCache;
+
+ public HtmlResponseStateManager()
{
- ResponseWriter responseWriter = facescontext.getResponseWriter();
-
+ _stateCache = new StateCacheImpl();
+ }
+
+ protected boolean isHandlingStateCachingMechanics(FacesContext facesContext)
+ {
+ if (_handleStateCachingMechanics == null)
+ {
+ _handleStateCachingMechanics = WebConfigParamUtils.getBooleanInitParameter(facesContext.getExternalContext(), INIT_PARAM_HANDLE_STATE_CACHING_MECHANICS, true);
+ }
+ return _handleStateCachingMechanics.booleanValue();
+ }
+
+ public void writeState(FacesContext facesContext, Object state) throws IOException
+ {
+ Object[] token = null;
+ if (isHandlingStateCachingMechanics(facesContext))
+ {
+ getStateCache().saveSerializedView(facesContext, state);
+
+ token = (Object[]) getStateCache().encodeSerializedState(facesContext, state);
+ }
+ else
+ {
+ token = (Object[]) state;
+ }
+ ResponseWriter responseWriter = facesContext.getResponseWriter();
+
Object[] savedState = new Object[3];
- if (facescontext.getApplication().getStateManager().isSavingStateInClient(facescontext))
+ if (facesContext.getApplication().getStateManager().isSavingStateInClient(facesContext))
{
if (log.isLoggable(Level.FINEST))
log.finest("Writing state in client");
- Object treeStruct = serializedview.getStructure();
- Object compStates = serializedview.getState();
+ Object treeStruct = token[0];
+ Object compStates = token[1];
if (treeStruct != null)
{
@@ -92,7 +127,7 @@ public class HtmlResponseStateManager ex
if (log.isLoggable(Level.FINEST))
log.finest("Writing state in server");
// write viewSequence
- Object treeStruct = serializedview.getStructure();
+ Object treeStruct = token[0];
if (treeStruct != null)
{
if (treeStruct instanceof String)
@@ -102,16 +137,16 @@ public class HtmlResponseStateManager ex
}
}
- savedState[VIEWID_PARAM] = facescontext.getViewRoot().getViewId();
+ savedState[VIEWID_PARAM] = facesContext.getViewRoot().getViewId();
if (log.isLoggable(Level.FINEST))
log.finest("Writing view state and renderKit fields");
// write the view state field
- writeViewStateField(facescontext, responseWriter, savedState);
+ writeViewStateField(facesContext, responseWriter, savedState);
// renderKitId field
- writeRenderKitIdField(facescontext, responseWriter);
+ writeRenderKitIdField(facesContext, responseWriter);
}
private void writeViewStateField(FacesContext facesContext, ResponseWriter responseWriter, Object savedState)
@@ -163,9 +198,18 @@ public class HtmlResponseStateManager ex
return null;
}
- return new Object[] { savedState[TREE_PARAM], savedState[STATE_PARAM] };
+ if (isHandlingStateCachingMechanics(facesContext))
+ {
+ return getStateCache().restoreSerializedView(facesContext, viewId,
+ new Object[] { savedState[TREE_PARAM], savedState[STATE_PARAM] });
+ }
+ else
+ {
+ return new Object[] { savedState[TREE_PARAM], savedState[STATE_PARAM] };
+ }
}
+ /* There methods are no longer required
@Override
public Object getTreeStructureToRestore(FacesContext facesContext, String viewId)
{
@@ -192,7 +236,7 @@ public class HtmlResponseStateManager ex
}
return savedState[STATE_PARAM];
- }
+ }*/
/**
* Reconstructs the state from the "javax.faces.ViewState" request parameter.
@@ -256,6 +300,13 @@ public class HtmlResponseStateManager ex
return null;
}
+ if (isHandlingStateCachingMechanics(facesContext))
+ {
+ getStateCache().saveSerializedView(facesContext, state);
+
+ state = getStateCache().encodeSerializedState(facesContext, state);
+ }
+
Object treeStruct = null;
Object compStates = null;
@@ -313,4 +364,15 @@ public class HtmlResponseStateManager ex
return StateUtils.construct(savedState, facesContext.getExternalContext());
}
+
+
+ protected StateCache getStateCache()
+ {
+ return _stateCache;
+ }
+
+ protected void setStateCache(StateCache stateCache)
+ {
+ this._stateCache = stateCache;
+ }
}
Modified: myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java?rev=1102072&r1=1102071&r2=1102072&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java (original)
+++ myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java Wed May 11 20:28:16 2011
@@ -117,14 +117,11 @@ public class DefaultFaceletsStateManagem
private ViewDeclarationLanguageFactory _vdlFactory;
- private StateCache stateCache;
-
public DefaultFaceletsStateManagementStrategy ()
{
_vdlFactory = (ViewDeclarationLanguageFactory)FactoryFinder.getFactory(FactoryFinder.VIEW_DECLARATION_LANGUAGE_FACTORY);
//TODO: This object should be application scoped and shared
//between jsp and facelets
- this.stateCache = new StateCacheImpl();
}
@SuppressWarnings("unchecked")
@@ -143,7 +140,8 @@ public class DefaultFaceletsStateManagem
// Get previous state from ResponseStateManager.
manager = RendererUtils.getResponseStateManager (context, renderKitId);
- state = (Object[]) getStateCache().restoreSerializedView(context, viewId, manager.getState(context, viewId));
+ //state = (Object[]) getStateCache().restoreSerializedView(context, viewId, manager.getState(context, viewId));
+ state = (Object[]) manager.getState(context, viewId);
if (state == null)
{
@@ -465,8 +463,10 @@ public class DefaultFaceletsStateManagem
serializedView = new Object[] { null, states };
- externalContext.getRequestMap().put(SERIALIZED_VIEW_REQUEST_ATTR,
- getStateCache().encodeSerializedState(context, serializedView));
+ //externalContext.getRequestMap().put(SERIALIZED_VIEW_REQUEST_ATTR,
+ // getStateCache().encodeSerializedState(context, serializedView));
+
+ externalContext.getRequestMap().put(SERIALIZED_VIEW_REQUEST_ATTR, serializedView);
/*
if (context.getApplication().getStateManager().isSavingStateInClient(context))
@@ -488,7 +488,7 @@ public class DefaultFaceletsStateManagem
//if (!context.getApplication().getStateManager().isSavingStateInClient(context))
//{
- getStateCache().saveSerializedView(context, serializedView);
+ //getStateCache().saveSerializedView(context, serializedView);
//}
return serializedView;
@@ -876,16 +876,6 @@ public class DefaultFaceletsStateManagem
}
*/
- public StateCache getStateCache()
- {
- return stateCache;
- }
-
- public void setStateCache(StateCache stateCache)
- {
- this.stateCache = stateCache;
- }
-
public static class PostAddPreRemoveFromViewListener implements SystemEventListener
{
Modified: myfaces/core/branches/2.0.x/impl/src/test/java/org/apache/myfaces/application/StateManagerImplTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/impl/src/test/java/org/apache/myfaces/application/StateManagerImplTest.java?rev=1102072&r1=1102071&r2=1102072&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/impl/src/test/java/org/apache/myfaces/application/StateManagerImplTest.java (original)
+++ myfaces/core/branches/2.0.x/impl/src/test/java/org/apache/myfaces/application/StateManagerImplTest.java Wed May 11 20:28:16 2011
@@ -56,6 +56,7 @@ public class StateManagerImplTest extend
//renderKit.setResponseStateManager(new HtmlResponseStateManager());
//StateUtils.initSecret(servletContext);
//servletContext.setAttribute(StateUtils.SERIAL_FACTORY, new DefaultSerialFactory());
+ servletContext.addInitParameter(StateManager.STATE_SAVING_METHOD_PARAM_NAME, StateManager.STATE_SAVING_METHOD_CLIENT);
try
{