On 05/06/2013 20:48, Luciano Resende wrote:
On Tue, Jun 4, 2013 at 6:52 AM, Francesco Chicchiriccò <[email protected] <mailto:[email protected]>> wrote:

    On 04/06/2013 10:36, Francesco Chicchiriccň wrote:

        Hi all,
        I am currently evaluating Wink for a new project.

        I have been playing around with some samples and it seems
        linear to me.
        I am not completely convinced, however, of async usage; this
        is how I have managed to get it working:

                AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
                RestClient client = new RestClient(new
        AsyncHttpClientConfiguration(asyncHttpClient));

                Resource resource =
        
client.resource("http://services.odata.org/v3/(S(sn4zeecdefwvblk2xxlk425x))/OData/OData.svc/Products
        
<http://services.odata.org/v3/%28S%28sn4zeecdefwvblk2xxlk425x%29%29/OData/OData.svc/Products>");

                AtomFeed feed =
        
resource.contentType("application/atom+xml").accept("application/atom+xml").get(AtomFeed.class);
                asyncHttpClient.close();

                for (AtomEntry entry : feed.getEntries()) {
                    System.out.println(entry.getTitle().getValue());
                }

        Is this the correct usage? Isn't there any way to get
        something like Future<AtomFeed> instead?

        Moreover, I was also looking for a way to get an InputStream
        out of a response, to delay processing: is this possible?


    I guess I've found (this seems to work):

            RestClient client = new RestClient(new
    ApacheHttpClientConfig(new DefaultHttpClient()));

            Resource resource =
    client.resource("http://localhost:8080/Northwind/Northwind.svc/Categories(1)
    <http://localhost:8080/Northwind/Northwind.svc/Categories%281%29>");

            ClientResponse response =
    resource.accept(MediaType.APPLICATION_ATOM_XML).get();
            InputStream is = response.getEntity(InputStream.class);
            System.out.println("********* " + response.getStatusCode());
            StringWriter writer = new StringWriter();
            IOUtils.copy(is, writer);
            System.out.println(writer.toString());

    I have also been able to create an entry (e.g. POST) only
    providing InputStream: definitely nice.

    I'll keep investigating for the Future<T> stuff...


It would be great if you could provide some extra documentation on our wiki or any enhanced examples.

Hi Luciano,
what kind of documentation are you thinking about? Could you also provide some coordinate under which I should create a new page / update an existing page? My ASF confluence userid is 'ilgrosso', BTW.

About the Future<T> investigation, I've developed a quick example using Commons HttpAsyncClient 4.0-beta4 [1]: it looks more like a hack, but it works more or less this way:

RestClient client = new RestClient(new ApacheHttpAsyncClientConfig());

        Resource resource =
client.resource("http://services.odata.org/v3/(S(sn4zeecdefwvblk2xxlk425x))/OData/OData.svc/Products");
FutureClientResponse response = (FutureClientResponse) resource.accept(MediaType.APPLICATION_ATOM_XML).get();

        System.out.println("XXXXXXXXXXX " + response.isDone());

        AtomFeed feed = response.get().getEntity(AtomFeed.class);

e.g. FutureClientResponse implements both Future<ClientResponse> and ClientResponse

I am not fully satisfied of this result (explicit cast to FutureClientResponse, for example...) but it proves at least that it could be done.

A possible cleaner extension is to add a new Resource#get() (similar to what CXF does [2]), but I am not familiar at all with Wink's internals...

As soon as I found enough spare time, I'll push my sample to github.
Keep you posted.

Regards.

[1] http://hc.apache.org/httpcomponents-asyncclient-dev/
[2] http://cxf.apache.org/javadoc/latest/org/apache/cxf/jaxrs/client/WebClient.html#get(javax.ws.rs.client.InvocationCallback)

--
Francesco Chicchiriccò

ASF Member, Apache Syncope PMC chair, Apache Cocoon PMC Member
http://people.apache.org/~ilgrosso/

Reply via email to