| package junitparams.converters; |
| |
| import java.lang.annotation.Annotation; |
| |
| public class ParamAnnotation { |
| |
| public static boolean matches(Annotation annotation) { |
| return getParam(annotation) != null; |
| } |
| |
| public static Object convert(Annotation annotation, Object param) throws ConversionFailedException { |
| return converter(annotation).convert(param); |
| } |
| |
| private static Param getParam(Annotation annotation) { |
| if (annotation.annotationType().isAssignableFrom(Param.class)) { |
| return (Param) annotation; |
| } |
| return annotation.annotationType().getAnnotation(Param.class); |
| } |
| |
| private static Converter converter(Annotation annotation) { |
| Converter converter = null; |
| try { |
| converter = getParam(annotation).converter().newInstance(); |
| } catch (Exception e) { |
| throw new RuntimeException("Your Converter class must have a public no-arg constructor!", e); |
| } |
| converter.initialize(annotation); |
| return converter; |
| } |
| } |