Наследование @XmlJavaTypeAdapter w/

Я имею XmlJavaTypeAdapter определенный для каждого Исключения в моей иерархии исключения. Я использую интерфейсный объект для маршалинга исключений как указано ниже:

@XmlRootElement
public Wrapper<T extends BaseException> {
    T exception;
}

Исключения:-

@XmlJavaTypeAdapter(BaseExceptionAdapter.class) {
public class BaseException extends RuntimeException {
}


@XmlJavaTypeAdapter(DerivedExceptionAdapter.class) {
public class DerivedException extends BaseException {
}

Когда я пытаюсь упорядочить интерфейсный объект, JAXB по умолчанию всегда звонит BaseExceptionAdapter даже если фактическое исключение имеет тип DerivedException. Как я могу вынудить это искать тип экземпляра исключения, а не ссылочного типа.

Только добавить, package-info / jaxb.index и т.д. как исключены.

7
задан skaffman 24 June 2010 в 08:55
поделиться

1 ответ

Все ли ваши подтипы исключения перечислены в package-info / jaxb.index / newInitialContext (...)?

JAX-B будет проверять тип экземпляра, но я считаю, что подтипы нуждаются в быть зарегистрированным в JAX-B. Он не обнаружит аннотацию XMLJavaTypeAdapter во время выполнения, вы должны явно зарегистрировать каждый подкласс в JaxB.

Этого также можно добиться с помощью аннотации @XmlSeeAlso из класса, зарегистрированного в JAX-B.

0
ответ дан 7 December 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: