in xbean-finder/src/main/java/org/apache/xbean/finder/AnnotationFinder.java [1175:1235]
protected void readClassDef(Class clazz) {
List<Info> infos = new LinkedList<Info>();
Package aPackage = clazz.getPackage();
if (aPackage != null) {
final PackageInfo info = new PackageInfo(aPackage);
for (AnnotationInfo annotation : info.getAnnotations()) {
List<Info> annotationInfos = initAnnotationInfos(annotation.getName());
if (!annotationInfos.contains(info)) {
annotationInfos.add(info);
}
}
}
ClassInfo classInfo = new ClassInfo(clazz);
infos.add(classInfo);
for (Method method : clazz.getDeclaredMethods()) {
MethodInfo methodInfo = new MethodInfo(classInfo, method);
if (linking) {
classInfo.methods.add(methodInfo);
}
infos.add(methodInfo);
for (Annotation[] annotations : method.getParameterAnnotations()) {
for (int i = 0; i < annotations.length; i++) {
infos.add(new ParameterInfo(methodInfo, i));
}
}
}
for (Constructor<?> constructor : clazz.getConstructors()) {
MethodInfo methodInfo = new MethodInfo(classInfo, constructor);
if (linking) {
classInfo.methods.add(methodInfo);
}
infos.add(methodInfo);
for (Annotation[] annotations : constructor.getParameterAnnotations()) {
for (int i = 0; i < annotations.length; i++) {
infos.add(new ParameterInfo(methodInfo, i));
}
}
}
for (Field field : clazz.getDeclaredFields()) {
final FieldInfo fieldInfo = new FieldInfo(classInfo, field);
if (linking) {
classInfo.fields.add(fieldInfo);
}
infos.add(fieldInfo);
}
for (Info info : infos) {
for (AnnotationInfo annotation : info.getAnnotations()) {
List<Info> annotationInfos = initAnnotationInfos(annotation.getName());
annotationInfos.add(info);
}
}
if (linking) {
classInfos.put(classInfo.name, classInfo);
}
}