You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2011/07/13 00:39:40 UTC

svn commit: r1145806 - /myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java

Author: lu4242
Date: Tue Jul 12 22:39:39 2011
New Revision: 1145806

URL: http://svn.apache.org/viewvc?rev=1145806&view=rev
Log:
MYFACES-3220 reduce number of PhaseEvent instances created (thanks to Matt Benson for provide this patch)

Modified:
    myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java

Modified: myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java?rev=1145806&r1=1145805&r2=1145806&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java (original)
+++ myfaces/core/branches/2.0.x/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java Tue Jul 12 22:39:39 2011
@@ -20,7 +20,6 @@
 package org.apache.myfaces.lifecycle;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import javax.faces.context.FacesContext;
 import javax.faces.event.ExceptionQueuedEvent;
@@ -65,7 +64,9 @@ class PhaseListenerManager
     {
         boolean[] beforePhaseSuccess = new boolean[phaseListeners.length];
         listenerSuccessMap.put(phaseId, beforePhaseSuccess);
-        
+
+        PhaseEvent event = new PhaseEvent(facesContext, phaseId, lifecycle);
+
         for (int i = 0; i < phaseListeners.length; i++)
         {
             PhaseListener phaseListener = phaseListeners[i];
@@ -73,7 +74,7 @@ class PhaseListenerManager
             {
                 try
                 {
-                    phaseListener.beforePhase(new PhaseEvent(facesContext, phaseId, lifecycle));
+                    phaseListener.beforePhase(event);
                     beforePhaseSuccess[i] = true;
                 }
                 catch (Throwable e)
@@ -94,14 +95,19 @@ class PhaseListenerManager
     {
         boolean[] beforePhaseSuccess = listenerSuccessMap.get(phaseId);
 
+        PhaseEvent event = null;
+
         for (int i = phaseListeners.length - 1; i >= 0; i--)
         {
             PhaseListener phaseListener = phaseListeners[i];
             if (isListenerForThisPhase(phaseListener, phaseId) && beforePhaseSuccess[i])
             {
+                if (event == null) {
+                    event = new PhaseEvent(facesContext, phaseId, lifecycle);
+                }
                 try
                 {
-                    phaseListener.afterPhase(new PhaseEvent(facesContext, phaseId, lifecycle));
+                    phaseListener.afterPhase(event);
                 }
                 catch (Throwable e)
                 {