Определенный MessageBodyWriter для поля

Скажем, у меня есть класс данных в среде JAX-RS 1 (RestEasy 2 с поставщиком Джексона), например:

class Foo {
   int id;
   String name;
   Bar bar;

   ...
}

с участиемBar являются:

class Bar {
   int one;
   String two;
}

Теперь я хочу иметьBar Сериализованный особым образом (возможно, в зависимости от запрошенного типа носителя (или в зависимости от фазы луны), я бы написалMessageBodyWriter<Bar>

@Provider
@Produces("application/json")
public class BarWriter implements MessageBodyWriter<Bar> {
   ...
}

который работает очень хорошо, еслиBar запрашивается самостоятельно, как в

@GET @Path("bar")  
public Bar getBar() { return new Bar(...); }

Но когда я прошуFoo как в

@GET @Path("foo")  
public Foo getFoo() { return new Foo(...); }

средство записи тела сообщения игнорируется.

Теперь я хочу, чтобы этоMessageBodyWriter также используется, когда я вернусьFoo илиList<Bar>

Я думаю, что последнее может быть достигнуто просто написаниемMessageBodyWriter дляList случае, но для первого случая я не могу написать модуль записи тела сообщения для всех классов моего приложения, которые содержатBar поле.

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

Ответы на вопрос(3)

Ваш ответ на вопрос