public Object invoke(Object[] args, Request req, RestfulClientResponse resp) { ClientInvocation request = createRequest(args, req); ClientResponse response = (ClientResponse) request.invoke(); resp.setAttachments(RestfulUtil.decodeAttachments(response.getStringHeaders())); resp.setHttpResponse(response); ClientContext context = new ClientContext(request, response, entityExtractorFactory); return extractor.extractEntity(context); }
public ClientResponse extractEntity(ClientContext context, Object... args) { return context.getClientResponse(); } };
public EntityExtractor createExtractor(final Method method) { final Class returnType = method.getReturnType(); if (isVoidReturnType(returnType)) return createVoidExtractor(); if (returnType.equals(Response.Status.class)) return createStatusExtractor(true); if (Response.class.isAssignableFrom(returnType)) return clientResponseExtractor; if (returnType.isInterface() && returnType.isAnnotationPresent(ResponseObject.class)) return new ResponseObjectProxy(method, new ResponseObjectEntityExtractorFactory()); return new BodyEntityExtractor(method); }
public Object invoke(Object o, Method method, Object[] args) throws Throwable { // equals and hashCode were added for cases where the proxy is added to // collections. The Spring transaction management, for example, adds // transactional Resources to a Collection, and it calls equals and // hashCode. if (method.getName().equals("equals")) { return this.equals(o); } else if (method.getName().equals("hashCode")) { return this.hashCode(); } EntityExtractor entityExtractor = methodMap.get(method); if (entityExtractor == null) throw new RuntimeException(Messages.MESSAGES.couldNotProcessMethod(method)); return entityExtractor.extractEntity(context, entityExtractor, args); }
return createStatusExtractor(false); return new BodyEntityExtractor(method); if (link != null) return processLinkHeader(method, returnType, link);
public WebTarget extractEntity(ClientContext context, Object... args) { return context.getInvocation().getClient().target(getLink(link, context)); } };
public Object extractEntity(ClientContext context, Object... args) { Class<?>[] intfs = {returnType}; ClientResponseProxy clientProxy = new ClientResponseProxy(context, methodHandlers, returnType); return Proxy.newProxyInstance(returnType.getClassLoader(), intfs, clientProxy); }
public ResponseObjectProxy(final Method method, final EntityExtractorFactory extractorFactory) { this.returnType = (Class<T>) method.getReturnType(); this.methodHandlers = new HashMap<Method, EntityExtractor<?>>(); for (Method interfaceMethod : this.returnType.getMethods()) { this.methodHandlers.put(interfaceMethod, extractorFactory.createExtractor(interfaceMethod)); } }
private URL getURL(final Method method, final LinkHeaderParam link, ClientContext context) { URI uri = getURI(method, link, context); try { return uri == null ? null : uri.toURL(); } catch (MalformedURLException e) { throw new RuntimeException(Messages.MESSAGES.couldNotCreateURL(uri.toASCIIString(), method.getClass().getName(), method.getName()), e); } } }
protected Object invokeSync(Object[] args) { ClientInvocation request = createRequest(args); ClientResponse response = (ClientResponse)request.invoke(); ClientContext context = new ClientContext(request, response, entityExtractorFactory); return extractor.extractEntity(context); }
@Override public Response extractEntity(ClientContext context, Object... args) { return context.getClientResponse(); } };
public Invocation.Builder extractEntity(ClientContext context, Object... args) { return context.getInvocation().getClient().target(getLink(link, context)).request(); } };
public Integer extractEntity(ClientContext context, Object... args) { return context.getClientResponse().getStatus(); } };
private ClientInvoker createClientInvoker(ClientContext context, URI uri, Method method) { ClientInvoker clientInvoker = new ClientInvoker((ResteasyWebTarget)(context.getInvocation().getClient().target(uri)), method.getDeclaringClass(), method, new ProxyConfig(Thread.currentThread().getContextClassLoader(), null, null)); Set<String> httpMethods = IsHttpMethod.getHttpMethods(method); clientInvoker.setHttpMethod(httpMethods.iterator().next()); return clientInvoker; }
public Response.Status extractEntity(ClientContext context, Object... args) { if (release) context.getClientResponse().close(); return Response.Status.fromStatusCode(context.getClientResponse().getStatus()); } };
public Object extractEntity(ClientContext context, Object... args) { return context.getClientResponse().getHeaderString(headerParam.value()); } };
private Link getLink(final LinkHeaderParam link, ClientContext context) { return context.getClientResponse().getLink(link.rel()); }
public Object extractEntity(ClientContext context, Object... args) { ClientResponse response = context.getClientResponse(); int status = response.getStatus(); if (status >= 400) { response.bufferEntity(); response.close(); ClientInvocation.handleErrorStatus(response); } response.close(); return null; } };
public Object extractEntity(ClientContext context, Object... args) ClientResponse response = context.getClientResponse();