Reflections метод getTypesAnnotatedWith() не возвращает аннотированное значение класса
Я создал пользовательскую аннотацию, как показано ниже:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Connection {
String protocol();
}
и у меня есть пара классов с этой аннотацией, как показано ниже:
@Connection(protocol = "p1")
public class Connection1 {
public boolean isValidConnection(ConnectionVo connection) {
System.out.print("p1");
}
}
@Connection(protocol = "p2")
public class Connection2 {
public boolean isValidConnection(ConnectionVo connection) {
System.out.print("p2");
}
}
У меня есть метод, который выбирает метод подключения 1 или подключения 2 isValidConnection() с использованием отражения, как показано ниже:
public void getConnectionProtocol(ConnectionVo connectionVo) throws Exception {
Reflections reflections = new Reflections(Constants.CONNECTION_VALIDATOR_PKG);//package with Connection1 and Connection2 classes
Set<Class<?>> connections = reflections.getTypesAnnotatedWith(Connection.class);
for (Class<?> connection : connections) {
Connection request = connection.getAnnotation(Connection.class);
System.out.print(request.protocol() == connectionVo.protocol);//connectionVo has field protocol with calues p1,p2 etc.
}
}
Сейчас я пытаюсь написать модульный тест для того же. Я сталкиваюсь с проблемой, когда reflections.getTypesAnnotatedWith(Connection.class) просто возвращает имена классов с аннотацией @Connection, то есть Connection 1 и Connection2. Как я могу получить значение, которое у него есть, т.е. p1 и p2.