1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.index;
20
21 import java.io.IOException;
22 import java.io.InputStream;
23 import java.net.HttpURLConnection;
24 import java.net.URI;
25 import java.net.http.HttpClient;
26 import java.net.http.HttpRequest;
27 import java.net.http.HttpResponse;
28
29 import org.apache.maven.index.updater.ResourceFetcher;
30
31
32
33
34 public class Java11HttpClient implements ResourceFetcher {
35 private final HttpClient client =
36 HttpClient.newBuilder().followRedirects(HttpClient.Redirect.NEVER).build();
37
38 private URI uri;
39
40 @Override
41 public void connect(String id, String url) {
42 this.uri = URI.create(url + "/");
43 }
44
45 @Override
46 public void disconnect() {}
47
48 @Override
49 public InputStream retrieve(String name) throws IOException {
50 HttpRequest request =
51 HttpRequest.newBuilder().uri(uri.resolve(name)).GET().build();
52 try {
53 HttpResponse<InputStream> response = client.send(request, HttpResponse.BodyHandlers.ofInputStream());
54 if (response.statusCode() == HttpURLConnection.HTTP_OK) {
55 return response.body();
56 } else {
57 throw new IOException("Unexpected response: " + response);
58 }
59 } catch (InterruptedException e) {
60 Thread.currentThread().interrupt();
61 throw new IOException(e);
62 }
63 }
64 }