En la implementación de CDI (Contexts and Dependency Injection) 1.0, el método
getAnnotated en una clase que implementa la interfaz
javax.enterprise.inject.spi.InjectionPoint puede devolver una instancia de
javax.enterprise.inject.spi.Annotated.
En la implementación de CDI 1.2, el método getAnnotated debe devolver una instancia de
AnnotatedField o AnnotatedParameter, en función de si el punto de inyección es
un campo inyectado o un parámetro en un constructor o método.
Esta regla señala las llamadas al constructor Annotated en un método
getAnnotated de una clase que implementa la interfaz
javax.enterprise.inject.spi.InjectionPoint. Por ejemplo, se señala la siguiente llamada a
new Annotated():
< code> public class MyInjectionPoint implementa InjectionPoint {
public Annotated getAnnotated() {
return new Annotated () {
public Set < Annotation> getAnnotations() {
return null;
}
...
};
}
...
} < /código>
El explorador de aplicaciones binarias marca todos los métodos getAnnotated en las clases que
implementan la interfaz javax.enterprise.inject.spi.InjectionPoint. Si el método getAnnotated
marcado devuelve una instancia de AnnotatedParameter o AnnotatedField, esta regla se puede
ignorar. Si el método getAnnotated devuelve una instancia de Annotated, el código se debe cambiar.
En la implementación de CDI 1.2, la aplicación que contiene la clase MyInjectionPoint no se inicia
y emite la siguiente excepción:
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001521: InjectionPoint.getAnnotated() debe devolver AnnotatedParameter o AnnotatedField
Para resolver este problema, sustituya la llamada a new Annotated() con
new AnnotatedField() o new AnnotatedParameter(), en función de si
el punto de inyección es un campo inyectado o un parámetro en un constructor o método.
Para obtener más información sobre la implementación de EE 7 CDI 1.2, consulte Cambios de comportamiento de Contexts and Dependency Injection 1.2.