Ошибка org.jboss.weld.exceptions.IllegalArgumentException: WELD-000814: аннотация не является классификатором - PullRequest
0 голосов
/ 21 ноября 2018

У меня проблема при попытке получить по методу 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-компонент, который действителен, но это решение выглядит подозрительно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...