Определенный MessageBodyWriter для поля
Скажем, у меня есть класс данных в среде JAX-RS 1 (RestEasy 2 с поставщиком Джексона), например:
class Foo {
int id;
String name;
Bar bar;
...
}
сBar
являются:
class Bar {
int one;
String two;
}
Теперь я хочу иметьBar
Сериализованный особым образом (возможно, в зависимости от запрошенного типа носителя (или в зависимости от фазы луны), я бы написалMessageBodyWriter
@Provider
@Produces("application/json")
public class BarWriter implements MessageBodyWriter {
...
}
который работает очень хорошо, еслиBar
запрашивается самостоятельно, как в
@GET @Path("bar")
public Bar getBar() { return new Bar(...); }
Но когда я прошуFoo
как в
@GET @Path("foo")
public Foo getFoo() { return new Foo(...); }
средство записи тела сообщения игнорируется.
Теперь я хочу, чтобы этоMessageBodyWriter
также используется, когда я вернусьFoo
илиList
Я думаю, что последнее может быть достигнуто просто написаниемMessageBodyWriter
дляList
случай, но для первого случая я могунаписать тело сообщения для всех моих классов приложений, которые содержатBar
поле.
Есть идеи, как это решить? Я также пытался использовать сериализатор Джексона наBar
экземпляр, но похоже, что это даже не зарегистрировано RestEasy (и тогда, я думаю, что этот путь слишком хрупкий в любом случае).