It's not wrong if the Book object is a JAXB bean per the test code - in my case it's just an unannotated POJO - sorry for the confusion.
On Wed, Jul 15, 2015 at 9:38 AM, Jose María Zaragoza <[email protected]> wrote: > 2015-07-15 15:33 GMT+02:00 Chris Wolf <[email protected]>: >> Jose, >> >> Thanks for the suggestion, but if you look at the code snippet in my >> original message, you can see that I already have "providers.add(new >> JSONProvider());", unless I missed something. > > I see > > providers.add(JSONProvider.class); > > am I wrong ? > > > > >> >> Thanks, >> >> Chris >> >> On Wed, Jul 15, 2015 at 2:56 AM, Jose María Zaragoza >> <[email protected]> wrote: >>> 2015-07-14 19:26 GMT+02:00 Chris Wolf <[email protected]>: >>>> Again, referring to the example code at: >>>> >>>> https://cwiki.apache.org/confluence/display/CXF20DOC/JAXRS+Testing >>>> >>>> This client code works: >>>> >>>> @Test >>>> public void testGetBookWithProxy() { >>>> MyJaxrsResource client = >>>> JAXRSClientFactory.create(ENDPOINT_ADDRESS, MyJaxrsResource.class); >>>> >>>> WebClient.getConfig(client).getRequestContext().put(LocalConduit.DIRECT_DISPATCH, >>>> Boolean.TRUE); >>>> WebClient.getConfig(client).setBus(bus); >>>> Response r = client.getBook("123"); >>>> String bookJSON = r.readEntity(String.class); >>>> log.info("JAXRS Client result: {}", bookJSON); >>>> } >>>> >>>> ...but this client code (which should try to unmarshall to object) doesn't >>>> work: >>>> >>>> @Test >>>> public void testGetBookWithWebClient() { >>>> List<Object> providers = new ArrayList<Object>(); >>>> // add custom providers if any >>>> providers.add(JSONProvider.class); >>>> >>>> WebClient client = WebClient.create(ENDPOINT_ADDRESS, providers); >>>> client.accept("application/json"); >>>> client.path("shelf/book"); >>>> Book book = client.query("id", 123L).get(Book.class); >>>> assertEquals(123L, book.getId()); >>>> } >>>> >>>> >>>> The error is: >>>> >>>> ResponseProcessingException: No message body reader has been found for >>>> class CXF_Test.cxf_test.Book, ContentType: application/json >>>> >>>> However, as can be seen, I configured the "JSONProvider", which I >>>> thought would unmarshal JSON to POJOs. >>>> >>>> Any ideas? >>> >>> >>> >>> >>> Why don't you try >>> >>> providers.add(new JSONProvider()); >>> >>> ? >>> >>> This worked for me. >>> >>> Regards
