spoiler
public abstract sealed class ServerMessage implements Serializable
permits ServerMessage.NewMessage {
public static final XStream xStream = new XStream();
private final ErrorType errorType;
protected ServerMessage(ErrorType errorType) {
this.errorType = errorType;
}
public ErrorType getErrorType() {
return errorType;
}
public enum ErrorType {
ERROR, SUCCESS
}
public static final class NewMessage extends ServerMessage {
private final TextMessage message;
public NewMessage(TextMessage message) {
super(ErrorType.SUCCESS);
this.message = message;
}
public TextMessage getMessage() {
return message;
}
}
}
Есть вот такой sealed класс
Как сериализовать и десериализовать такой класс через jackson?
Еще чтобы root tag был равен значению ErrorType в xml формате
Пытался просто
xmlMapper.writeValueAsString(msg);
var xmlString = "<NewMessage><message><name>1</name><text>asdasd</text></message></NewMessage>";
ServerMessage msg = xmlMapper.readValue(xmlString, ServerMessage.class);
Такая ошибка
spoilerSuch an errorjackson.databind.exc.MismatchedInputException: Cannot deserialize value of type org.example.ServerMessage$ErrorType from Object value (token JsonToken.FIELD_NAME)