protected static <E> EventHandler<E> newEventHandler( ComponentContext c, int id, Object[] params) { final EventHandler<E> eventHandler = c.newEventHandler(id, params); if (c.getComponentTree() != null) { c.getComponentTree().recordEventHandler(c.getComponentScope(), eventHandler); } return eventHandler; }
protected static <E> EventHandler<E> newEventHandler( Component c, int id, Object[] params) { final EventHandler<E> eventHandler = new EventHandler<>(c, id, params); if (c.getScopedContext() != null && c.getScopedContext().getComponentTree() != null) { c.getScopedContext().getComponentTree().recordEventHandler(c, eventHandler); } return eventHandler; }
@Test public void testNoDuplicateWhenEventHandlerIsReplacedInEventHandlerWrapper() { Component component = mock(Component.class); ComponentTree componentTree = ComponentTree.create(mContext, component).build(); EventHandlersController eventHandlersController = componentTree.getEventHandlersController(); EventHandler eventHandler1 = mContext.newEventHandler(1); when(component.getGlobalKey()).thenReturn("component1"); componentTree.recordEventHandler(component, eventHandler1); eventHandlersController.bindEventHandlers(mContext, component, component.getGlobalKey()); eventHandlersController.clearUnusedEventHandlers(); assertThat(eventHandlersController.getEventHandlers().size()).isEqualTo(1); EventHandlersController.EventHandlersWrapper eventHandlersWrapper = eventHandlersController.getEventHandlers().values().iterator().next(); assertThat(eventHandlersWrapper.getEventHandlers().size()).isEqualTo(1); EventHandler eventHandler2 = mContext.newEventHandler(1); componentTree.recordEventHandler(component, eventHandler2); eventHandlersController.bindEventHandlers(mContext, component, component.getGlobalKey()); eventHandlersController.clearUnusedEventHandlers(); assertThat(eventHandlersController.getEventHandlers().size()).isEqualTo(1); eventHandlersWrapper = eventHandlersController.getEventHandlers().values().iterator().next(); assertThat(eventHandlersWrapper.getEventHandlers().size()).isEqualTo(1); }
@Test public void testClearUnusedEntries() { Component component = mock(Component.class); ComponentTree componentTree = ComponentTree.create(mContext, component).build(); EventHandlersController eventHandlersController = componentTree.getEventHandlersController(); EventHandler eventHandler1 = mContext.newEventHandler(1); when(component.getGlobalKey()).thenReturn("component1"); componentTree.recordEventHandler(component, eventHandler1); eventHandlersController.bindEventHandlers(mContext, component, component.getGlobalKey()); eventHandlersController.clearUnusedEventHandlers(); assertThat(eventHandlersController.getEventHandlers().size()).isEqualTo(1); when(component.getGlobalKey()).thenReturn("component2"); componentTree.setRoot(component); componentTree.recordEventHandler(component, eventHandler1); eventHandlersController.bindEventHandlers(mContext, component, component.getGlobalKey()); eventHandlersController.clearUnusedEventHandlers(); assertThat(eventHandlersController.getEventHandlers().size()).isEqualTo(1); } }