/** * Register a new Event type to the register. * * @param eventClass * New event type to handle * * @throws NoSuchEventException if no event can be found of type eventClass. **/ @Override public void registerEvent(Class<? extends EventObject> eventClass) throws NoSuchEventException { EventConfig eventConfig = eventRegister.getEventByClass(eventClass); if (!eventMap.containsKey(eventClass)) { eventMap.put(eventClass, eventConfig.getListener()); channelRegister.registerEventHandler(this, eventClass); } }
@Override public void fire(EventObject event) throws IllegalArgumentException { EventConfig config = eventRegister.getEventByClass(event.getClass()); if(config == null) { throw new IllegalArgumentException(event.getClass() + " is not a registerd event."); } if(config.getEventQueue() != null) { config.getEventQueue().enqueue(event); } else { eventQueue.enqueue(event); } }
/** * Invokes event on all listeners. * * If blocked is true exceptions are thrown else exceptions are logged and suppressed. * * @param event Event to invoke. * @param listeners Collection if listener to invoke the event method on. * @param throwException Exception handling type, true throws exception and false suppresses exceptions. **/ @Override public void invokeEventMethod(EventObject event, Collection<EventListenerRegistration> listeners, boolean throwException) { if (listeners != null && listeners.size() > 0) { EventConfig eventConfig = eventRegister.getEventByClass(event.getClass()); for (EventListenerRegistration listener : listeners) { Method method = eventConfig.getEventMethod(event, listener.getListener()); invokeEvent(event, throwException, method, listener); } } }
/** * Register a new Event type to the register. * * @param eventClass * New event type to handle * * @throws NoSuchEventException if no event can be found of type eventClass. **/ @Override public void registerEvent(Class<? extends EventObject> eventClass) throws NoSuchEventException { EventConfig eventConfig = eventRegister.getEventByClass(eventClass); if (!eventMap.containsKey(eventClass)) { if(eventConfig.getListener() != null) { eventMap.put(eventClass, eventConfig.getListener()); } channelRegister.registerEventHandler(this, eventClass); } }
/** * Invokes event on all listeners. * * If blocked is true exceptions are thrown else exceptions are logged and suppressed. * * @param event Event to invoke. * @param listeners Collection if listener to invoke the event method on. * @param throwException Exception handling type, true throws exception and false suppresses exceptions. **/ @Override public void invokeEventMethod(EventObject event, Collection<EventListenerRegistration> listeners, boolean throwException) { if (listeners != null && listeners.size() > 0) { EventConfig eventConfig = eventRegister.getEventByClass(event.getClass()); for (EventListenerRegistration listener : listeners) { Method method = eventConfig.getEventMethod(event, listener.getListener()); invokeEvent(event, throwException, method, listener); } } }
/** * Refresh listeners (listenersByEvent). Will find listeners that listens on * eventClass but is currently not registered as listener on that class, due * to the fact that the listeners has been registered before the eventClass. * * @param eventClass Event class. **/ @Override public void refreshListeners(Class<? extends EventObject> eventClass) { EventConfig eventConfig = getEventRegister().getEventByClass(eventClass); for (Map<Object, EventListenerRegistration> listenerMap : listenersByEvent.values()) { for (Object listener : listenerMap.keySet()) { if (InterfaceUtils.implementsInterface(listener.getClass(), eventConfig.getListener())) { addListener(listener, eventClass, channel, null); } } } }
/** * Refresh listeners (listenersByEvent). Will find listeners that listens on * eventClass but is currently not registered as listener on that class, due * to the fact that the listeners has been registered before the eventClass. * * @param eventClass Event class. **/ @Override public void refreshListeners(Class<? extends EventObject> eventClass) { EventConfig eventConfig = getEventRegister().getEventByClass(eventClass); for (Map<Object, EventListenerRegistration> listenerMap : listenersByEvent.values()) { for (Object listener : listenerMap.keySet()) { if (InterfaceUtils.implementsInterface(listener, eventConfig.getListener())) { addListener(listener, eventClass, channel, null); } } } }