Ellenőrizze a viselkedésváltozást az InjectionPoint getAnnotated módszerben

A Contexts and Dependency Injection (CDI) 1.0 megvalósításban a getAnnotated módszer, amely egy javax.enterprise.inject.spi.InjectionPoint felületet megvalósító osztályhoz van megadva, a javax.enterprise.inject.spi.Annotated egy példányát adja vissza. A CDI 1.2 megvalósításban a getAnnotated módszernek az AnnotatedField vagy az AnnotatedParameter egy példányát kell visszaadnia, attól függően, hogy a beszúrási pont egy beszúrt mező, vagy egy konstruktor vagy módszer egy paramétere.

Ez a szabály megjelöli az Annotated konstruktor meghívását egy getAnnotated módszeren belül egy olyan osztályhoz, amely megvalósítja a javax.enterprise.inject.spi.InjectionPoint felületet. Például a new Annotated() meghívása meg van jelölve:

< code> nyilvános osztály MyInjectionPoint megvalósítja a InjectionPoint {t

    Nyilvános Annotated getAnnotated() {
        Visszaküldött új annotációval () {

            Public Set < Annotation> getAnnotations() {
                return null;
            }
            ...
        };
    }
    ...
} /code>

A bináris alkalmazáselemző megjelöli a getAnnotated módszer összes meghívását a javax.enterprise.inject.spi.InjectionPoint felületet megvalósító osztályokon. Ha a megjelölt getAnnotated módszer az AnnotatedParameter vagy az AnnotatedField egy példányát adja vissza, akkor ez a szabály figyelmen kívül hagyható. Ha a getAnnotated módszer az Annotated egy példányát adja vissza, akkor a kódot módosítani kell.

A CDI 1.2 megvalósításban a MyInjectionPoint osztályt tartalmazó alkalmazás nem indul el, és a következő kivételt dobja:

org.jboss.weld.exceptions.IllegalArgumentException: WELD-001521: Az InjectionPoint.getAnnotated() módszernek egy AnnotatedParameter vagy AnnotatedField példányt kell visszaadnia

A probléma megoldása érdekében cserélje le a new Annotated() hívást egy new AnnotatedField() vagy new AnnotatedParameter() hívásra, attól függően, hogy a beszúrási pont egy beszúrt mező, vagy egy konstruktor vagy módszer paramétere.

A Java EE 7 CDI 1.2 megvalósítással kapcsolatos további információk: Contexts and Dependency Injection 1.2 viselkedésváltozásai.