/** * Create a new WebResource from this web resource with an additional * query parameter added to the URI of this web resource. * * @param key the query parameter name * @param value the query parameter value * @return the new web resource. */ public AsyncWebResource queryParam(String key, String value) { UriBuilder b = getUriBuilder(); b.queryParam(key, value); return new AsyncWebResource(this, b); }
/** * Sets WebResource related property. * * @param property property identifier. * @param value value of given property. */ public void setProperty(String property, Object value) { this.getProperties().put(property, value); }
private <T> Future<T> handle(final Class<T> c, final ClientRequest request) { setProperties(request); final FutureClientResponseListener<T> ftw = new FutureClientResponseListener<T>() { protected T get(ClientResponse response) { if (c == ClientResponse.class) return c.cast(response); if (response.getStatus() < 300) return response.getEntity(c); throw new UniformInterfaceException(response, request.getPropertyAsFeature(ClientConfig.PROPERTY_BUFFER_RESPONSE_ENTITY_ON_EXCEPTION, true)); } }; ftw.setCancelableFuture(handle(request, ftw)); return ftw; }
public Future<?> put() throws UniformInterfaceException { return voidHandle(new ClientRequestImpl(getURI(), "PUT", null)); }
public Builder acceptLanguage(String... locales) { return getRequestBuilder().acceptLanguage(locales); }
/** * Create an asynchronous Web resource from the client. * * @param u the URI of the resource. * @return the Web resource. */ public AsyncWebResource asyncResource(URI u) { return new AsyncWebResource(this, this.properties, u); }
public ClientResponse call() throws Exception { return getHeadHandler().handle(request); } };
public Future<ClientResponse> handle(final ClientRequest request, final FutureListener<ClientResponse> l) { setProperties(request); Callable<ClientResponse> c = new Callable<ClientResponse>() { public ClientResponse call() throws Exception { return getHeadHandler().handle(request); } }; FutureTask<ClientResponse> ft = new FutureTask<ClientResponse>(c) { @Override protected void done() { try { l.onComplete(this); } catch (Throwable t) { LOGGER.log(Level.SEVERE, "Throwable caught on call to ClientResponseListener.onComplete", t); } } }; executorService.submit(ft); return ft; } }
@Override public void downloadString(URL uri, boolean isSecondRetry, final IDownloadListener listener) { AsyncWebResource target = Client.create().asyncResource(uri.toString()); AsyncWebResource.Builder request = target.accept(MediaType.WILDCARD); request.get(new TypeListener<ClientResponse>(ClientResponse.class) { public void onComplete(Future<ClientResponse> f) { int status = 0; ClientResponse clientResponse = null; try { clientResponse = f.get(); status = clientResponse.getStatus(); if (status > 300) { logger.verbose("Got response status code - " + status); listener.onDownloadFailed(); return; } InputStream entityInputStream = clientResponse.getEntityInputStream(); StringWriter writer = new StringWriter(); IOUtils.copy(entityInputStream, writer, "UTF-8"); String theString = writer.toString(); listener.onDownloadComplete(theString); } catch (Exception e) { GeneralUtils.logExceptionStackTrace(e); logger.verbose("Failed to parse request(status= " + status + ") = "+ clientResponse.getEntity(String.class)); listener.onDownloadFailed(); } } }); }
public Future<?> post(Object requestEntity) throws UniformInterfaceException { return voidHandle(new ClientRequestImpl(getURI(), "POST", requestEntity)); }
private <T> Future<T> handle(final Class<T> c, final ClientRequest request) { setProperties(request); final FutureClientResponseListener<T> ftw = new FutureClientResponseListener<T>() { protected T get(ClientResponse response) { if (c == ClientResponse.class) return c.cast(response); if (response.getStatus() < 300) return response.getEntity(c); throw new UniformInterfaceException(response, request.getPropertyAsFeature(ClientConfig.PROPERTY_BUFFER_RESPONSE_ENTITY_ON_EXCEPTION, true)); } }; ftw.setCancelableFuture(handle(request, ftw)); return ftw; }
public Builder header(String name, Object value) { return getRequestBuilder().header(name, value); }
/** * Create an asynchronous Web resource from the client. * * @param u the URI of the resource. * @return the Web resource. */ public AsyncWebResource asyncResource(URI u) { return new AsyncWebResource(this, this.properties, u); }
public ClientResponse call() throws Exception { return getHeadHandler().handle(request); } };
public Future<ClientResponse> handle(final ClientRequest request, final FutureListener<ClientResponse> l) { setProperties(request); Callable<ClientResponse> c = new Callable<ClientResponse>() { public ClientResponse call() throws Exception { return getHeadHandler().handle(request); } }; FutureTask<ClientResponse> ft = new FutureTask<ClientResponse>(c) { @Override protected void done() { try { l.onComplete(this); } catch (Throwable t) { LOGGER.log(Level.SEVERE, "Throwable caught on call to ClientResponseListener.onComplete", t); } } }; executorService.submit(ft); return ft; } }
public Future<?> post() throws UniformInterfaceException { return voidHandle(new ClientRequestImpl(getURI(), "POST")); }
/** * Create a new AsyncWebResource from this web resource with an additional path * added to the URI of this web resource. * <p> * Any filters on this web resource are inherited. Removal of filters * may cause undefined behaviour. * * @param path the additional path. * * @return the new web resource. */ public AsyncWebResource path(String path) { return new AsyncWebResource(this, getUriBuilder().path(path)); }
private Future<?> voidHandle(final ClientRequest request) { setProperties(request); final FutureClientResponseListener<?> ftw = new FutureClientResponseListener() { protected Object get(ClientResponse response) { if (response.getStatus() >= 300) throw new UniformInterfaceException(response, request.getPropertyAsFeature(ClientConfig.PROPERTY_BUFFER_RESPONSE_ENTITY_ON_EXCEPTION, true)); response.close(); return null; } }; ftw.setCancelableFuture(handle(request, ftw)); return ftw; }