package org.esmerilprogramming.overtown.server; import com.thoughtworks.paranamer.BytecodeReadingParanamer; import com.thoughtworks.paranamer.CachingParanamer; import com.thoughtworks.paranamer.Paranamer; import io.undertow.Undertow; import org.esmerilprogramming.overtown.annotation.Converter; import org.esmerilprogramming.overtown.annotation.path.Get; import org.esmerilprogramming.overtown.annotation.path.Post; import org.esmerilprogramming.overtown.http.converter.GenericConverter; import org.junit.Test; import org.reflections.ReflectionUtils; import java.lang.annotation.Annotation; import java.lang.reflect.Method; public class MethodLookupTest { public MethodLookupTest() { } class StringLowerConverter extends GenericConverter<String>{ @Override public String convert(String value) { return value.toLowerCase(); } } public static void main(String ... a){ Undertow.Builder builder = Undertow.builder(); } public void teste( @Converter(StringLowerConverter.class) String name , String nah ){ } @Post @Get public void lol(){ } @Test public void should_get_all_get_and_post(){ Class<MethodLookupTest> clazz = MethodLookupTest.class; System.out.println( ReflectionUtils.getAllMethods(clazz, ReflectionUtils.withAnnotation(Get.class)) ); } @Test public void t(){ Class<MethodLookupTest> clazz = MethodLookupTest.class; for(final Method method: clazz.getMethods()) { if( "teste".equalsIgnoreCase( method.getName() )){ Paranamer paranamer = new CachingParanamer(new BytecodeReadingParanamer()); final String[] parameterNames = paranamer.lookupParameterNames(method); Class<?>[] parameterTypes = method.getParameterTypes(); Annotation[][] parameterAnnotations = method.getParameterAnnotations(); for( int i = 0 ; i < parameterNames.length ; i++){ String parameterName = parameterNames[i]; Annotation[] ann = parameterAnnotations[i]; for (Annotation annotation : ann) { System.out.println(parameterName + ": " + annotation.toString() ); } } for (Annotation[] ann : parameterAnnotations ) { } } } } }