Serialización de clases de terceros con XML simple (org.simpleframework.xml)

He decidido usarSerialización XML simple y estaba atorado con un problema básico. Estoy tratando de serializarjava.util.UUID instancia de clase como campo final en esta pequeña clase:

@Root
public class Identity {
    @Attribute
    private final UUID id;

    public Identity(@Attribute UUID id) {
        this.id = id;
    } 
}

Tutorial muestra cómo serializar objetos de terceros registrando convertidores 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 );

El convertidor apropiado para UUID es bastante simple:

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());
    }
}

Pero este código simple simplemente no funcionó para mí, durante la serialización de objetos con campos UUID se produjo una excepciónTransformación de clase java.util.UUID no compatible.

He intentado algo similar con la costumbreMatcher (que no estaba en el tutorial) que funciona para mí:

Serializer serializer = new Persister(new MyMatcher());

serializer.write( object, stream );

yMatcher la clase se ve así:

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();
    }
}

Preguntas:

¿Matcher personalizado siempre es una práctica recomendada para transmitir clases de terceros?¿En qué caso puedo usar Converter?¿Hay mejores tutoriales / ejemplos para XML simple por ahí?

Gracias.

Respuestas a la pregunta(3)

Su respuesta a la pregunta