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:27 UTC

svn commit: r1166118 - /myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/lifecycle/PhaseListenerManager.java

Author: lofwyr
Date: Wed Sep  7 11:18:27 2011
New Revision: 1166118

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

Modified:
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/lifecycle/PhaseListenerManager.java

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/lifecycle/PhaseListenerManager.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/lifecycle/PhaseListenerManager.java?rev=1166118&r1=1166117&r2=1166118&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/lifecycle/PhaseListenerManager.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/lifecycle/PhaseListenerManager.java Wed Sep  7 11:18:27 2011
@@ -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);
         }