Не работает JacksonXmlElementWrapper

390
12 июня 2017, 20:51

Пытаюсь распарсить строку xml следующим образом:

XmlMapper xmlMapper = new XmlMapper();
TransitionWidget diagram = xmlMapper.readValue(xml, TransitionWidget.class);
diagram.toString();

Абстрактный класс виджета:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
    @JsonSubTypes.Type(value = StateWidget.class, name = "State"),
    @JsonSubTypes.Type(value = TransitionWidget.class, name = "Transition")
})
public abstract class Widget {
    private Integer id;
    private final String type;
    protected Widget(String type) {
        this.type = type;
    }
    @JacksonXmlProperty(isAttribute = true)
    public Integer getId() {
        return id;
    }
    @JacksonXmlProperty(isAttribute = true)
    public String getType() {
        return type;
    }
}

Пример наследника класса:

@JacksonXmlRootElement(localName = "widget")
public class TransitionWidget extends Widget {
    private TransitionAttributes attributes;
    public TransitionWidget() {
        super("Transition");
    }
    @JacksonXmlProperty(localName = "attributes")
    public TransitionAttributes getAttributes() {
        return attributes;
    }
}

Его аттрибуты:

public class TransitionAttributes {
    private Event event;
    private List<Action> action;
    @JacksonXmlProperty(localName = "action")
    @JacksonXmlElementWrapper(useWrapping = false)
    public List<Action> getAction() {
        return action;
    }

}

При парсинге поле actions остается пустым, а event корректно заполняется. При этом если убрать наследование extends, то actions тоже заполняется. Как можно это исправить? @JsonSubTypes не работают с XmlMapper?

READ ALSO
Что понимается под единым интерфейсом в REST?

Что понимается под единым интерфейсом в REST?

Начал разбираться с REST архитектурой, и среди ограничений есть:

298
Opengl. java. Не правильно накладывается текстура(fbx)

Opengl. java. Не правильно накладывается текстура(fbx)

Проблема в том что текстура не так ложиться а именно то что я вырезал ложиться непонятно какв чем причина? код обрабатывающий вершины текстуры...

243
406 Spring MVC Json - не могу вернуть объект

406 Spring MVC Json - не могу вернуть объект

Столкнулся с проблемой, не могу вернуть объект в REST-Controller (метод addUser)Вылазит ошибка HTTP Status 406 -The resource identified by this request is only capable of generating responses with characteristics...

406