В реализации 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: изменение принципов работы.