MYFACESTEST-39 MockApplication20 should traverse view SystemEventListeners
diff --git a/test20/src/main/java/org/apache/myfaces/test/mock/MockApplication20.java b/test20/src/main/java/org/apache/myfaces/test/mock/MockApplication20.java
index b3ecb2e..e3fe3f8 100644
--- a/test20/src/main/java/org/apache/myfaces/test/mock/MockApplication20.java
+++ b/test20/src/main/java/org/apache/myfaces/test/mock/MockApplication20.java
@@ -24,6 +24,7 @@
import javax.faces.FacesException;
import javax.faces.application.ProjectStage;
import javax.faces.application.ResourceHandler;
+import javax.faces.component.UIViewRoot;
import javax.faces.component.behavior.Behavior;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
@@ -289,6 +290,12 @@
{
checkNull(systemEventClass, "systemEventClass");
checkNull(source, "source");
+
+ //Call events only if event processing is enabled.
+ if (!facesContext.isProcessingEvents())
+ {
+ return;
+ }
try
{
@@ -304,6 +311,14 @@
.getListenersForEventClass(systemEventClass),
systemEventClass, source, event);
}
+
+ UIViewRoot uiViewRoot = facesContext.getViewRoot();
+ if (uiViewRoot != null)
+ {
+ //Call listeners on view level
+ event = _traverseListenerList(uiViewRoot.getViewListenersForEventClass(systemEventClass),
+ systemEventClass, source, event);
+ }
SystemListenerEntry systemListenerEntry = _systemEventListenerClassMap
.get(systemEventClass);