/** * @return all the @Listeners annotations found in the current class and its * superclasses. */ public static ListenerHolder findAllListeners(Class<?> cls, IAnnotationFinder finder) { ListenerHolder result = new ListenerHolder(); result.listenerClasses = Lists.newArrayList(); while (cls != Object.class) { IListenersAnnotation l = finder.findAnnotation(cls, IListenersAnnotation.class); if (l != null) { Class<? extends ITestNGListener>[] classes = l.getValue(); for (Class<? extends ITestNGListener> c : classes) { result.listenerClasses.add(c); if (ITestNGListenerFactory.class.isAssignableFrom(c)) { if (result.listenerFactoryClass == null) { result.listenerFactoryClass = (Class<? extends ITestNGListenerFactory>) c; } else { throw new TestNGException("Found more than one class implementing " + "ITestNGListenerFactory:" + c + " and " + result.listenerFactoryClass); } } } } cls = cls.getSuperclass(); } return result; }
/** @return all the @Listeners annotations found in the current class and its superclasses. */ @SuppressWarnings("unchecked") public static ListenerHolder findAllListeners(Class<?> cls, IAnnotationFinder finder) { ListenerHolder result = new ListenerHolder(); result.listenerClasses = Lists.newArrayList(); while (cls != Object.class) { IListenersAnnotation l = finder.findAnnotation(cls, IListenersAnnotation.class); if (l != null) { Class<? extends ITestNGListener>[] classes = l.getValue(); for (Class<? extends ITestNGListener> c : classes) { result.listenerClasses.add(c); if (ITestNGListenerFactory.class.isAssignableFrom(c)) { if (result.listenerFactoryClass == null) { result.listenerFactoryClass = (Class<? extends ITestNGListenerFactory>) c; } else { throw new TestNGException( "Found more than one class implementing " + "ITestNGListenerFactory:" + c + " and " + result.listenerFactoryClass); } } } } cls = cls.getSuperclass(); } return result; }