JAXB-провайдер Eclipselink MOXy игнорирует @XmlAccessorType (XmlAccessType.NONE) - PullRequest
2 голосов
/ 18 января 2011

Я использую @XmlAccessorType(XmlAccessType.NONE) в package-info.java для my.package, что означает, что JAXB должен заботиться только об аннотированных элементах.Однако, когда я запускаю свой тест JUnit с кодом un / marshalling для простого POJO, MOXy просто кричит о каждом классе (даже из пакета без jaxb.properties или из других модулей maven, на которые есть ссылки в зависимостях) следующим образом:

Exception Description: The class other.maven.module.package.class requires a zero argument constructor or a specified factory method.  Note that non-static inner classes do not have zero argument constructors and are not supported.

Я не сталкивался с такой проблемой в Metro (эталонная реализация, но у меня есть другие недостатки для моего использования), и, к сожалению, я действительно не могу изменить каждый класс таким образом.

1 Ответ

2 голосов
/ 18 января 2011

Мне удалось проверить эту проблему, была введена следующая ошибка для отслеживания этой проблемы.

Краткое описание проблемы:

Для следующей объектной модели:

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;

@XmlAccessorType(XmlAccessType.NONE)
public class Foo {

    private Bar bar;

    public Bar getBar() {
        return bar;
    }

    public void setBar(Bar bar) {
        this.bar = bar;
    }

}

и

public class Bar {

    public Bar(String name) {
    }

}

Реализация EclipseLink MOXy JAXB обрабатывает класс Bar, хотя это не должно быть, потому что он не отображается.

...