When switching to 2.2.2 I get a ResponseImpl object but the entity is null.
Have you tried to add the line:

assertNotNull(r.getEntity());

to your test?

On Tue, Jun 16, 2009 at 11:40 AM, Sergey Beryozkin <[email protected]>wrote:

> I;ve done a test and see no problems so far. here's the code.
>
> // Client test code
> @Test
> public void testTridionService() {
>
> List<MessageBodyReader<org.apache.cxf.systest.jaxrs.Response>> providers =
>
> new ArrayList<MessageBodyReader<org.apache.cxf.systest.jaxrs.Response>>();
>
> providers.add(new ResponseReader());
>
>
> // We also need to pass the provider for deserializing the response
>
> // object.
>
> TridionQueryService tridionQueryServiceProxy =
>
> JAXRSClientFactory.create("http://localhost:9080";,
>
> TridionQueryService.class, providers);
>
>
> org.apache.cxf.systest.jaxrs.Response r =
> tridionQueryServiceProxy.executeQuery("query", "id");
>
> assertNotNull(r);
>
>
> }
>
> // sample Response :
>
>
> public class Response {
>
>
> public int id;
>
>
> }
>
> // Response Reader, used on the client side
>
> public class ResponseReader implements MessageBodyReader<Response> {
>
>
> public boolean isReadable(Class type, Type genericType, Annotation[]
> annotations, MediaType mediaType) {
>
> // TODO Auto-generated method stub
>
> return true;
>
> }
>
>
> public Response readFrom(Class arg0, Type arg1, Annotation[] arg2,
> MediaType arg3, MultivaluedMap arg4,
>
> InputStream arg5) throws IOException, WebApplicationException {
>
> // TODO Auto-generated method stub
>
> Response r = new Response();
>
> XMLSource source = new XMLSource(arg5);
>
> String id = source.getValue("response/id");
>
> r.id = Integer.parseInt(id);
>
> return r;
>
> }
>
>
> }
>
> // ResponseWriter, used on the server side :
>
> public class ResponseWriter implements MessageBodyWriter<Response> {
>
>
> public long getSize(Response t, Class type, Type genericType, Annotation[]
> annotations, MediaType mediaType) {
>
> // TODO Auto-generated method stub
>
> return 0;
>
> }
>
>
> public boolean isWriteable(Class type, Type genericType, Annotation[]
> annotations, MediaType mediaType) {
>
> // TODO Auto-generated method stub
>
> return true;
>
> }
>
>
> public void writeTo(Response arg0, Class arg1, Type arg2, Annotation[]
> arg3, MediaType arg4,
>
> MultivaluedMap arg5, OutputStream arg6) throws IOException,
> WebApplicationException {
>
> StringBuilder sb = new StringBuilder();
>
> sb.append("<response><id>" + arg0.id + "</id></response>");
>
> arg6.write(sb.toString().getBytes());
>
> arg6.flush();
>
> }
>
>
> }
>
> // TridionQueryServiceImpl :
>
> public class TridionQueryServiceImpl implements TridionQueryService {
>
>
> public Response executeQuery(String query, String publication) throws
> WebApplicationException {
>
> Response r = new Response();
>
> r.id = 1;
>
> return r;
>
> }
>
>
> }
>
> // Server start up :
>
> AXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
>
> sf.setResourceClasses(TridionQueryServiceImpl.class);
>
>
> List<Object> providers = new ArrayList<Object>();
>
> providers.add(new ResponseWriter());
>
> sf.setProviders(providers);
>
> sf.setResourceProvider(TridionQueryServiceImpl.class,
>
> new SingletonResourceProvider(new TridionQueryServiceImpl()));
>
> sf.setAddress("http://localhost:9080/";);
>
>
> sf.create();
>
>
> Vicio, can you please provbide more details : post sample response value,
> sample Response and ResponseProvider, etc...
>
> thanks, Sergey
>
>
>
>
>
>
>
>
> ----- Original Message ----- From: "Sergey Beryozkin" <
> [email protected]>
> To: <[email protected]>
> Sent: Tuesday, June 16, 2009 10:05 AM
> Subject: Re: Problem with JAXRSClientFactory after updating to 2.2.2
>
>
>
>  Hi
>>
>> Sorry, your messages have been caught by the spam filter.
>> Can you please use JAXRSClientFactoryBean directly please, may be there're
>> some overloading issues among the factory utility methods..
>> Trying to do a quick test now...
>> cheers, Sergey
>>
>> ----- Original Message ----- From: "Vincenzo Vitale" <
>> [email protected]>
>> To: <[email protected]>
>> Sent: Monday, June 15, 2009 11:59 AM
>> Subject: Problem with JAXRSClientFactory after updating to 2.2.2
>>
>>
>>  Hi,
>>> after updating to CXF 2.2.2 the  JAXRSClientFactory seems to not work
>>> anymore having the entity field returned always to null.
>>>
>>> Here my code:
>>>
>>>
>>>       ArrayList<MessageBodyReader<Response>> providers =
>>>               new ArrayList<MessageBodyReader<Response>>();
>>>       providers.add(new ResponseProvider());
>>>
>>>       // We also need to pass the provider for deserializing the response
>>>       // object.
>>>       tridionQueryServiceProxy =
>>>               JAXRSClientFactory.create(getTridionProxyBaseAddress(),
>>>                       TridionQueryService.class, providers);
>>>
>>>
>>>
>>> and than:
>>>
>>> tridionProxyResponse
>>> = tridionQueryServiceProxy.executeQuery(query.toString(), publicationId);
>>>
>>>
>>> The common interface between server and client is:
>>>
>>> @Path("/query-service")
>>> @Produces("application/xml")
>>> public interface TridionQueryService {
>>>
>>>   /**
>>>    * Execute a generic query in the Tridion system through a POST
>>> request.
>>>    *
>>>    * @param query The query to be executed.
>>>    * @param publicationId The publication to use (in a normal Tridion
>>>    *        implementation the publication id specify the channel to
>>> use).
>>> If
>>>    *        the parameter is not passed a default value (different
>>> depending
>>>    *        on the implementation) will be used.
>>>    * @return A {...@link Response} object containing the xml response
>>> received
>>>    *         from Tridion..
>>>    */
>>>   @POST
>>>   @Path("/execute")
>>>   Response executeQuery(@FormParam("query") String query,
>>>           @FormParam("channel") String publication)
>>>           throws WebApplicationException;
>>>
>>>
>>>
>>> Is someone experiencing the same problem. Is it a bug in CXF?
>>>
>>>
>>>
>>> Thanks,
>>> Vicio.
>>>
>>>
>>

Reply via email to