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

svn commit: r1166119 - /myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/lifecycle/PhaseListenerManager.java

Author: lofwyr
Date: Wed Sep  7 11:18:40 2011
New Revision: 1166119

URL: http://svn.apache.org/viewvc?rev=1166119&view=rev
Log:
TOBAGO-1025: Reduce number of PhaseEvent instances created

Modified:
    myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/lifecycle/PhaseListenerManager.java

Modified: myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/lifecycle/PhaseListenerManager.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/lifecycle/PhaseListenerManager.java?rev=1166119&r1=1166118&r2=1166119&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/lifecycle/PhaseListenerManager.java (original)
+++ myfaces/tobago/branches/tobago-1.0.x/core/src/main/java/org/apache/myfaces/tobago/lifecycle/PhaseListenerManager.java Wed Sep  7 11:18:40 2011
@@ -17,16 +17,16 @@ package org.apache.myfaces.tobago.lifecy
  * limitations under the License.
  */
 
-import java.util.HashMap;
-import java.util.Map;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import javax.faces.context.FacesContext;
 import javax.faces.event.PhaseEvent;
 import javax.faces.event.PhaseId;
 import javax.faces.event.PhaseListener;
 import javax.faces.lifecycle.Lifecycle;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * This class encapsulates the logic used to call PhaseListeners.  It was
@@ -65,11 +65,16 @@ class PhaseListenerManager {
     boolean[] beforePhaseSuccess = new boolean[phaseListeners.length];
     listenerSuccessMap.put(phaseId, beforePhaseSuccess);
 
+    if (phaseListeners.length == 0) {
+      return;
+    }
+    final PhaseEvent event = new PhaseEvent(facesContext, phaseId, lifecycle);
+
     for (int i = 0; i < phaseListeners.length; i++) {
       PhaseListener phaseListener = phaseListeners[i];
       if (isListenerForThisPhase(phaseListener, phaseId)) {
         try {
-          phaseListener.beforePhase(new PhaseEvent(facesContext, phaseId, lifecycle));
+          phaseListener.beforePhase(event);
           beforePhaseSuccess[i] = true;
         } catch (Exception e) {
           beforePhaseSuccess[i] = false; // redundant - for clarity
@@ -83,12 +88,17 @@ class PhaseListenerManager {
   void informPhaseListenersAfter(PhaseId phaseId) {
     boolean[] beforePhaseSuccess = listenerSuccessMap.get(phaseId);
 
+    if (phaseListeners.length == 0) {
+      return;
+    }
+    final PhaseEvent event = new PhaseEvent(facesContext, phaseId, lifecycle);
+
     for (int i = phaseListeners.length - 1; i >= 0; i--) {
       PhaseListener phaseListener = phaseListeners[i];
       if (isListenerForThisPhase(phaseListener, phaseId)
           && beforePhaseSuccess[i]) {
         try {
-          phaseListener.afterPhase(new PhaseEvent(facesContext, phaseId, lifecycle));
+          phaseListener.afterPhase(event);
         } catch (Exception e) {
           LOG.error("Exception in PhaseListener " + phaseId.toString() + " afterPhase", e);
         }