1313 */
1414package feign .http2client ;
1515
16+ import feign .Client ;
17+ import feign .Request ;
18+ import feign .Request .Options ;
19+ import feign .Response ;
20+ import feign .Util ;
1621import java .io .ByteArrayInputStream ;
1722import java .io .IOException ;
1823import java .net .URI ;
2631import java .net .http .HttpRequest .Builder ;
2732import java .net .http .HttpResponse ;
2833import java .net .http .HttpResponse .BodyHandlers ;
34+ import java .time .Duration ;
2935import java .util .*;
3036import java .util .function .Function ;
3137import java .util .stream .Collectors ;
32- import feign .*;
33- import feign .Request .Options ;
3438
3539public class Http2Client implements Client {
3640
@@ -49,12 +53,13 @@ public Http2Client(HttpClient client) {
4953
5054 @ Override
5155 public Response execute (Request request , Options options ) throws IOException {
52- final HttpRequest httpRequest = newRequestBuilder (request ).build ();
56+ final HttpRequest httpRequest = newRequestBuilder (request , options ).build ();
5357
5458 HttpResponse <byte []> httpResponse ;
5559 try {
5660 httpResponse = client .send (httpRequest , BodyHandlers .ofByteArray ());
5761 } catch (final InterruptedException e ) {
62+ Thread .currentThread ().interrupt ();
5863 throw new IOException ("Invalid uri " + request .url (), e );
5964 }
6065
@@ -71,7 +76,7 @@ public Response execute(Request request, Options options) throws IOException {
7176 return response ;
7277 }
7378
74- private Builder newRequestBuilder (Request request ) throws IOException {
79+ private Builder newRequestBuilder (Request request , Options options ) throws IOException {
7580 URI uri ;
7681 try {
7782 uri = new URI (request .url ());
@@ -89,6 +94,7 @@ private Builder newRequestBuilder(Request request) throws IOException {
8994
9095 final Builder requestBuilder = HttpRequest .newBuilder ()
9196 .uri (uri )
97+ .timeout (Duration .ofMillis (options .readTimeoutMillis ()))
9298 .version (Version .HTTP_2 );
9399
94100 final Map <String , Collection <String >> headers = filterRestrictedHeaders (request .headers ());
@@ -152,8 +158,7 @@ private String[] asString(Map<String, Collection<String>> headers) {
152158 .stream ()
153159 .map (value -> Arrays .asList (entry .getKey (), value ))
154160 .flatMap (List ::stream ))
155- .collect (Collectors .toList ())
156- .toArray (new String [0 ]);
161+ .toArray (String []::new );
157162 }
158163
159164}
0 commit comments