< prev index next >

src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/HttpResponseImpl.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 26,97 **** package jdk.incubator.http; import java.io.IOException; import java.net.URI; import java.nio.ByteBuffer; import java.util.concurrent.CompletableFuture; import javax.net.ssl.SSLParameters; - import jdk.incubator.http.internal.common.Log; import jdk.incubator.http.internal.websocket.RawChannel; /** * The implementation class for HttpResponse */ class HttpResponseImpl<T> extends HttpResponse<T> implements RawChannel.Provider { final int responseCode; final Exchange<T> exchange; final HttpRequest initialRequest; ! final HttpRequestImpl finalRequest; final HttpHeaders headers; - //final HttpHeaders trailers; final SSLParameters sslParameters; final URI uri; final HttpClient.Version version; - //final AccessControlContext acc; RawChannel rawchan; final HttpConnection connection; final Stream<T> stream; final T body; public HttpResponseImpl(HttpRequest initialRequest, Response response, ! T body, Exchange<T> exch) { this.responseCode = response.statusCode(); this.exchange = exch; this.initialRequest = initialRequest; ! this.finalRequest = exchange.request(); this.headers = response.headers(); //this.trailers = trailers; ! this.sslParameters = exch.client().sslParameters().orElse(null); ! this.uri = finalRequest.uri(); this.version = response.version(); this.connection = exch.exchImpl.connection(); this.stream = null; this.body = body; } ! // A response to a PUSH_PROMISE ! public HttpResponseImpl(Response response, ! HttpRequestImpl pushRequest, ! ImmutableHeaders headers, ! Stream<T> stream, ! SSLParameters sslParameters, ! T body) { ! this.responseCode = response.statusCode(); ! this.exchange = null; ! this.initialRequest = null; // ## fix this ! this.finalRequest = pushRequest; ! this.headers = headers; ! //this.trailers = null; ! this.sslParameters = sslParameters; ! this.uri = finalRequest.uri(); // TODO: take from headers ! this.version = HttpClient.Version.HTTP_2; ! this.connection = stream.connection(); ! this.stream = stream; ! this.body = body; ! } private ExchangeImpl<?> exchangeImpl() { return exchange != null ? exchange.exchImpl : stream; } --- 26,98 ---- package jdk.incubator.http; import java.io.IOException; import java.net.URI; import java.nio.ByteBuffer; + import java.util.Optional; import java.util.concurrent.CompletableFuture; + import java.util.function.Supplier; import javax.net.ssl.SSLParameters; import jdk.incubator.http.internal.websocket.RawChannel; /** * The implementation class for HttpResponse */ class HttpResponseImpl<T> extends HttpResponse<T> implements RawChannel.Provider { final int responseCode; final Exchange<T> exchange; final HttpRequest initialRequest; ! final Optional<HttpResponse<T>> previousResponse; final HttpHeaders headers; final SSLParameters sslParameters; final URI uri; final HttpClient.Version version; RawChannel rawchan; final HttpConnection connection; final Stream<T> stream; final T body; public HttpResponseImpl(HttpRequest initialRequest, Response response, ! HttpResponse<T> previousResponse, ! T body, ! Exchange<T> exch) { this.responseCode = response.statusCode(); this.exchange = exch; this.initialRequest = initialRequest; ! this.previousResponse = Optional.ofNullable(previousResponse); this.headers = response.headers(); //this.trailers = trailers; ! this.sslParameters = exch.client().sslParameters(); ! this.uri = response.request().uri(); this.version = response.version(); this.connection = exch.exchImpl.connection(); this.stream = null; this.body = body; } ! // // A response to a PUSH_PROMISE ! // public HttpResponseImpl(Response response, ! // HttpRequestImpl pushRequest, ! // ImmutableHeaders headers, ! // Stream<T> stream, ! // SSLParameters sslParameters, ! // T body) { ! // this.responseCode = response.statusCode(); ! // this.exchange = null; ! // this.initialRequest = null; // ## fix this ! // this.finalRequest = pushRequest; ! // this.headers = headers; ! // //this.trailers = null; ! // this.sslParameters = sslParameters; ! // this.uri = finalRequest.uri(); // TODO: take from headers ! // this.version = HttpClient.Version.HTTP_2; ! // this.connection = stream.connection(); ! // this.stream = stream; ! // this.body = body; ! // } private ExchangeImpl<?> exchangeImpl() { return exchange != null ? exchange.exchImpl : stream; }
*** 104,115 **** public HttpRequest request() { return initialRequest; } @Override ! public HttpRequest finalRequest() { ! return finalRequest; } @Override public HttpHeaders headers() { return headers; --- 105,116 ---- public HttpRequest request() { return initialRequest; } @Override ! public Optional<HttpResponse<T>> previousResponse() { ! return previousResponse; } @Override public HttpHeaders headers() { return headers;
*** 160,192 **** // HTTP/2 connection. throw new UnsupportedOperationException("RawChannel is not supported over HTTP/2"); } // Http1Exchange may have some remaining bytes in its // internal buffer. ! final ByteBuffer remaining =((Http1Exchange<?>)exchImpl).getBuffer(); ! rawchan = new RawChannelImpl(exchange.client(), connection, remaining); } return rawchan; } @Override ! public CompletableFuture<HttpHeaders> trailers() { ! throw new UnsupportedOperationException("Not supported yet."); ! } ! ! static void logResponse(Response r) { ! if (!Log.requests()) { ! return; ! } StringBuilder sb = new StringBuilder(); ! String method = r.request().method(); ! URI uri = r.request().uri(); String uristring = uri == null ? "" : uri.toString(); sb.append('(') .append(method) .append(" ") .append(uristring) .append(") ") ! .append(r.statusCode()); ! Log.logResponse(sb.toString()); } } --- 161,186 ---- // HTTP/2 connection. throw new UnsupportedOperationException("RawChannel is not supported over HTTP/2"); } // Http1Exchange may have some remaining bytes in its // internal buffer. ! Supplier<ByteBuffer> initial = ((Http1Exchange<?>)exchImpl)::drainLeftOverBytes; ! rawchan = new RawChannelImpl(exchange.client(), connection, initial); } return rawchan; } @Override ! public String toString() { StringBuilder sb = new StringBuilder(); ! String method = request().method(); ! URI uri = request().uri(); String uristring = uri == null ? "" : uri.toString(); sb.append('(') .append(method) .append(" ") .append(uristring) .append(") ") ! .append(statusCode()); ! return sb.toString(); } }
< prev index next >