Я использую XMLEncoder для записи графа объектов в файл XML.
Это работает нормально, за исключением свойства UUID (которое имеет имя id в моем JavaBean)
Я знаю, что мне нужен PersistanceDelegate, чтобы сделать это. Я написал следующее:
class UuidPersistenceDelegate extends PersistenceDelegate {
protected Expression instantiate(Object oldInstance, Encoder out) {
UUID id = (UUID) oldInstance;
return new Expression(oldInstance, id.getClass(), "fromString", new Object[]{ "id" } );
}
}
И установите его в Encoder:
encoder.setPersistenceDelegate(UUID.class, new UuidPersistenceDelegate());
Во время выполнения я получаю следующее исключение при вызове encoder.writeObject (...):
java.lang.IllegalArgumentException: неверная строка UUID: идентификатор
Кто-нибудь знает, как заставить это работать?