You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gp...@apache.org on 2012/03/10 16:22:10 UTC

svn commit: r1299221 - in /myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl: config/view/PhasesLifecycleCallbackPhaseListener.java scope/conversation/WindowContextManagerObserver.java

Author: gpetracek
Date: Sat Mar 10 15:22:10 2012
New Revision: 1299221

URL: http://svn.apache.org/viewvc?rev=1299221&view=rev
Log:
EXTCDI-275 restrict invocation of @InitView callbacks in case of an initial redirect

Modified:
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/PhasesLifecycleCallbackPhaseListener.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/WindowContextManagerObserver.java

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/PhasesLifecycleCallbackPhaseListener.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/config/view/PhasesLifecycleCallbackPhaseListener.java?rev=1299221&r1=1299220&r2=1299221&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/PhasesLifecycleCallbackPhaseListener.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/config/view/PhasesLifecycleCallbackPhaseListener.java Sat Mar 10 15:22:10 2012
@@ -31,6 +31,7 @@ import org.apache.myfaces.extensions.cdi
 import org.apache.myfaces.extensions.cdi.jsf.impl.config.view.spi.LifecycleAwarePageBeanDescriptor;
 import org.apache.myfaces.extensions.cdi.jsf.impl.config.view.spi.RequestLifecycleCallbackEntry;
 import org.apache.myfaces.extensions.cdi.jsf.api.config.view.ViewConfigDescriptor;
+import org.apache.myfaces.extensions.cdi.jsf.impl.scope.conversation.WindowContextManagerObserver;
 
 import javax.faces.event.PhaseEvent;
 import javax.faces.event.PhaseListener;
@@ -91,6 +92,16 @@ public final class PhasesLifecycleCallba
             return;
         }
 
+        //TODO check if we have to restrict the other callbacks as well
+        //leads to a call of @BeforePhase but not the corresponding @AfterPhase call of the corresponding callbacks
+
+        //don't call the callbacks in case of an initial redirct
+        if(Boolean.TRUE.equals(event.getFacesContext().getExternalContext().getRequestMap()
+                .get(WindowContextManagerObserver.INITIAL_REDIRCT_PERFORMED_KEY)))
+        {
+            return;
+        }
+
         if (isValidView(event.getFacesContext()))
         {
             processInitView(event.getFacesContext().getViewRoot().getViewId());

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/WindowContextManagerObserver.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/WindowContextManagerObserver.java?rev=1299221&r1=1299220&r2=1299221&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/WindowContextManagerObserver.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/scope/conversation/WindowContextManagerObserver.java Sat Mar 10 15:22:10 2012
@@ -58,6 +58,10 @@ import static org.apache.myfaces.extensi
 @ApplicationScoped
 public class WindowContextManagerObserver
 {
+    //don't use an event
+    public static final String INITIAL_REDIRCT_PERFORMED_KEY =
+            WindowContextManagerObserver.class.getName() + ":redirct";
+
     /**
      * tries to restore the window-id and the window-context as early as possible
      * @param phaseEvent the current jsf phase-event
@@ -197,6 +201,8 @@ public class WindowContextManagerObserve
             return;
         }
 
+        facesContext.getExternalContext().getRequestMap().put(INITIAL_REDIRCT_PERFORMED_KEY, Boolean.TRUE);
+
         try
         {
             String targetURL = facesContext.getApplication()