Статические внутренние классы, на которые нет ссылок, по-разному обрабатываются MOXy и RI - PullRequest
3 голосов
/ 15 марта 2012

Допустим, у меня есть следующие два класса:

package example.model;

public class Model {
    public static class Inner {}

    public Other prop;
}

и

package example.model;

public class Other {
    public static class Inner {}

    public String prop;
}

, и я создаю JAXB-контекст с JAXBContext.newInstance(example.model.Model.class).

с помощьюРеализация JAXB по умолчанию из Java 6 работает без каких-либо аннотаций, и сгенерированная модель не упоминает "inner" .с EclipseLink я получаю "столкновение имен. Два класса имеют тип XML с uri и именем inner."

Я знаю, что создание хотя бы одного из внутренних классов @XmlTransient избавляет отэта проблема.Я хотел бы знать, как это различие связано со стандартом JAXB, и, я думаю, также, если есть какой-либо другой способ заставить MOXy игнорировать эти классы, как это делает реализация JAXB по умолчанию.

1 Ответ

2 голосов
/ 15 марта 2012

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

Как только исправление станет доступно, вы сможете загрузить ночные сборки по следующей ссылке:

Обходной путь

Как вы уже упоминали, вы можете пометить статический внутренний класс с помощью @XmlTransient.

package example.model;

public class Model {
    @XmlTransient        
    public static class Inner {}

    public Other prop;
}
...