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 2010/12/22 22:52:21 UTC

svn commit: r1052077 - in /myfaces/extensions/cdi/trunk/jee-modules: jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/navigation/ jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/navigation/

Author: gpetracek
Date: Wed Dec 22 21:52:21 2010
New Revision: 1052077

URL: http://svn.apache.org/viewvc?rev=1052077&view=rev
Log:
EXTCDI-92 ignore terminated requests

Modified:
    myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/navigation/CodiNavigationHandler.java
    myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/navigation/CodiNavigationHandler.java

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/navigation/CodiNavigationHandler.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/navigation/CodiNavigationHandler.java?rev=1052077&r1=1052076&r2=1052077&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/navigation/CodiNavigationHandler.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/navigation/CodiNavigationHandler.java Wed Dec 22 21:52:21 2010
@@ -33,6 +33,8 @@ public class CodiNavigationHandler exten
 {
     private final NavigationHandler wrapped;
 
+    private final NavigationHandler originalNavigationHandler;
+
     public CodiNavigationHandler(NavigationHandler navigationHandler)
     {
         if(isActivated())
@@ -46,11 +48,20 @@ public class CodiNavigationHandler exten
         {
             this.wrapped = navigationHandler;
         }
+
+        this.originalNavigationHandler = navigationHandler;
     }
 
     public void handleNavigation(FacesContext context, String fromAction, String outcome)
     {
-        this.wrapped.handleNavigation(context, fromAction, outcome);
+        if(context.getResponseComplete() /*see EXTCDI-92*/)
+        {
+            this.originalNavigationHandler.handleNavigation(context, fromAction, outcome);
+        }
+        else
+        {
+            this.wrapped.handleNavigation(context, fromAction, outcome);
+        }
     }
 
     public boolean isActivated()

Modified: myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/navigation/CodiNavigationHandler.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/navigation/CodiNavigationHandler.java?rev=1052077&r1=1052076&r2=1052077&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/navigation/CodiNavigationHandler.java (original)
+++ myfaces/extensions/cdi/trunk/jee-modules/jsf20-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf2/impl/navigation/CodiNavigationHandler.java Wed Dec 22 21:52:21 2010
@@ -49,33 +49,42 @@ import javax.faces.context.ExternalConte
 public class CodiNavigationHandler extends ConfigurableNavigationHandler implements Deactivatable
 {
     private final NavigationHandler wrapped;
+
+    private final NavigationHandler originalNavigationHandler;
+
     private final boolean deactivated;
+
     private final boolean addViewConfigsAsNavigationCase;
 
     public CodiNavigationHandler(NavigationHandler navigationHandler)
     {
-        this.wrapped = navigationHandler;
         this.deactivated = !isActivated();
-
         if(!this.deactivated)
         {
+            ViewConfigAwareNavigationHandler viewConfigAwareNavigationHandler =
+                    new ViewConfigAwareNavigationHandler(navigationHandler, true);
+
+            this.wrapped = new AccessScopeAwareNavigationHandler(viewConfigAwareNavigationHandler);
             this.addViewConfigsAsNavigationCase = isAddViewConfigsAsNavigationCaseActivated();
         }
         else
         {
+            this.wrapped = navigationHandler;
             this.addViewConfigsAsNavigationCase = false;
         }
+
+        this.originalNavigationHandler = navigationHandler;
     }
 
     public void handleNavigation(FacesContext context, String fromAction, String outcome)
     {
-        if(this.deactivated || isUnhandledExceptionQueued(context))
+        if(isUnhandledExceptionQueued(context) || context.getResponseComplete() /*see EXTCDI-92*/)
         {
-            this.wrapped.handleNavigation(context, fromAction, outcome);
+            this.originalNavigationHandler.handleNavigation(context, fromAction, outcome);
         }
         else
         {
-            getWrappedNavigationHandler().handleNavigation(context, fromAction, outcome);
+            this.wrapped.handleNavigation(context, fromAction, outcome);
         }
     }
 
@@ -85,14 +94,6 @@ public class CodiNavigationHandler exten
                 context.getExceptionHandler().getUnhandledExceptionQueuedEvents().iterator().hasNext();
     }
 
-    private NavigationHandler getWrappedNavigationHandler()
-    {
-        ViewConfigAwareNavigationHandler viewConfigAwareNavigationHandler =
-                new ViewConfigAwareNavigationHandler(this.wrapped, true);
-
-        return new AccessScopeAwareNavigationHandler(viewConfigAwareNavigationHandler);
-    }
-
     public NavigationCase getNavigationCase(FacesContext context, String action, String outcome)
     {
         if (this.wrapped instanceof ConfigurableNavigationHandler)