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:25 UTC
svn commit: r1145804 -
/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java
Author: lu4242
Date: Tue Jul 12 22:39:24 2011
New Revision: 1145804
URL: http://svn.apache.org/viewvc?rev=1145804&view=rev
Log:
MYFACES-3220 reduce number of PhaseEvent instances created (thanks to Matt Benson for provide this patch)
Modified:
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/PhaseListenerManager.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/PhaseListenerManager.java?rev=1145804&r1=1145803&r2=1145804&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 Jul 12 22:39:24 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)
{