Having MessageBodyReader<Object> & MessageBodyWriter<Object> instead of
MessageBodyReader/MessageBodyWriter would work with any CXF version...

Benson and then myself worked a bit on ensuring that the process of choosing
the right JAX-RS provider checks the generic parameters so the fact some
providers may not even have them was kind of missed. Definitely not a big
issue

Cheers, Sergey

On Fri, Jan 21, 2011 at 5:44 PM, Glen Mazza <[email protected]> wrote:

>
>  On Fri, Jan 21, 2011 at 4:34 PM, Dan King<[email protected]>  wrote:
>>
>>  2. Where can I find examples of custom
>>> message body reader/writer implementation examples? I've searched
>>> everywhere and
>>> found nothing that helps in understanding how to implement a custom one.
>>>
>>
> If you need to go that route, Example 6-02 of the JAX-RS book examples[1]
> has a rather complex MessageBodyReader/Writer example.  Note this example
> had uncovered a bug that was quickly fixed in CXF 2.3.2 which should be
> released very shortly[2] -- however most other MBR/MBW implementations will
> work in CXF 2.3.1.
>
>
> [1] http://www.jroller.com/gmazza/date/20110117
> [2]
> http://cxf.547215.n5.nabble.com/VOTE-Apache-CXF-2-3-2-tp3345633p3350807.html
>
>
>  3. I checked the example Glenn suggested, however that example does NOT
>>> use
>>> "ResponseReader". The method "useSimpleProxy" in "RESTClient.java",
>>> creates
>>> a
>>> client proxy from which it retrieves a collection of person objects; it
>>> never
>>> deals with a "Response" object. Did I miss something in the example?
>>>
>>>
> I apologize, the code I mentioned above will be in the *next* release of
> the Talend examples, it actually uses brand new functionality put in by
> Sergey in CXF 2.3.2.  An example of ResponseReader (from the upcoming Talend
> samples) is below:
>
> public void useSimpleProxy() {
> System.out.println("Using a simple JAX-RS proxy to get all the
> persons...");
> ResponseReader reader = new ResponseReader();
> reader.setEntityClass(PersonCollection.class);
>
> String webAppAddress = "http://localhost:"; + port +
> "/services/personservice";
> PersonService proxy = JAXRSClientFactory.create(webAppAddress,
> PersonService.class,
> Collections.singletonList(reader));
>
> // getPersons(a, b): a is zero-based start index, b is number of records
> // to return (-1 for all)
> Response resp = proxy.getPersons(0, -1);
> if (resp.getStatus() == 200) {
> PersonCollection personColl = (PersonCollection)resp.getEntity();
> List<Person> persons = personColl.getList();
> for (Iterator<Person> it = persons.iterator(); it.hasNext();) {
> Person person = it.next();
> System.out.println("ID " + person.getId() + " : " + person.getName() + ",
> age : "
> + person.getAge());
> }
> }
> }
>
> Again, though, this will unfortunately need to wait until CXF 2.3.2 is out.
>
> HTH,
> Glen
>
>
>
>
>
>  Thanks.
>>>
>>> -Dan
>>>
>>> ----- Original Message ----
>>>
>>>  From: Sergey Beryozkin<[email protected]>
>>>> To: [email protected]
>>>> Sent: Fri, January 21, 2011 6:37:54 AM
>>>> Subject: Re: How to convert response input stream to java object
>>>>
>>>> ResponseReader is a custom MessageBodyReader<Response>  handler which
>>>>  is
>>>> registered on the client side, it allows to do a safe type casting, such
>>>>
>>>  as
>>>
>>>> Response response = webClient.get();
>>>> Book book =  (Book)Response.getEntity();
>>>>
>>>> It's possibe to write your own custom  Response reader with any CXF
>>>>
>>> version
>>>
>>>> supporting the client api, but using the  ResponseReader makes it
>>>>
>>> simpler...
>>>
>>>> Please check the demo Glen linked  to.
>>>>
>>>> Sergey
>>>>
>>>> On Fri, Jan 21, 2011 at 4:08 AM, Glen Mazza<[email protected]>  wrote:
>>>>
>>>>  I  think ResponseReader, recently introduced in CXF 2.3.1, is your
>>>>>
>>>>  friend.
>>>
>>>> If you go to the Talend Service Factory (CXF wrap)  Examples[1], under
>>>>> examples/jaxrs-advanced/client/..../RESTClient.java,  method
>>>>>
>>>> useSimpleProxy()
>>>
>>>> has it.
>>>>>
>>>>> Glen
>>>>>
>>>>> [1]  http://www.talend.com/resources/documentation.php#SF
>>>>>
>>>>>
>>>>>  --
>>>>> Glen Mazza
>>>>> Software Engineer, Talend  (http://www.talend.com)
>>>>> blog:  http://www.jroller.com/gmazza
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>
> --
> Glen Mazza
> Software Engineer, Talend (http://www.talend.com)
> blog: http://www.jroller.com/gmazza
>
>
>

Reply via email to