You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by st...@apache.org on 2011/11/25 12:59:22 UTC
svn commit: r1206129 - in /myfaces/extensions/cdi/trunk/jee-modules:
jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/
jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversa...
Author: struberg
Date: Fri Nov 25 11:59:22 2011
New Revision: 1206129
URL: http://svn.apache.org/viewvc?rev=1206129&view=rev
Log:
EXTCDI-239 improve restId handling
Modified:
myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/RestConversationExpirationEvaluator.java
myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/JsfRestParameters.java
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/RestConversationExpirationEvaluator.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/RestConversationExpirationEvaluator.java?rev=1206129&r1=1206128&r2=1206129&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/RestConversationExpirationEvaluator.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/RestConversationExpirationEvaluator.java Fri Nov 25 11:59:22 2011
@@ -42,8 +42,17 @@ class RestConversationExpirationEvaluato
private RestParameters restParameters;
+ /**
+ * The restId (viewId + parameters + values) of the first GET
+ * request of this view.
+ */
private String oldRestId;
+ /**
+ * This flag will be used to remember a reset storage request;
+ */
+ private boolean resetPending = false;
+
RestConversationExpirationEvaluator(BeanManager beanManager, AccessDecisionVoterContext accessDecisionVoterContext)
{
this.accessDecisionVoterContext = accessDecisionVoterContext;
@@ -55,6 +64,11 @@ class RestConversationExpirationEvaluato
*/
public boolean isExpired()
{
+ if (resetPending)
+ {
+ return true;
+ }
+
// check for bean access via ViewConfig
if(this.accessDecisionVoterContext != null &&
AccessDecisionState.VOTE_IN_PROGRESS.equals(this.accessDecisionVoterContext.getState()))
@@ -111,7 +125,7 @@ class RestConversationExpirationEvaluato
*/
public void expire()
{
- oldRestId = null;
+ resetPending = true;
}
}
Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/JsfRestParameters.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/JsfRestParameters.java?rev=1206129&r1=1206128&r2=1206129&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/JsfRestParameters.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/scope/conversation/JsfRestParameters.java Fri Nov 25 11:59:22 2011
@@ -44,15 +44,11 @@ public class JsfRestParameters extends R
* We cache the viewParams values as long as the viewId remains the same
* for this very request. We do this because evaluating the
* viewParams with every bean invocation is very expensive.
+ * This String also contains the viewId!
*/
private String restId = null;
/**
- * Used to determine when we need to recalculate {@link #restId}
- */
- private String oldViewId = null;
-
- /**
* This flag will be used to remember a storage request;
*/
public boolean isPostback()
@@ -63,26 +59,22 @@ public class JsfRestParameters extends R
public String getRestId()
{
- FacesContext facesContext = FacesContext.getCurrentInstance();
- if (facesContext == null)
- {
- return null;
- }
- String viewId = getViewId(facesContext);
- if (viewId == null)
+ if (restId == null)
{
- return null;
- }
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ if (facesContext == null)
+ {
+ return null;
+ }
+ String viewId = getViewId(facesContext);
+ if (viewId == null)
+ {
+ return null;
+ }
- if (oldViewId != null && oldViewId.equals(viewId))
- {
- // use the already calculated restId
- return restId;
+ restId = viewId + "//" + getViewParams(facesContext);
}
- oldViewId = viewId;
-
- restId = viewId + "//" + getViewParams(facesContext);
return restId;
}