Проверить наличие изменений в алгоритме работы метода InjectionPoint getAnnotated

В реализации Contexts and Dependency Injection (CDI) 1.0 метод getAnnotated в классе, реализующем интерфейс javax.enterprise.inject.spi.InjectionPoint, может возвращать экземпляр javax.enterprise.inject.spi.Annotated. В реализации CDI 1.2 метод getAnnotated должен возвращать экземпляр AnnotatedField или AnnotatedParameter в зависимости от типа точки внедрения: внедряемое поле или параметр в конструкторе или методе.

Это правило отмечает вызовы конструктора Annotated в методе getAnnotated класса, реализующего интерфейс javax.enterprise.inject.spi.InjectionPoint. Например, будет отмечен следующий вызов new Annotated():

В общедоступном классе MyInjectionPoint < code> реализует InjectionPoint {

    public Annotated getAnnotated() {
        возвратить новую аннотацию () {

            public Set < Annotation> getAnnotations() {
                return null;
            }
            ...
        };
    *
    ...
} < /code>

Сканер двоичного кода приложения отмечает все методы getAnnotated в классах, реализующих интерфейс javax.enterprise.inject.spi.InjectionPoint. Если отмеченный метод getAnnotated возвращает экземпляр AnnotatedParameter или AnnotatedField, то это правило можно проигнорировать. Если метод getAnnotated возвращает экземпляр Annotated, то необходимо изменить код.

В реализации CDI 1.2 приложение, содержащее класс MyInjectionPoint, не будет запущено и сгенерирует следующую исключительную ситуацию:

org.jboss.weld.exceptions.IllegalArgumentException: WELD-001521: InjectionPoint.getAnnotated() должен возвращать AnnotatedParameter или AnnotatedField

Для исправления ошибки замените вызов new Annotated() на new AnnotatedField() или new AnnotatedParameter() в зависимости от того, что является точкой внедрения: внедряемое поле или параметр в конструкторе или методе.

Для получения дополнительной информации о реализации CDI 1.2 в Java EE 7 обратитесь к документу Contexts and Dependency Injection 1.2: изменение принципов работы.