2010-08-01 10 views
9

Es fácil de configurar un convertidor para un determinado tipo (http://x-stream.github.io/javadoc/com/thoughtworks/xstream/XStream.html da un ejemplo):¿Cómo conectar un convertidor XStream solo para un determinado elemento?

xstream.registerConverter(new SqlTimestampConverter()); 
xstream.registerConverter(new DynamicProxyConverter()); 

me gustaría registrar un convertidor, pero en diferentes nombres de los elementos. La interfaz del convertidor no ofrece el nombre del elemento.

Por ejemplo: una fecha se debe convertir a una cadena detallada si el nombre del elemento (nombre de la propiedad) estará en <longDate> pero corto si está en <shortDate>. ¿Cómo puedo agregar diferentes conversores basados ​​en el nombre de la propiedad? Algo como xstream.registerConverter (Class classtype, propertyname, converter) no existía, pero estaría bien.

Sé que puedo usar una versión especializada de PrettyPrintWriter, pero parece funcionar mucho para este simple trabajo. ¿Alguna otra idea?

BTW: Podría usar una anotación @XStreamConverter (XXX.class) pero no quiero usar anotaciones. Quiero que mi grano esté libre de cualquier anotación.

Respuesta

6

Use registerLocalConverter() en lugar de registerConverter().

xstream.registerLocalConverter(MyClazz.class, "property", new MyConverter()); 
Cuestiones relacionadas