În implementarea CDI (Contexts and Dependency Injection) 1.0, metoda getAnnotated pe o clasă care implementează interfaţa
javax.enterprise.inject.spi.InjectionPoint poate returna o instanţă javax.enterprise.inject.spi.Annotated.
În implementarea CDI 1.2, metoda getAnnotated trebuie să returneze o instanţă AnnotatedField sau
AnnotatedParameter, în funcţie de ce este punctul de injecţie, un câmp de injecţie sau un parametru pe un constructor sau o metodă.
Această regulă semnalează apeluri la constructorul Annotated dintr-o metodă getAnnotated care implementează interfaţa
javax.enterprise.inject.spi.InjectionPoint. De exemplu, apelul următor la new Annotated() este semnalat:
< code> clasa publica MyInjectionimplementeaza InjectionPoint
public Annotated getAnnotated()
return new Annotated () {
Set public < Annotation> getAnnotations() {
return null;
}
...
};
}
...
} < /code>
Scaner-ul aplicaţiei binare semnalează toate metodele getAnnotated pe clasele care implementează interfaţa javax.enterprise.inject.spi.InjectionPoint. Dacă metoda semnalată getAnnotated întoarce o instanţă
AnnotatedParameter sau AnnotatedField,
această regulă poate fi ignorată. Dacă metoda getAnnotated întoarce o instanţă Annotated, codul trebuie schimbat.
În implementarea CDI 1.2, aplicaţia care conţine clasa MyInjectionPoint nu porneşte şi aruncă următoarea excepţie:
org.jboss.weld.exceptions.IllegalArgumentException: WELD-001521: InjectionPoint.getAnnotated() must return either AnnotatedParameter or AnnotatedField
Pentru a rezolva această problemă, înlocuiţi apelul la new Annotated() cu new AnnotatedField() sau
new AnnotatedParameter(), în funcţie de ce este punctul de injecţie, un câmp de injecţie sau un parametru pe un constructor sau o metodă.
Pentru informaţii suplimentare despre implementarea Java EE 7 CDI 1.2, vedeţi Contexts and Dependency Injection 1.2 behavior changes.