2010-08-01 3 views
9

Il est facile de mettre un convertisseur pour un certain type (http://x-stream.github.io/javadoc/com/thoughtworks/xstream/XStream.html donne un exemple):Comment attacher un convertisseur XStream juste pour un certain élément?

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

Je voudrais enregistrer un convertisseur, mais les noms d'éléments différents. L'interface du convertisseur n'offre pas le nom de l'élément. Par exemple: Une date doit être convertie en une chaîne détaillée si le nom de l'élément (nom de la propriété) est <longDate> mais court si <shortDate>. Comment puis-je ajouter différents convertisseurs en fonction du nom de la propriété? Quelque chose comme xstream.registerConverter (Class classtype, propertyname, converter) n'existait pas mais serait sympa.

Je sais que je peux utiliser une version spécialisée d'un PrettyPrintWriter, mais cela semble beaucoup de travail pour ce travail simple. D'autres idées? BTW: Je pourrais utiliser une annotation @XStreamConverter (XXX.class) mais je ne veux pas utiliser d'annotations. Je veux que mon haricot soit libre de toute annotation.

Répondre

6

Utilisez registerLocalConverter() au lieu de registerConverter().

xstream.registerLocalConverter(MyClazz.class, "property", new MyConverter()); 
Questions connexes