private boolean registerEventListenerByAnnotation(Object listener, Object sourceObject, List<EventFilter<? extends EventObject>> filters) { boolean listenerAdded = false; Set<Class<? extends Annotation>> registeredAnnotations = eventRegister.getRegisteredEventAnnotations(); Map<Class<? extends Annotation>, Set<Method>> methodAnnotations = AnnotationsUtils.findAnnotatedMethods(listener.getClass(), registeredAnnotations); for (Map.Entry<Class<? extends Annotation>, Set<Method>> annotationEntry : methodAnnotations.entrySet()){ Set<Method> methods = annotationEntry.getValue(); Class<? extends Annotation> annotation = annotationEntry.getKey(); if(methods.size() > 1) { throw new IllegalStateException("More than one method found annotated with " + annotation + " in class " + listener.getClass()); } addAnnotatedListenerMethod(listener, sourceObject, annotation, methods.iterator().next(), filters); listenerAdded = true; } return listenerAdded; }
Set<Class<? extends Annotation>> registeredAnnotations = eventRegister.getRegisteredEventAnnotations(); Map<Class<? extends Annotation>, Method> methodAnnotations = AnnotationsUtils.findAnnotatedMethods(listener.getClass(), registeredAnnotations); for (Map.Entry<Class<? extends Annotation>, Method> annotation : methodAnnotations.entrySet()){