В реализации 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():
|
Сканер двоичного кода приложения отмечает все методы
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: изменение принципов работы.