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;
     }