Я планирую использовать XStream с Java для преобразования между объектами и XML-запросами, а также XML-ответами и объектами, где XML передается по HTTP / HTTPS. Со стороны ответа я могу получить «успешный» ответ, который выглядит так, как если бы он отображался на один класс Java, или ответ «сбой», который выглядит так, как будто он сопоставлен с другим классом Java.
Например, для запроса «списка файлов» я могу получить утвердительный ответ, например,
<?xml version="1.0" encoding="UTF-8"?>
<response>
<success>true</success>
<files>
<file>[...]</file>
<file>[...]</file>
<file>[...]</file>
</files>
</response>
или я могу получить отрицательный ответ, например,
<?xml version="1.0" encoding="UTF-8"?>
<response>
<success>false</success>
<error>
<errorCode>-502</errorCode>
<systemMessage>[...]AuthenticationException</systemMessage>
<userMessage>Not authenticated</userMessage>
</error>
</response>
Чтобы справиться с этим, следует ли включать поля в одном классе для обоих случаев или я должен каким-то образом использовать XStream для «условного» создания одного из двух потенциальных классов?
Случай с полями из обоих вариантов ответа в одном и том же объекте будет выглядеть примерно так:
Class Response {
boolean success;
ArrayList<File> files;
ResponseError error;
[...]
}
Class File {
String name;
long size;
[...]
}
Class ResponseError {
int errorCode;
String systemMessage;
String userMessage;
[...]
}
Я не знаю, как выглядит «использовать XStream и создавать разные объекты в случае успеха или ошибки». Можно ли это как-то сделать? Это лучший или худший путь?
В любом случае, любые советы о том, как справиться с использованием XStream, чтобы справиться с этим случаем «успех / отказ», будут приветствоваться. Заранее спасибо!