package org.etk.java5.reflection.test;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.etk.reflect.api.TypeResolver;
import org.etk.reflect.core.TypeResolverImpl;
import org.etk.reflect.jlr.metadata.JLReflectionMetadata;
public class RuntimeUnitTestPlugin extends UnitTestPlugin {
@Override
protected void execute(ReflectUnitTest unitTest, Set<Class<?>> classes) throws Exception {
TypeResolver<java.lang.reflect.Type> typeResolver = TypeResolverImpl.create(new JLReflectionMetadata(), false);
Map<String, java.lang.reflect.Type> types = new HashMap<String, java.lang.reflect.Type>();
for(Class<?> clazz : classes) {
org.etk.java5.reflection.test.Type classTypeAnnotation = clazz.getAnnotation(org.etk.java5.reflection.test.Type.class);
if(classTypeAnnotation != null) {
types.put(classTypeAnnotation.value(), clazz);
}
for (java.lang.reflect.Method method : clazz.getDeclaredMethods()) {
org.etk.java5.reflection.test.Method methodTypeAnnotation = method.getAnnotation(org.etk.java5.reflection.test.Method.class);
if (methodTypeAnnotation != null) {
types.put(methodTypeAnnotation.value(), method.getGenericReturnType());
}
}
TypeDomain<java.lang.reflect.Type> domain = new TypeDomain<java.lang.reflect.Type>(typeResolver, types);
unitTest.run("org.etk.reflect.jlr.metadata", domain);
}
}
}