У меня проблема при попытке получить по методу CDI.current().select(Logic.class, new LogicQualifierImpl(ExViewEndpoint.class, String type))
.Logic
- это интерфейс для всех моих классов действий.ExViewEndpoint extends ViewEndpoint
- это класс представления, который может запускать это действие, если такого соединения нет, должен быть найден ViewEndpoint
, который может разрешить подготовленный тип сообщения.
Моя аннотация:
@Target({TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface LogicQualifier {
String[] types() default {};
@Nonbindings Class clazz();
}
Мой LogicQualifierImpl extends AnnotationLiteral<LogicQualifier> implements LogicQualifier {}
также.
И когда у меня нет @Nonbindings
до types
и clazz
, я не могу развернуть свою войну.
С @Nonbindings
моимВойна развернута, и я могу получить возможные bean-компоненты, но она возвращает ВСЕ bean-компоненты, где установлено @LogicQualifier
, а не только то, что types
содержит String type
.
И я могу получить эти установленные значения только:
private LogicQualifier logicQualifier(SocketLogic logic) {
return logic.getClass().getAnnotation(LogicQualifier.class);
}
И проверить это самостоятельно через поток, чтобы я мог найти точный один bean-компонент, который действителен, но это решение выглядит подозрительно.