2015-03-12 4 views

ответ

9

Вы можете зарегистрировать только компоненты JAX-RS, такие как Providers или Features. Вам необходимо зарегистрировать поставщика, который несет ObjectMapper, который несет модуль с зарегистрированным вашим регистратором.

ResteasyJacksonProvider resteasyJacksonProvider = new ResteasyJacksonProvider(); 
ObjectMapper mapper = new ObjectMapper(); 
SimpleModule myModule = new SimpleModule("myModule", new Version(1, 0, 0, null)); 
myModule.addSerializer(Custom.class, new CustomSerializer()); 
mapper.registerModule(myModule); 
resteasyJacksonProvider.setMapper(mapper); 
ResteasyClient client = new ResteasyClientBuilder().register(resteasyJacksonProvider).build(); 

Следует отметить, что этот пример использует классы из org.codehaus.jackson. API от com.fasterxml.jackson выглядит несколько иначе.

0

Альтернативное решение

Глядя в исходный код, ResteasyJackson2Provider имеет следующие аннотаций

@Provider 
    @Consumes({"application/*+json", "text/json"}) 
    @Produces({"application/*+json", "text/json"}) 

поэтому я предпочел создать класс поставщика с конкретными аннотаций, чтобы быть уверенным, что будет выбран первый :

public class RestEasyClientJackson { 
     private ObjectMapper mapper; 

     private JacksonJsonProvider provider; 

     private Client client; 

     @Before 
     public void setUp() throws Exception { 
      mapper = new ObjectMapper(); 
      mapper = mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); 

      provider = new MyProvider(mapper); 

      client = ClientBuilder.newBuilder().register(provider).build(); 
     } 

     @Provider 
     @Produces(MediaType.APPLICATION_JSON) 
     @Consumes(MediaType.APPLICATION_JSON) 
     class MyProvider extends JacksonJsonProvider { 
      MyProvider(ObjectMapper mapper) { 
       super(mapper); 
     } 

     @Test 
     public void myTest() throws Exception { 
      // some test code... 
     } 
    } 
+0

По-прежнему мой пользовательский поставщик json получает вызов с помощью вышеуказанного подхода. – user1578872

Смежные вопросы