public void suscribeListeners(UIViewRoot uiViewRoot) { boolean listenerSubscribed = false; List<SystemEventListener> pavList = uiViewRoot.getViewListenersForEventClass(PostAddToViewEvent.class); if (pavList != null) { for (SystemEventListener listener : pavList) { if (listener instanceof PostAddPreRemoveFromViewListener) { listenerSubscribed = true; break; } } } if (!listenerSubscribed) { PostAddPreRemoveFromViewListener componentListener = new PostAddPreRemoveFromViewListener(); uiViewRoot.subscribeToViewEvent(PostAddToViewEvent.class, componentListener); uiViewRoot.subscribeToViewEvent(PreRemoveFromViewEvent.class, componentListener); } }
UIComponent container = CoreUtils.getResourceContainer(root, target); if (container == null) { List<SystemEventListener> postAddToViewListeners = root.getViewListenersForEventClass(PostAddToViewEvent.class); if (postAddToViewListeners != null) { postAddToViewListeners = new ArrayList<SystemEventListener>(postAddToViewListeners); List<SystemEventListener> preRemoveFromViewListeners = root.getViewListenersForEventClass(PreRemoveFromViewEvent.class); if (preRemoveFromViewListeners != null) { preRemoveFromViewListeners = new ArrayList<SystemEventListener>(preRemoveFromViewListeners);
private SystemEvent invokeViewListenersFor(FacesContext ctx, Class<? extends SystemEvent> systemEventClass, SystemEvent event, Object source) { SystemEvent result = event; if (listenerInvocationGuard.isGuardSet(ctx, systemEventClass)) { return result; } listenerInvocationGuard.setGuard(ctx, systemEventClass); UIViewRoot root = ctx.getViewRoot(); try { if (root != null) { List<SystemEventListener> listeners = root.getViewListenersForEventClass(systemEventClass); if (null == listeners) { return null; } EventInfo rootEventInfo = systemEventHelper.getEventInfo(systemEventClass, UIViewRoot.class); // process view listeners result = processListenersAccountingForAdds(listeners, event, source, rootEventInfo); } } finally { listenerInvocationGuard.clearGuard(ctx, systemEventClass); } return result; }
private SystemEvent invokeViewListenersFor(FacesContext ctx, Class<? extends SystemEvent> systemEventClass, SystemEvent event, Object source) { SystemEvent result = event; if (listenerInvocationGuard.isGuardSet(ctx, systemEventClass)) { return result; } listenerInvocationGuard.setGuard(ctx, systemEventClass); UIViewRoot root = ctx.getViewRoot(); try { if (root != null) { List<SystemEventListener> listeners = root.getViewListenersForEventClass(systemEventClass); if (null == listeners) { return null; } EventInfo rootEventInfo = systemEventHelper.getEventInfo(systemEventClass, UIViewRoot.class); // process view listeners result = processListenersAccountingForAdds(listeners, event, source, rootEventInfo); } } finally { listenerInvocationGuard.clearGuard(ctx, systemEventClass); } return result; }
facesContext, uiViewRoot.getViewListenersForEventClass(systemEventClass), systemEventClass, source, event);
private SystemEvent invokeViewListenersFor(FacesContext ctx, Class<? extends SystemEvent> systemEventClass, SystemEvent event, Object source) { SystemEvent result = event; if (listenerInvocationGuard.isGuardSet(ctx, systemEventClass)) { return result; } listenerInvocationGuard.setGuard(ctx, systemEventClass); UIViewRoot root = ctx.getViewRoot(); try { if (root != null) { List<SystemEventListener> listeners = root.getViewListenersForEventClass(systemEventClass); if (null == listeners) { return null; } EventInfo rootEventInfo = systemEventHelper.getEventInfo(systemEventClass, UIViewRoot.class); // process view listeners result = processListenersAccountingForAdds(listeners, event, source, rootEventInfo); } } finally { listenerInvocationGuard.clearGuard(ctx, systemEventClass); } return result; }
@Test public void testRegisterDestructionCallback() { UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot(); doCallRealMethod().when(viewRoot).subscribeToViewEvent(any(), any()); doCallRealMethod().when(viewRoot).unsubscribeFromViewEvent(any(), any()); when(viewRoot.getViewListenersForEventClass(any())).thenCallRealMethod(); this.viewScope.registerDestructionCallback(KEY, () -> { }); this.viewScope.remove(KEY); }
event = _traverseListenerListWithCopy(uiViewRoot.getViewListenersForEventClass(systemEventClass), systemEventClass, source, event);
private SystemEvent invokeViewListenersFor(FacesContext ctx, Class<? extends SystemEvent> systemEventClass, SystemEvent event, Object source) { SystemEvent result = event; if (listenerInvocationGuard.isGuardSet(ctx, systemEventClass)) { return result; } listenerInvocationGuard.setGuard(ctx, systemEventClass); UIViewRoot root = ctx.getViewRoot(); try { if (root != null) { List<SystemEventListener> listeners = root.getViewListenersForEventClass(systemEventClass); if (null == listeners) { return null; } EventInfo rootEventInfo = systemEventHelper.getEventInfo(systemEventClass, UIViewRoot.class); // process view listeners result = processListenersAccountingForAdds(listeners, event, source, rootEventInfo); } } finally { listenerInvocationGuard.clearGuard(ctx, systemEventClass); } return result; }
event = _traverseListenerListWithCopy(uiViewRoot.getViewListenersForEventClass(systemEventClass), systemEventClass, source, event);
event = _traverseListenerList(uiViewRoot.getViewListenersForEventClass(systemEventClass), systemEventClass, source, event);