Classes de terceiros de serialização com XML simples (org.simpleframework.xml)
Eu decidi usarSerialização XML simples e foi preso com um problema básico. Estou tentando serializarjava.util.UUID
instância de classe como campo final nesta classe pequena:
@Root
public class Identity {
@Attribute
private final UUID id;
public Identity(@Attribute UUID id) {
this.id = id;
}
}
Tutorial mostra como serializar objetos de terceiros registrando conversores como este:
Registry registry = new Registry();
registry.bind(UUID.class, UUIDConverter.class);
Strategy strategy = new RegistryStrategy(registry);
Serializer serializer = new Persister(strategy);
serializer.write( object, stream );
conversor apropriado para UUID é bastante simples:
public class UUIDConverter implements Converter<UUID> {
@Override
public UUID read(InputNode node) throws Exception {
return new UUID.fromString(node.getValue());
}
@Override
public void write(OutputNode node, UUID value) throws Exception {
node.setValue(value.toString());
}
}
Mas esse código simples simplesmente não funcionou para mim, durante objetos de serialização com campos UUID foram lançados exceçãoTransformação da classe java.util.UUID não suportada.
Eu tentei algo semelhante com o costumeMatcher
(que não estava no tutorial) que funciona para mim:
Serializer serializer = new Persister(new MyMatcher());
serializer.write( object, stream );
eMatcher
classe fica assim:
public static class MyMatcher implements Matcher {
@Override
@SuppressWarnings("unchecked")
public Transform match(Class type) throws Exception {
if (type.equals(UUID.class))
return new UUIDTransform();
return null;
}
}
public class UUIDTransform implements Transform<UUID> {
@Override
public UUID read(String value) throws Exception {
return UUID.fromString(value);
}
@Override
public String write(UUID value) throws Exception {
return value.toString();
}
}
Questões:
O Matcher personalizado é sempre uma prática recomendada para o streaming de aulas de terceiros?Nesse caso, posso usar o conversor?Existem melhores tutoriais / exemplos para XML simples por aí?Obrigado.