/** * New abstract route planner. */ protected AbstractRoutePlanner() { history = newArrayList(); roadModel = Optional.absent(); pdpModel = Optional.absent(); vehicle = Optional.absent(); eventDispatcher = new EventDispatcher(RoutePlannerEventType.CHANGE); }
void addDevice(CommDevice device, CommUser user) { usersDevices.put(user, device); usersHasChanged = true; if (eventDispatcher.hasListenerFor(EventTypes.ADD_COMM_USER)) { eventDispatcher.dispatchEvent(new CommModelEvent( EventTypes.ADD_COMM_USER, this, device, user)); } }
/** * Provides access to the {@link Event} API, allows adding and removing * {@link Listener}s that are notified when {@link ScenarioController} * dispatches {@link Event}s. * @return The event API of the scenario controller. */ public EventAPI getEventAPI() { return disp.getPublicEventAPI(); }
@Override public void receiveParcel(Auctioneer<T> auctioneer, Parcel p, long auctionStartTime) { LOGGER.info("{} receiveParcel {}", this, p); assignedParcels.add(p); eventDispatcher .dispatchEvent(new Event(CommunicatorEventType.CHANGE, this)); }
@Before public void setup() { l1 = new ListenerEventHistory(); l2 = new ListenerEventHistory(); l3 = new ListenerEventHistory(); dispatcher = new EventDispatcher(EVENT1, EVENT2, EVENT3); api = dispatcher.getPublicEventAPI(); }
@Test public void dispatchEvent() { assertFalse(dispatcher.hasListenerFor(EVENT1)); assertFalse(dispatcher.hasListenerFor(EVENT2)); assertFalse(dispatcher.hasListenerFor(EVENT3)); assertFalse(dispatcher.hasListenerFor(OTHER_EVENT1)); dispatcher.addListener(l1, EVENT1); assertTrue(dispatcher.hasListenerFor(EVENT1)); assertFalse(dispatcher.hasListenerFor(EVENT2)); assertFalse(dispatcher.hasListenerFor(EVENT3)); assertFalse(dispatcher.hasListenerFor(OTHER_EVENT1)); assertFalse(dispatcher.hasListenerFor(EVENT3)); dispatcher.addListener(l3, EVENT1, EVENT2, EVENT3); assertTrue(dispatcher.hasListenerFor(EVENT1)); assertFalse(dispatcher.hasListenerFor(OTHER_EVENT1)); dispatcher.dispatchEvent(new Event(EVENT2)); assertEquals(asList(), l1.getEventTypeHistory()); assertEquals(asList(EVENT2), l2.getEventTypeHistory()); assertEquals(asList(EVENT2), l3.getEventTypeHistory()); dispatcher.dispatchEvent(new Event(EVENT3)); assertEquals(asList(), l1.getEventTypeHistory()); assertEquals(asList(EVENT2), l2.getEventTypeHistory()); assertEquals(asList(EVENT2, EVENT3), l3.getEventTypeHistory()); dispatcher.dispatchEvent(new Event(EVENT1));
@Test public void removeFail() { final EventDispatcher disp = new EventDispatcher(EventTypes.values()); boolean fail = false; try { disp.removeListener(l1, new LinkedHashSet<Enum<?>>(null)); } catch (final NullPointerException e) { fail = true; } assertThat(fail).isTrue(); } }
@Test public void removeListener() { dispatcher.addListener(l1, EVENT1); dispatcher.addListener(l2, EVENT3, EVENT2); dispatcher.addListener(l3, EVENT1, EVENT3); assertTrue(dispatcher.containsListener(l1, EVENT1)); assertFalse(dispatcher.containsListener(l1, EVENT2)); assertFalse(dispatcher.containsListener(l1, EVENT3)); assertFalse(dispatcher.containsListener(l1, OTHER_EVENT1)); assertFalse(dispatcher.containsListener(l2, EVENT1)); assertTrue(dispatcher.containsListener(l2, EVENT2)); assertTrue(dispatcher.containsListener(l2, EVENT3)); assertFalse(dispatcher.containsListener(l2, OTHER_EVENT1)); assertTrue(dispatcher.containsListener(l3, EVENT1)); assertFalse(dispatcher.containsListener(l3, EVENT2)); assertTrue(dispatcher.containsListener(l3, EVENT3)); assertFalse(dispatcher.containsListener(l3, OTHER_EVENT1)); dispatcher.removeListener(l2, EVENT2, EVENT3); assertFalse(dispatcher.containsListener(l2, EVENT1)); assertFalse(dispatcher.containsListener(l2, EVENT2)); assertFalse(dispatcher.containsListener(l2, EVENT3)); assertFalse(dispatcher.containsListener(l2, OTHER_EVENT1)); }
@Override public void addListener(Listener listener, Iterable<? extends Enum<?>> eventTypes) { ref.addListener(listener, eventTypes); }
@Test public void addListenerToAll() { dispatcher.addListener(l1, new Enum<?>[] {}); assertTrue(dispatcher.containsListener(l1, EVENT1)); assertTrue(dispatcher.containsListener(l1, EVENT2)); assertTrue(dispatcher.containsListener(l1, EVENT3)); }
for (final Enum<?> eventType : keys) { if (listeners.containsEntry(eventType, listener)) { removeListener(listener, eventType); checkNotNull(eventType, "event type to remove can not be null"); checkArgument( containsListener(listener, eventType), "The listener %s for the type %s cannot be removed because it " + "does not exist.",
@Override public void removeListener(Listener listener, Iterable<? extends Enum<?>> eventTypes) { ref.removeListener(listener, eventTypes); }
void update() { if (dispatching.get() == 0) { if (!toRemove.isEmpty()) { for (final Entry<Enum<?>, Listener> entry : toRemove.entries()) { removeListener(entry.getValue(), entry.getKey()); } toRemove.clear(); } if (!toAdd.isEmpty()) { for (final Entry<Enum<?>, Listener> entry : toAdd.entries()) { add(entry.getValue(), ImmutableSet.<Enum<?>>of(entry.getKey()), false); } toAdd.clear(); } } }
@Override public boolean containsListener(Listener l, Enum<?> eventType) { return ref.containsListener(l, eventType); } }
/** * Notifies this blackboard user of a change in the environment. */ public void update() { eventDispatcher .dispatchEvent(new Event(CommunicatorEventType.CHANGE, this)); }
@Test public void removeTest() { final EventDispatcher disp = new EventDispatcher(EventTypes.values()); final EventAPI eventAPI = disp.getPublicEventAPI(); assertTrue(disp.listeners.isEmpty()); eventAPI.addListener(l1, EVENT1, EVENT2, EVENT3); assertEquals(3, disp.listeners.size()); assertTrue(disp.listeners.containsEntry(EVENT1, l1)); assertTrue(eventAPI.containsListener(l1, EVENT1)); assertTrue(eventAPI.containsListener(l1, EVENT2)); assertTrue(eventAPI.containsListener(l1, EVENT3)); eventAPI.removeListener(l1); assertTrue(disp.listeners.isEmpty()); assertFalse(eventAPI.containsListener(l1, EVENT1)); assertFalse(eventAPI.containsListener(l1, EVENT2)); assertFalse(eventAPI.containsListener(l1, EVENT3)); }
@Test public void removeListenerForAllTypes() { dispatcher.addListener(l1, EVENT1); dispatcher.addListener(l2, EVENT1, EVENT2); api.addListener(l3, EVENT1, EVENT2, EVENT3); assertTrue(dispatcher.containsListener(l2, EVENT1)); assertTrue(dispatcher.containsListener(l2, EVENT2)); assertFalse(dispatcher.containsListener(l2, EVENT3)); assertFalse(dispatcher.containsListener(l2, OTHER_EVENT1)); assertTrue(dispatcher.containsListener(l3, EVENT1)); assertTrue(dispatcher.containsListener(l3, EVENT2)); assertTrue(dispatcher.containsListener(l3, EVENT3)); assertFalse(dispatcher.containsListener(l3, OTHER_EVENT1)); assertFalse(dispatcher.containsListener(l3, EVENT1)); assertFalse(dispatcher.containsListener(l3, EVENT2)); assertFalse(dispatcher.containsListener(l3, EVENT3)); assertFalse(dispatcher.containsListener(l3, OTHER_EVENT1)); dispatcher.removeListener(l1); assertFalse(dispatcher.containsListener(l1, EVENT1)); assertFalse(dispatcher.containsListener(l1, EVENT2)); assertFalse(dispatcher.containsListener(l1, EVENT3)); assertFalse(dispatcher.containsListener(l1, OTHER_EVENT1)); dispatcher.removeListener(l2); assertFalse(dispatcher.containsListener(l2, EVENT1)); assertFalse(dispatcher.containsListener(l2, EVENT2));
@Override public void addListener(Listener l, Enum<?>... eventTypes) { ref.addListener(l, eventTypes); }
for (final Enum<?> eventType : keys) { if (listeners.containsEntry(eventType, listener)) { removeListener(listener, eventType); checkNotNull(eventType, "event type to remove can not be null"); checkArgument( containsListener(listener, eventType), "The listener %s for the type %s cannot be removed because it " + "does not exist.",
@Override public void removeListener(Listener l, Enum<?>... eventTypes) { ref.removeListener(l, eventTypes); }