package org.kevoree.core;
import java.lang.reflect.Method;
import java.util.HashMap;
/**
* Created with IntelliJ IDEA.
* User: duke
* Date: 28/03/13
* Time: 08:12
*/
public class MethodAnnotationResolver {
private Class base = null;
private HashMap<Class, Method> methods = new HashMap<Class, Method>();
public MethodAnnotationResolver(Class _base) {
base = _base;
}
public Method resolve(Class annotationClass) {
return resolve(annotationClass, base);
}
private Method resolve(Class annotationClass, Class baseClazz) {
Method met = methods.get(annotationClass);
if (met == null) {
for (Method metLoop : baseClazz.getDeclaredMethods()) {
if (metLoop.getAnnotation(annotationClass) != null) {
met = metLoop;
methods.put(annotationClass, met);
return met;
}
}
}
if(baseClazz.getSuperclass() != null){
met = resolve(annotationClass, baseClazz.getSuperclass());
if (met != null) {
return met;
}
}
for (Class it : baseClazz.getInterfaces()) {
met = resolve(annotationClass, it);
if (met != null) {
return met;
}
}
return met;
}
}