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

svn commit: r815461 - in /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle: LifecycleImpl.java PhaseListenerManager.java

Author: mconcini
Date: Tue Sep 15 20:10:08 2009
New Revision: 815461

URL: http://svn.apache.org/viewvc?rev=815461&view=rev
Log:
MYFACES-2355 - fix for before phase listeners not redirecting to error page on exceptions.

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java?rev=815461&r1=815460&r2=815461&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java Tue Sep 15 20:10:08 2009
@@ -178,13 +178,13 @@
             facesContext.setCurrentPhaseId(renderExecutor.getPhase());
             
             flash.doPrePhaseActions(facesContext);
-            phaseListenerMgr.informPhaseListenersBefore(renderExecutor.getPhase());
+            boolean renderResponse = phaseListenerMgr.informPhaseListenersBefore(renderExecutor.getPhase());
             // also possible that one of the listeners completed the response
             if (isResponseComplete(facesContext, renderExecutor.getPhase(), true))
             {
                 return;
             }
-
+            if(renderResponse)
             renderExecutor.execute(facesContext);
         }
         

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java?rev=815461&r1=815460&r2=815461&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java Tue Sep 15 20:10:08 2009
@@ -60,11 +60,11 @@
         return (listenerPhaseId == PhaseId.ANY_PHASE.getOrdinal() || listenerPhaseId == phaseId.getOrdinal());
     }
 
-    void informPhaseListenersBefore(PhaseId phaseId)
+    boolean informPhaseListenersBefore(PhaseId phaseId)
     {
         boolean[] beforePhaseSuccess = new boolean[phaseListeners.length];
         listenerSuccessMap.put(phaseId, beforePhaseSuccess);
-
+        
         for (int i = 0; i < phaseListeners.length; i++)
         {
             PhaseListener phaseListener = phaseListeners[i];
@@ -83,10 +83,11 @@
                     
                     publishException (e, phaseId, ExceptionQueuedEventContext.IN_BEFORE_PHASE_KEY);
                     
-                    return;
+                    return false;   //if this is the render phase, do not render so we can go to the error page
                 }
             }
         }
+        return true; //if this is the render phase, render the response
     }
 
     void informPhaseListenersAfter(PhaseId phaseId)