/** * Sets an event listener to be called when events occur, so they can be reported by the app as, * for example, Google Analytics events. If not set or set to null, no events will be reported. * * @param eventListener The event listener. * @throws IllegalArgumentException if the eventListener is an inner or anonymous class */ public static void setEventListener(EventListener eventListener) { if (eventListener != null && eventListener.getClass().getEnclosingClass() != null && !Modifier.isStatic(eventListener.getClass().getModifiers())) { throw new IllegalArgumentException( "The event listener cannot be an inner or anonymous class, because it will need to be serialized. Change it to a class of its own, or make it a static inner class."); } else { CustomActivityOnCrash.eventListener = eventListener; } }
public synchronized void registerListener(EventListener listener) { Class<? extends EventListener> listenerClass = listener.getClass(); for (Method method : listenerClass.getMethods()) { if (!method.isAnnotationPresent(EventHandler.class)) continue; if (method.getParameterTypes().length != 1) throw new IllegalArgumentException( "Method " + method.toString() + " in class " + method.getDeclaringClass().getName() + " has incorrect amount of parameters"); Class<? extends Event> eventClass = method.getParameterTypes()[0].asSubclass(Event.class); boolean senderExists = false; for (EventSender sender : eventSenders) { if (eventClass.isAssignableFrom(sender.getListenerEventClass())) sender.addHandler(listener, method); if (eventClass == sender.getListenerEventClass()) senderExists = true; } if (!senderExists) { EventSender sender = new EventSender(eventClass); eventSenders.add(sender); sender.addHandler(listener, method); } } }
private synchronized Cluster clusterFor(EventListener eventListener) { Cluster cluster = clusterSelector.selectCluster(eventListener); if (cluster == null) { Class listenerType = eventListener.getClass(); if (eventListener instanceof EventListenerProxy) { listenerType = ((EventListenerProxy) eventListener).getTargetType(); } throw new EventListenerSubscriptionFailedException( format( "Unable to subscribe [%s] to the Event Bus. There is no suitable cluster for it. " + "Make sure the ClusterSelector is configured properly", listenerType.getName())); } if (clusters.add(cluster)) { terminal.onClusterCreated(cluster); } return cluster; }