2012-06-19 3 views
3

Учитывая следующие аннотацийjaxb, могу ли я использовать @XmlJavaTypeAdapter с помощью @XmlElements?

@XmlElements({ 
@XmlElement(name = "first", type = First.class), 
@XmlElement(name = "second", type = Second.class), 
@XmlElement(name = "third", type = Third.class), 
@XmlElement(name = "fourth", type = Fourth.class), 
@XmlElement(name = "fifth", type = Fifth.class), 
@XmlElement(name = "sixth", type = Sixth.class), 
@XmlElement(name = "seventh", type = Seventh.class)}) 
private List<Dimension> dimensions = new ArrayList<>(); 

И из-за какой-то смешной унаследованной логики, я должен предоставить адаптер для Third.class.

@XmlJavaTypeAdapter(ThirdAdapter.class) 
public class Third implements Dimension 

Однако ThirdAdapter никогда не называется. Является ли @XmlJavaTypeAdapter совместимым с @XmlElements? Или есть лучшее решение для этого?

ответ

2

Примечание: Я EclipseLink JAXB (MOXy) свинца и член группы экспертов JAXB (JSR-222).

Это, кажется, ошибка в JAXB reference implementation. Это также был bug в EclipseLink JAXB (MOXy), но мы исправили его в нашем потоке EclipseLink 2.4.0. Вы можете скачать релиз-кандидат по следующему адресу:

jaxb.properties

Чтобы использовать Moxy в качестве поставщика JAXB вам необходимо добавить файл с именем jaxb.properties в тот же пакет, что и ваша модель домена, со следующей записью:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory 
+0

Спасибо за ваш ответ. Я надеялся на решение в стандартной библиотеке JAXB, но если я найду больше ошибок, я обязательно дам moxy попробовать. Сейчас это единственная проблема, с которой я столкнулся, и я смог очистить код, чтобы удалить необходимость в адаптере. –

+0

@PresidentComacho - MOXy - это стандартная библиотека JAXB (JSR-222), передающая все те же тесты соответствия Java EE, что и эталонная реализация. –

+0

Является ли эта проблема исправлена ​​с текущей реализацией jaxb, поставляемой с Java 7_40? Я не нашел запись с ошибкой для этой ошибки. Знаете ли вы, что когда-либо была создана запись трекера? –