Sprawdź, czy nie zmieniło się zachowanie w metodzie getAnnotated interfejsu InjectionPoint

W implementacji Contexts and Dependency Injection (CDI) 1.0 metoda getAnnotated klasy implementującej interfejs javax.enterprise.inject.spi.InjectionPoint może zwracać instancję klasy javax.enterprise.inject.spi.Annotated. W implementacji CDI 1.2 metoda getAnnotated musi zwracać instancję klasy AnnotatedField lub AnnotatedParameter w zależności od tego, czy punktem wstrzykiwania jest wstawione pole, czy parametr w konstruktorze lub metodzie.

Ta reguła powoduje oznaczenie wywołań konstruktora Annotated w metodzie getAnnotated klasy, która implementuje interfejs javax.enterprise.inject.spi.InjectionPoint. Na przykład, oznaczone zostaje następujące wywołanie metody new Annotated():

< code> public class MyInjectionPoint implements InjectionPoint {

    public Annotated getAnnotated() {
        zwróć nową adnotację () {

            public Set < Adnotacja> getAnnotations() {
                return null;
            }
            ...
        };
    }
    ...
} < /kod>

Skaner aplikacji binarnych oznacza wszystkie metody getAnnotated w klasach, które implementują interfejs javax.enterprise.inject.spi.InjectionPoint. Jeśli oznaczona metoda getAnnotated zwraca instancję klasy AnnotatedParameter lub AnnotatedField, regułę tę można zignorować. Jeśli metoda getAnnotated zwraca instancję Annotated, należy zmienić kod.

W implementacji CDI 1.2 aplikacja zawierająca klasę MyInjectionPoint nie uruchamia się i zgłasza następujący wyjątek:

org.jboss.weld.exceptions.IllegalArgumentException: WELD-001521: InjectionPoint.getAnnotated() must return either AnnotatedParameter or AnnotatedField

Aby rozwiązać ten problem, należy zastąpić wywołanie metody new Annotated() wywołaniem new AnnotatedField() lub new AnnotatedParameter() w zależności od tego, czy punktem wstrzykiwania jest wstawione pole, czy parametr w konstruktorze lub metodzie.

Więcej informacji na temat implementacji Java EE 7 CDI 1.2 można znaleźć na stronie Zmiany w działaniu specyfikacji Contexts and Dependency Injection 1.2.