Всего два шага:
Переименовать расширение файла библиотеки в «.jar», например: lib.jar
Извлечь файл в папке с Winrar, Winzip и т. д.
вы можете зарегистрировать преобразователь, который добавляет желаемый тег управления версиями к корневому элементу
class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class PersonConverter implements Converter {
public boolean canConvert(Class clazz) {
return clazz.equals(Person.class);
}
public void marshal(Object value,
HierarchicalStreamWriter writer,
MarshallingContext context) {
Person person = (Person) value;
writer.addAttribute("version", "0");
writer.startNode("fullname");
writer.setValue(person.getName());
writer.endNode();
}
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
Person person = new Person();
reader.moveDown();
person.setName(reader.getValue());
reader.moveUp();
return person;
}
}
@Test
public void versioning() {
Person person = new Person();
person.setName("Davide");
XStream xStream = new XStream(new DomDriver());
xStream.registerConverter(new PersonConverter());
xStream.alias("person", Person.class);
System.out.println(xStream.toXML(person));
}
<person version="0">
<fullname>Davide</fullname>
</person>
лучшее решение - украсить конвертер по умолчанию, предоставленный XStream, чтобы добавить
атрибут управления версиями для всех объектов домена без записи одного конвертера
класс для каждого из них
Ознакомьтесь со следующим проектом
Позволяет вам предоставлять методы миграции, чтобы вы могли десериализовать старые версии сериализованных объектов.