public HttpConversation getConversation() { return request.getConversation(); }
private void setEndPoint(EndPoint endPoint) { HttpConversation conversation = ((HttpRequest)request).getConversation(); conversation.setAttribute(EndPoint.class.getName(), endPoint); } }
private void forwardSuccessComplete(HttpRequest request, Response response) { HttpConversation conversation = request.getConversation(); conversation.updateResponseListeners(null); notifier.forwardSuccessComplete(conversation.getResponseListeners(), request, response); }
public HttpExchange(HttpDestination destination, HttpRequest request, List<Response.ResponseListener> listeners) { this.destination = destination; this.request = request; this.listeners = listeners; this.response = new HttpResponse(request, listeners); HttpConversation conversation = request.getConversation(); conversation.getExchanges().offer(this); conversation.updateResponseListeners(null); }
protected void fail(Request request, Response response, Throwable failure) { HttpConversation conversation = ((HttpRequest)request).getConversation(); conversation.updateResponseListeners(null); List<Response.ResponseListener> listeners = conversation.getResponseListeners(); notifier.notifyFailure(listeners, response, failure); notifier.notifyComplete(listeners, new Result(request, response, failure)); } }
private void forwardFailureComplete(HttpRequest request, Throwable requestFailure, Response response, Throwable responseFailure) { HttpConversation conversation = request.getConversation(); conversation.updateResponseListeners(null); List<Response.ResponseListener> responseListeners = conversation.getResponseListeners(); if (responseFailure == null) notifier.forwardSuccess(responseListeners, response); else notifier.forwardFailure(responseListeners, response, responseFailure); notifier.notifyComplete(responseListeners, new Result(request, requestFailure, response, responseFailure)); }
private Request redirect(Request request, Response response, Response.CompleteListener listener, URI location, String method) { HttpRequest httpRequest = (HttpRequest)request; HttpConversation conversation = httpRequest.getConversation(); Integer redirects = (Integer)conversation.getAttribute(ATTRIBUTE); if (redirects == null) redirects = 0; if (redirects < client.getMaxRedirects()) { ++redirects; conversation.setAttribute(ATTRIBUTE, redirects); return sendRedirect(httpRequest, response, listener, location, method); } else { fail(request, response, new HttpResponseException("Max redirects exceeded " + redirects, response)); return null; } }
HttpConnectionUpgrader upgrader = (HttpConnectionUpgrader) request.getConversation().getAttribute(HttpConnectionUpgrader.class.getName()); if (upgrader != null)
@Override public void onFailure(Response response, Throwable failure) { HttpConversation conversation = ((HttpRequest)response.getRequest()).getConversation(); // Mark the 100 Continue response as handled conversation.setAttribute(ATTRIBUTE, Boolean.TRUE); // Reset the conversation listeners to allow the conversation to be completed conversation.updateResponseListeners(null); HttpExchange exchange = conversation.getExchanges().peekLast(); assert exchange.getResponse() == response; List<Response.ResponseListener> listeners = exchange.getResponseListeners(); HttpContentResponse contentResponse = new HttpContentResponse(response, getContent(), getMediaType(), getEncoding()); notifier.forwardFailureComplete(listeners, exchange.getRequest(), exchange.getRequestFailure(), contentResponse, failure); }
@Override public void onSuccess(Response response) { // Handling of success must be done here and not from onComplete(), // since the onComplete() is not invoked because the request is not completed yet. Request request = response.getRequest(); HttpConversation conversation = ((HttpRequest)request).getConversation(); // Mark the 100 Continue response as handled request.attribute(ATTRIBUTE, Boolean.TRUE); // Reset the conversation listeners, since we are going to receive another response code conversation.updateResponseListeners(null); HttpExchange exchange = conversation.getExchanges().peekLast(); if (response.getStatus() == HttpStatus.CONTINUE_100) { // All good, continue. exchange.resetResponse(); exchange.proceed(null); onContinue(request); } else { // Server either does not support 100 Continue, // or it does and wants to refuse the request content, // or we got some other HTTP status code like a redirect. List<Response.ResponseListener> listeners = exchange.getResponseListeners(); HttpContentResponse contentResponse = new HttpContentResponse(response, getContent(), getMediaType(), getEncoding()); notifier.forwardSuccess(listeners, contentResponse); exchange.proceed(new HttpRequestException("Expectation failed", request)); } }
connect.scheme(HttpScheme.HTTPS.asString()); final HttpConversation conversation = ((HttpRequest)connect).getConversation(); conversation.setAttribute(EndPoint.class.getName(), endPoint);
protected Request copyRequest(HttpRequest oldRequest, URI newURI) Request newRequest = newHttpRequest(oldRequest.getConversation(), newURI); newRequest.method(oldRequest.getMethod()) .version(oldRequest.getVersion())
HttpConversation conversation = request.getConversation(); if (conversation.getAttribute(authenticationAttribute) != null)