|
|
998de9f |
From 6483400667ee34972a392d7efef4eb817bec9862 Mon Sep 17 00:00:00 2001
|
|
|
82aede6 |
From: Mat Booth <mat.booth@redhat.com>
|
|
|
f789efe |
Date: Tue, 17 Nov 2020 10:32:54 +0000
|
|
|
82aede6 |
Subject: [PATCH 6/6] Remove dep on aether-connector
|
|
|
82aede6 |
|
|
|
82aede6 |
---
|
|
|
f789efe |
.../.factorypath | 3 -
|
|
|
f789efe |
.../org.eclipse.m2e.maven.runtime/pom.xml | 18 +-
|
|
|
82aede6 |
org.eclipse.m2e.core/META-INF/MANIFEST.MF | 2 +-
|
|
|
f789efe |
.../nexus/AetherClientResourceFetcher.java | 198 +++++++-----------
|
|
|
f789efe |
4 files changed, 79 insertions(+), 142 deletions(-)
|
|
|
82aede6 |
|
|
|
f789efe |
diff --git a/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/.factorypath b/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/.factorypath
|
|
|
f789efe |
index 72b8866..fe9f4ca 100644
|
|
|
f789efe |
--- a/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/.factorypath
|
|
|
f789efe |
+++ b/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/.factorypath
|
|
|
f789efe |
@@ -38,9 +38,6 @@
|
|
|
f789efe |
<factorypathentry kind="VARJAR" id="M2_REPO/org/eclipse/sisu/org.eclipse.sisu.plexus/0.3.4/org.eclipse.sisu.plexus-0.3.4.jar" enabled="true" runInBatchMode="false"/>
|
|
|
f789efe |
<factorypathentry kind="VARJAR" id="M2_REPO/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar" enabled="true" runInBatchMode="false"/>
|
|
|
f789efe |
<factorypathentry kind="VARJAR" id="M2_REPO/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar" enabled="true" runInBatchMode="false"/>
|
|
|
f789efe |
- <factorypathentry kind="VARJAR" id="M2_REPO/io/takari/aether/aether-connector-okhttp/0.17.8/aether-connector-okhttp-0.17.8.jar" enabled="true" runInBatchMode="false"/>
|
|
|
f789efe |
- <factorypathentry kind="VARJAR" id="M2_REPO/com/squareup/okhttp3/okhttp/3.14.1/okhttp-3.14.1.jar" enabled="true" runInBatchMode="false"/>
|
|
|
f789efe |
- <factorypathentry kind="VARJAR" id="M2_REPO/com/squareup/okio/okio/1.17.3/okio-1.17.3.jar" enabled="true" runInBatchMode="false"/>
|
|
|
f789efe |
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/resolver/maven-resolver-impl/1.4.1/maven-resolver-impl-1.4.1.jar" enabled="true" runInBatchMode="false"/>
|
|
|
f789efe |
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/resolver/maven-resolver-connector-basic/1.4.1/maven-resolver-connector-basic-1.4.1.jar" enabled="true" runInBatchMode="false"/>
|
|
|
f789efe |
<factorypathentry kind="VARJAR" id="M2_REPO/org/apache/maven/resolver/maven-resolver-transport-wagon/1.4.1/maven-resolver-transport-wagon-1.4.1.jar" enabled="true" runInBatchMode="false"/>
|
|
|
82aede6 |
diff --git a/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml b/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml
|
|
|
f789efe |
index 0ff5875..10b69ff 100644
|
|
|
82aede6 |
--- a/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml
|
|
|
82aede6 |
+++ b/m2e-maven-runtime/org.eclipse.m2e.maven.runtime/pom.xml
|
|
|
f789efe |
@@ -76,17 +76,6 @@
|
|
|
82aede6 |
<version>${plexus-build-api.version}</version>
|
|
|
82aede6 |
<optional>true</optional>
|
|
|
82aede6 |
</dependency>
|
|
|
82aede6 |
- <dependency>
|
|
|
82aede6 |
- <groupId>io.takari.aether</groupId>
|
|
|
82aede6 |
- <artifactId>aether-connector-okhttp</artifactId>
|
|
|
82aede6 |
- <version>${okhttp-connector.version}</version>
|
|
|
82aede6 |
- <exclusions>
|
|
|
82aede6 |
- <exclusion>
|
|
|
82aede6 |
- <groupId>org.eclipse.aether</groupId>
|
|
|
82aede6 |
- <artifactId>aether-util</artifactId>
|
|
|
82aede6 |
- </exclusion>
|
|
|
82aede6 |
- </exclusions>
|
|
|
82aede6 |
- </dependency>
|
|
|
82aede6 |
<dependency>
|
|
|
82aede6 |
<groupId>org.apache.maven.resolver</groupId>
|
|
|
82aede6 |
<artifactId>maven-resolver-impl</artifactId>
|
|
|
f789efe |
@@ -106,6 +95,10 @@
|
|
|
f789efe |
<groupId>org.apache.maven.wagon</groupId>
|
|
|
f789efe |
<artifactId>wagon-file</artifactId>
|
|
|
f789efe |
</dependency>
|
|
|
f789efe |
+ <dependency>
|
|
|
f789efe |
+ <groupId>org.apache.maven.wagon</groupId>
|
|
|
f789efe |
+ <artifactId>wagon-http</artifactId>
|
|
|
f789efe |
+ </dependency>
|
|
|
f789efe |
<dependency>
|
|
|
f789efe |
<groupId>org.fusesource.jansi</groupId>
|
|
|
f789efe |
<artifactId>jansi</artifactId>
|
|
|
f789efe |
@@ -143,8 +136,7 @@
|
|
|
82aede6 |
org.codehaus.plexus.*;provider=m2e,
|
|
|
82aede6 |
org.sonatype.plexus.*;provider=m2e,
|
|
|
82aede6 |
org.eclipse.aether.*;provider=m2e,
|
|
|
82aede6 |
- com.google.inject.*;provider=m2e,
|
|
|
82aede6 |
- io.takari.*;provider=m2e
|
|
|
82aede6 |
+ com.google.inject.*;provider=m2e
|
|
|
82aede6 |
</_exportcontents>
|
|
|
82aede6 |
|
|
|
82aede6 |
<Import-Package>
|
|
|
82aede6 |
diff --git a/org.eclipse.m2e.core/META-INF/MANIFEST.MF b/org.eclipse.m2e.core/META-INF/MANIFEST.MF
|
|
|
f789efe |
index 7f97012..6d8a47f 100644
|
|
|
82aede6 |
--- a/org.eclipse.m2e.core/META-INF/MANIFEST.MF
|
|
|
82aede6 |
+++ b/org.eclipse.m2e.core/META-INF/MANIFEST.MF
|
|
|
f789efe |
@@ -19,7 +19,7 @@ Require-Bundle: org.eclipse.osgi;bundle-version="3.10.0",
|
|
|
82aede6 |
com.google.guava;bundle-version="[20.0,29.0)"
|
|
|
82aede6 |
Bundle-ActivationPolicy: lazy
|
|
|
82aede6 |
Bundle-ClassPath: .
|
|
|
82aede6 |
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
|
|
82aede6 |
+Bundle-RequiredExecutionEnvironment: JavaSE-11
|
|
|
82aede6 |
Export-Package: org.eclipse.m2e.core,
|
|
|
82aede6 |
org.eclipse.m2e.core.archetype;x-friends:="org.eclipse.m2e.core.ui",
|
|
|
82aede6 |
org.eclipse.m2e.core.embedder,
|
|
|
82aede6 |
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/AetherClientResourceFetcher.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/AetherClientResourceFetcher.java
|
|
|
f789efe |
index b311824..b508478 100644
|
|
|
82aede6 |
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/AetherClientResourceFetcher.java
|
|
|
f789efe |
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/index/nexus/AetherClientResourceFetcher.java
|
|
|
f789efe |
@@ -15,21 +15,27 @@ package org.eclipse.m2e.core.internal.index.nexus;
|
|
|
f789efe |
|
|
|
f789efe |
import java.io.BufferedOutputStream;
|
|
|
f789efe |
import java.io.File;
|
|
|
f789efe |
+import java.io.FileInputStream;
|
|
|
f789efe |
import java.io.FileNotFoundException;
|
|
|
f789efe |
import java.io.FileOutputStream;
|
|
|
f789efe |
import java.io.IOException;
|
|
|
f789efe |
import java.io.InputStream;
|
|
|
f789efe |
import java.io.OutputStream;
|
|
|
82aede6 |
-import java.net.MalformedURLException;
|
|
|
82aede6 |
-import java.net.URL;
|
|
|
82aede6 |
-import java.security.NoSuchAlgorithmException;
|
|
|
82aede6 |
-import java.util.HashMap;
|
|
|
82aede6 |
-import java.util.Map;
|
|
|
82aede6 |
-
|
|
|
82aede6 |
-import javax.net.ssl.SSLContext;
|
|
|
82aede6 |
-
|
|
|
82aede6 |
-import org.slf4j.Logger;
|
|
|
82aede6 |
-import org.slf4j.LoggerFactory;
|
|
|
f789efe |
+import java.net.Authenticator;
|
|
|
f789efe |
+import java.net.InetSocketAddress;
|
|
|
f789efe |
+import java.net.PasswordAuthentication;
|
|
|
f789efe |
+import java.net.Proxy;
|
|
|
f789efe |
+import java.net.ProxySelector;
|
|
|
f789efe |
+import java.net.SocketAddress;
|
|
|
f789efe |
+import java.net.URI;
|
|
|
f789efe |
+import java.net.http.HttpClient;
|
|
|
f789efe |
+import java.net.http.HttpClient.Redirect;
|
|
|
f789efe |
+import java.net.http.HttpClient.Version;
|
|
|
f789efe |
+import java.net.http.HttpRequest;
|
|
|
f789efe |
+import java.net.http.HttpResponse;
|
|
|
f789efe |
+import java.net.http.HttpResponse.BodyHandlers;
|
|
|
f789efe |
+import java.time.Duration;
|
|
|
f789efe |
+import java.util.List;
|
|
|
f789efe |
|
|
|
f789efe |
import org.eclipse.core.runtime.IProgressMonitor;
|
|
|
f789efe |
import org.eclipse.core.runtime.NullProgressMonitor;
|
|
|
f789efe |
@@ -41,161 +47,103 @@ import org.apache.maven.wagon.proxy.ProxyInfo;
|
|
|
f789efe |
import org.apache.maven.wagon.proxy.ProxyUtils;
|
|
|
f789efe |
|
|
|
f789efe |
import org.eclipse.m2e.core.internal.MavenPluginActivator;
|
|
|
82aede6 |
-import org.eclipse.m2e.core.internal.Messages;
|
|
|
82aede6 |
-
|
|
|
82aede6 |
-import io.takari.aether.client.AetherClient;
|
|
|
82aede6 |
-import io.takari.aether.client.AetherClientAuthentication;
|
|
|
82aede6 |
-import io.takari.aether.client.AetherClientConfig;
|
|
|
82aede6 |
-import io.takari.aether.client.AetherClientProxy;
|
|
|
82aede6 |
-import io.takari.aether.client.Response;
|
|
|
82aede6 |
-import io.takari.aether.okhttp.OkHttpAetherClient;
|
|
|
f789efe |
|
|
|
f789efe |
|
|
|
f789efe |
public class AetherClientResourceFetcher implements ResourceFetcher {
|
|
|
f789efe |
|
|
|
82aede6 |
- private AetherClient aetherClient;
|
|
|
f789efe |
+ private HttpClient client;
|
|
|
f789efe |
|
|
|
82aede6 |
- private final AuthenticationInfo authInfo;
|
|
|
f789efe |
+ private Authenticator auth;
|
|
|
f789efe |
|
|
|
82aede6 |
- private final ProxyInfo proxyInfo;
|
|
|
f789efe |
+ private ProxySelector proxy;
|
|
|
f789efe |
|
|
|
82aede6 |
- private final String userAgent;
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- private final IProgressMonitor monitor;
|
|
|
f789efe |
+ private IProgressMonitor monitor;
|
|
|
f789efe |
|
|
|
f789efe |
private String baseUrl;
|
|
|
f789efe |
|
|
|
f789efe |
public AetherClientResourceFetcher(final AuthenticationInfo authInfo, final ProxyInfo proxyInfo,
|
|
|
f789efe |
final IProgressMonitor monitor) {
|
|
|
82aede6 |
- this.authInfo = authInfo;
|
|
|
82aede6 |
- this.proxyInfo = proxyInfo;
|
|
|
f789efe |
+ if(authInfo != null) {
|
|
|
f789efe |
+ auth = new Authenticator() {
|
|
|
f789efe |
+ @Override
|
|
|
f789efe |
+ protected PasswordAuthentication getPasswordAuthentication() {
|
|
|
f789efe |
+ return new PasswordAuthentication(authInfo.getUserName(), authInfo.getPassword().toCharArray());
|
|
|
f789efe |
+ }
|
|
|
f789efe |
+ };
|
|
|
f789efe |
+ }
|
|
|
f789efe |
+ proxy = new WagonProxySelector(proxyInfo);
|
|
|
f789efe |
this.monitor = (monitor != null) ? monitor : new NullProgressMonitor();
|
|
|
82aede6 |
- this.userAgent = MavenPluginActivator.getUserAgent();
|
|
|
f789efe |
}
|
|
|
f789efe |
|
|
|
82aede6 |
- public void connect(String id, String url) {
|
|
|
82aede6 |
- this.baseUrl = url;
|
|
|
82aede6 |
- aetherClient = new OkHttpAetherClient(
|
|
|
82aede6 |
- new AetherClientConfigAdapter(baseUrl, authInfo, proxyInfo, userAgent,
|
|
|
82aede6 |
- new HashMap<String, String>()));
|
|
|
f789efe |
+ public void connect(String id, String url) throws IOException {
|
|
|
f789efe |
+ baseUrl = url;
|
|
|
f789efe |
+ HttpClient.Builder builder = HttpClient.newBuilder().version(Version.HTTP_1_1).followRedirects(Redirect.NORMAL)
|
|
|
f789efe |
+ .connectTimeout(Duration.ofSeconds(10)).proxy(proxy);
|
|
|
f789efe |
+ if(auth != null) {
|
|
|
f789efe |
+ builder.authenticator(auth);
|
|
|
f789efe |
+ }
|
|
|
f789efe |
+ client = builder.build();
|
|
|
f789efe |
}
|
|
|
f789efe |
|
|
|
f789efe |
public void disconnect() throws IOException {
|
|
|
82aede6 |
- aetherClient.close();
|
|
|
f789efe |
}
|
|
|
f789efe |
|
|
|
82aede6 |
- @Deprecated
|
|
|
f789efe |
+ public InputStream retrieve(String name) throws IOException, FileNotFoundException {
|
|
|
f789efe |
+ final File target = File.createTempFile(name, "");
|
|
|
f789efe |
+ retrieve(name, target);
|
|
|
f789efe |
+ return new FileInputStream(target) {
|
|
|
f789efe |
+ @Override
|
|
|
f789efe |
+ public void close() throws IOException {
|
|
|
f789efe |
+ super.close();
|
|
|
f789efe |
+ target.delete();
|
|
|
f789efe |
+ }
|
|
|
f789efe |
+ };
|
|
|
f789efe |
+ }
|
|
|
f789efe |
+
|
|
|
f789efe |
public void retrieve(String name, File targetFile) throws IOException, FileNotFoundException {
|
|
|
82aede6 |
- String url = baseUrl + "/" + name;
|
|
|
82aede6 |
- try (Response response = aetherClient.get(url);
|
|
|
82aede6 |
- InputStream is = response.getInputStream();
|
|
|
82aede6 |
- OutputStream os = new BufferedOutputStream(new FileOutputStream(targetFile))) {
|
|
|
f789efe |
+ System.out.println();
|
|
|
f789efe |
+ System.out.println("Requesting: " + baseUrl + "/" + name);
|
|
|
f789efe |
+ HttpRequest request = HttpRequest.newBuilder().uri(URI.create(baseUrl + "/" + name)).timeout(Duration.ofMinutes(2))
|
|
|
f789efe |
+ .header("User-Agent", MavenPluginActivator.getUserAgent()).GET().build();
|
|
|
f789efe |
+ System.out.println(request.headers());
|
|
|
f789efe |
+ try (OutputStream os = new BufferedOutputStream(new FileOutputStream(targetFile))) {
|
|
|
f789efe |
+ HttpResponse<InputStream> response = client.send(request, BodyHandlers.ofInputStream());
|
|
|
f789efe |
+ System.out.println(response.headers());
|
|
|
f789efe |
final byte[] buffer = new byte[1024 * 1024];
|
|
|
f789efe |
int n = 0;
|
|
|
82aede6 |
- while(-1 != (n = is.read(buffer))) {
|
|
|
f789efe |
+ while(-1 != (n = response.body().read(buffer))) {
|
|
|
f789efe |
os.write(buffer, 0, n);
|
|
|
f789efe |
if(monitor.isCanceled()) {
|
|
|
f789efe |
throw new OperationCanceledException();
|
|
|
f789efe |
}
|
|
|
f789efe |
}
|
|
|
f789efe |
+ } catch(InterruptedException ex) {
|
|
|
f789efe |
+ throw new OperationCanceledException();
|
|
|
f789efe |
}
|
|
|
f789efe |
+ monitor.worked(1);
|
|
|
f789efe |
}
|
|
|
f789efe |
|
|
|
82aede6 |
- public InputStream retrieve(String name) throws IOException, FileNotFoundException {
|
|
|
82aede6 |
- String url = baseUrl + "/" + name;
|
|
|
82aede6 |
- Response response = aetherClient.get(url);
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- return response.getInputStream();
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- class AetherClientConfigAdapter extends AetherClientConfig {
|
|
|
82aede6 |
- private final Logger log = LoggerFactory.getLogger(AetherClientConfigAdapter.class);
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- int connectionTimeout;
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- int requestTimeout;
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- AuthenticationInfo authInfo;
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- ProxyInfo proxyInfo;
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- String userAgent;
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- String baseUrl;
|
|
|
f789efe |
+ static class WagonProxySelector extends ProxySelector {
|
|
|
f789efe |
|
|
|
82aede6 |
- Map<String, String> headers;
|
|
|
f789efe |
+ private ProxyInfo proxyInfo;
|
|
|
f789efe |
|
|
|
82aede6 |
- public AetherClientConfigAdapter(String baseUrl, AuthenticationInfo authInfo, ProxyInfo proxyInfo, String userAgent,
|
|
|
82aede6 |
- Map<String, String> headers) {
|
|
|
82aede6 |
- this.baseUrl = baseUrl;
|
|
|
82aede6 |
- this.authInfo = authInfo;
|
|
|
f789efe |
+ public WagonProxySelector(ProxyInfo proxyInfo) {
|
|
|
f789efe |
this.proxyInfo = proxyInfo;
|
|
|
82aede6 |
- this.userAgent = userAgent;
|
|
|
82aede6 |
- this.headers = headers;
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- try {
|
|
|
82aede6 |
- // ensure JVM's trust & key stores are used
|
|
|
82aede6 |
- setSslSocketFactory(SSLContext.getDefault().getSocketFactory());
|
|
|
82aede6 |
- } catch(NoSuchAlgorithmException ex) {
|
|
|
82aede6 |
- log.warn(Messages.AetherClientConfigAdapter_error_sslContext);
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- public String getUserAgent() {
|
|
|
82aede6 |
- return userAgent;
|
|
|
f789efe |
}
|
|
|
f789efe |
|
|
|
82aede6 |
- public int getConnectionTimeout() {
|
|
|
82aede6 |
- return connectionTimeout;
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- public int getRequestTimeout() {
|
|
|
82aede6 |
- return requestTimeout;
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- public AetherClientProxy getProxy() {
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- if(proxyInfo == null) {
|
|
|
82aede6 |
- return null;
|
|
|
f789efe |
+ public List<Proxy> select(URI uri) {
|
|
|
f789efe |
+ if(proxyInfo == null || ProxyUtils.validateNonProxyHosts(proxyInfo, uri.getHost())) {
|
|
|
f789efe |
+ return List.of(Proxy.NO_PROXY);
|
|
|
f789efe |
}
|
|
|
82aede6 |
- //Bug 512006 don't return the proxy for nonProxyHosts
|
|
|
82aede6 |
- try {
|
|
|
82aede6 |
- if(ProxyUtils.validateNonProxyHosts(proxyInfo, new URL(baseUrl).getHost())) {
|
|
|
82aede6 |
- return null;
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
- } catch(MalformedURLException ignore) {
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- return new AetherClientProxy() {
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- public String getHost() {
|
|
|
82aede6 |
- return proxyInfo.getHost();
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- public int getPort() {
|
|
|
82aede6 |
- return proxyInfo.getPort();
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- public AetherClientAuthentication getAuthentication() {
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- if(proxyInfo != null && proxyInfo.getUserName() != null && proxyInfo.getPassword() != null) {
|
|
|
82aede6 |
- return new AetherClientAuthentication(proxyInfo.getUserName(), proxyInfo.getPassword());
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
- return null;
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
- };
|
|
|
82aede6 |
- }
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- public AetherClientAuthentication getAuthentication() {
|
|
|
82aede6 |
-
|
|
|
82aede6 |
- if(authInfo != null) {
|
|
|
82aede6 |
- return new AetherClientAuthentication(authInfo.getUserName(), authInfo.getPassword());
|
|
|
82aede6 |
+ Proxy.Type type = Proxy.Type.HTTP;
|
|
|
82aede6 |
+ if(!proxyInfo.getType().equals(ProxyInfo.PROXY_HTTP)) {
|
|
|
82aede6 |
+ type = Proxy.Type.SOCKS;
|
|
|
f789efe |
}
|
|
|
f789efe |
- return null;
|
|
|
82aede6 |
+ Proxy p = new Proxy(type, new InetSocketAddress(proxyInfo.getHost(), proxyInfo.getPort()));
|
|
|
82aede6 |
+ return List.of(p);
|
|
|
f789efe |
}
|
|
|
82aede6 |
|
|
|
f789efe |
- public Map<String, String> getHeaders() {
|
|
|
f789efe |
- return headers;
|
|
|
f789efe |
+ public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
|
|
|
f789efe |
}
|
|
|
f789efe |
}
|
|
|
f789efe |
}
|
|
|
82aede6 |
--
|
|
|
f789efe |
2.28.0
|
|
|
82aede6 |
|