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;
}
}