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);
}