Nell'implementazione di CDI (Contexts and Dependency Injection) 1.0, il metodo getAnnotated in una classe che implementa l'interfaccia javax.enterprise.inject.spi.InjectionPoint può restituire un'istanza di javax.enterprise.inject.spi.Annotated.
In CDI 1.2, il metodo getAnnotated deve restituire un'istanza di AnnotatedField o AnnotatedParameter, a seconda che il punto di inserimento sia un parametro o un campo inserito in un costruttore o un metodo.
Questa regola contrassegna il costruttore Annotated all'interno di un metodo getAnnotated in una classe che implementa l'interfaccia javax.enterprise.inject.spi.InjectionPoint. Ad esempio, la seguente chiamata a new Annotated() viene contrassegnata:
< code> public class MyInjectionPoint implementa InjectionPoint {
public Annotated getAnnotated() {
restituisci nuovo Annotato () {
public Set < Annotazione> getAnnotations() {
return null;
}
...
};
}
...
} < /codice>
Lo scanner applicazione binaria contrassegna tutti i metodi getAnnotated nelle classi che implementano l'interfaccia javax.enterprise.inject.spi.InjectionPoint. Se il metodo getAnnotated contrassegnato restituisce un'istanza di AnnotatedParameter o di AnnotatedField, è possibile ignorare questa regola. Se il metodo getAnnotated restituisce un'istanza di Annotated, è necessario cambiare il codice.
Nell'implementazione di CDI 1.2, l'applicazione che contiene la classe MyInjectionPoint non parte e genera la seguente eccezione:
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001521: InjectionPoint.getAnnotated() must return either AnnotatedParameter or AnnotatedField
Per risolvere questo problema, sostituire la chiamata a new Annotated() cone new AnnotatedField() o new AnnotatedParameter(), a seconda che il punto di inserimento sia un parametro o un campo inserito in un costruttore o un metodo.
Per ulteriori informazioni sull'implementazione di Java EE 7 CDI 1.2, consultare Contexts and Dependency Injection 1.2 behavior changes.