Как прикрепить конвертер XStream только для определенного элемента? - PullRequest
9 голосов
/ 01 августа 2010

Конвертер для определенного типа легко установить (например, http://x -stream.github.io / javadoc / com / мысльworks / xstream / XStream.html ):

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

Я бы хотел зарегистрировать конвертер, но с разными именами элементов. Интерфейс конвертера не предлагает название элемента.

Например: дату следует преобразовать в подробную строку, если имя элемента (имя свойства) будет в <longDate>, но короткое, если в <shortDate>. Как добавить разные конвертеры в зависимости от имени свойства? Что-то вроде xstream.registerConverter (класс classtype, имя свойства, конвертер) не существует, но было бы неплохо.

Я знаю, что могу использовать специализированную версию PrettyPrintWriter, но это похоже на большую работу для этой простой работы. Есть другие идеи?

Кстати: я мог бы использовать аннотацию @XStreamConverter (XXX.class), но я не хочу использовать аннотации. Я хочу, чтобы мой боб был свободен от каких-либо комментариев.

1 Ответ

6 голосов
/ 18 августа 2010

Используйте registerLocalConverter() вместо registerConverter().

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