import org.scannotation.ClasspathUrlFinder;
import org.scannotation.archiveiterator.Filter;
import org.scannotation.archiveiterator.StreamIterator;
import org.scannotation.archiveiterator.StreamsIterator;
import java.lang.annotation.Annotation;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class ScannotationExample {
public static void main(String[] args) {
List<URL> urls = ClasspathUrlFinder.findClassPaths();
Filter filter = Filter.includeAll();
StreamsIterator streams = new StreamIterator(urls, filter);
try {
while (streams.next()) {
URL url = streams.getStreamUrl();
List<Class<?>> classes = new ArrayList<>();
AnnotationDB db = new AnnotationDB();
db.scanArchives(url);
for (String className : db.getClasses()) {
classes.add(Class.forName(className));
}
for (Class<?> clazz : classes) {
Annotation[] annotations = clazz.getAnnotations();
for (Annotation annotation : annotations) {
System.out.println(clazz.getName() + " has annotation: " + annotation);
}
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
System.out.println(clazz.getName() + " has method: " + method.getName());
}
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
System.out.println(clazz.getName() + " has field: " + field.getName());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}