AnnotatedClass ac = null;
Annotation[] annotations = clazz.getDeclaredAnnotations();
if (factory.isClassUseful(clazz, annotations)) {
ac = new AnnotatedClass();
ac.setQualifiedName(clazz.getName());
AnnotationsPlugin pl = null;
Annotation[] declaredAnnotations = null;
for (Annotation a : annotations) {
pl = factory.getPluginForAnnotation(a.annotationType());
if (pl != null) {
ac.getAnnotations().add(pl.parse(a));
}
}
Field[] fields = clazz.getDeclaredFields();
for (Field f : fields) {
declaredAnnotations = f.getDeclaredAnnotations();
if (factory.isFieldUseful(f, declaredAnnotations)) {
AnnotatedField af = new AnnotatedField();
af.setName(f.getName());
af.setType(f.getType().getName());
for (Annotation a : declaredAnnotations) {
pl = factory.getPluginForAnnotation(a.annotationType());
if (pl != null) {
af.getAnnotations().add(pl.parse(a));
}
}
ac.getFields().add(af);
}
}
Method[] methods = clazz.getDeclaredMethods();
for (Method m : methods) {
declaredAnnotations = m.getDeclaredAnnotations();
if (factory.isMethodUseful(m, declaredAnnotations)) {
AnnotatedMethod am = new AnnotatedMethod();
am.setName(m.getName());
am.setReturnType(m.getReturnType().getName());
for (Annotation a : declaredAnnotations) {
pl = factory.getPluginForAnnotation(a.annotationType());
if (pl != null) {
am.getAnnotations().add(pl.parse(a));
}
}
ac.getMethods().add(am);
}
}