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()