diff --git a/mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporter.java b/mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporter.java index 1722f1f..4b276f1 100644 --- a/mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporter.java +++ b/mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporter.java @@ -73,12 +73,16 @@ import org.eclipse.jetty.http3.client.HTTP3Client; import org.eclipse.jetty.http3.client.transport.HttpClientTransportOverHTTP3; import org.eclipse.jetty.util.ssl.SslContextFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * A transporter for HTTP/HTTPS. */ final class HttpTransporter extends AbstractTransporter { + static final Logger LOGGER = LoggerFactory.getLogger("http3.plugin"); + private final static Set CENTRAL = Set.of( "repo.maven.apache.org", "oss.sonatype.org", @@ -114,7 +118,7 @@ final class HttpTransporter extends AbstractTransporter { } this.checksumExtractors = requireNonNull(checksumExtractors, "checksum extractors must not be null"); try { - System.err.println("\tCustom HttpTransporter repo: " + repository.toString()); + LOGGER.debug("Custom HttpTransporter repo: {}", repository); this.baseUri = new URI(repository.getUrl() + "/").normalize().parseServerAuthority(); if (baseUri.isOpaque()) { throw new URISyntaxException(repository.getUrl(), "URL must not be opaque"); @@ -293,24 +297,23 @@ private Pair makeRequest( }).body(bodyContent).send(listener); final Response response = listener.get(this.connectTimeout, TimeUnit.MILLISECONDS); if (response.getStatus() >= 300) { - System.err.printf( - "Request over %s error status %s, method=%s, url=%s%n", + LOGGER.debug( + "{} request error status {}, method={}, url={}", version, response.getStatus(), method, url ); throw new HttpResponseException(Integer.toString(response.getStatus()), response); } - System.err.printf( - "Request over %s done, method=%s, resp status=%s, url=%s%n", - version, method, response.getStatus(), url + LOGGER.debug( + "{} request done, method={}, resp status={}, url={}", version, method, response.getStatus(), url ); return new ImmutablePair<>(listener.getInputStream(), response.getHeaders()); } catch (Exception ex) { - System.err.printf( - "Request over %s error=%s: %s, method=%s, url=%s%n", version, + LOGGER.debug( + "{} request error={}: {}, method={}, url={}", version, ex.getClass(), ex.getMessage(), method, url ); if (version == HttpVersion.HTTP_3 && ex instanceof TimeoutException) { - System.err.printf("Repeat request over HTTP/1.1 method=%s, url=%s%n", method, url); + LOGGER.debug("Repeat via HTTP/1.1 method={}, url={}", method, url); return this.makeRequest(method, task, bodyContent, this.initOrGetHttpClient()); } throw new HttpRequestException(ex.getMessage(), request); @@ -354,7 +357,7 @@ private HttpVersion httpVersion(final HttpClient client) { * @throws IllegalAccessException */ private void forceLoadHttp3Support() throws NoSuchFieldException, IllegalAccessException { - System.err.println("Custom HttpTransporter.forceLoadHttp3Support() called!"); + LOGGER.debug("Custom HttpTransporter.forceLoadHttp3Support() called!"); // Checking http3 support is available (loaded) PreEncodedHttpField f = new PreEncodedHttpField("Host", "localhost"); for (final HttpVersion v: HttpVersion.values()) { @@ -369,47 +372,20 @@ private void forceLoadHttp3Support() throws NoSuchFieldException, IllegalAccessE // TODO: Force http3 initialization (HACK!) final ServiceLoader load = ServiceLoader.load(HttpFieldPreEncoder.class,PreEncodedHttpField.class.getClassLoader()); - /*ServiceLoader load = null; - ClassLoader saveCl = Thread.currentThread().getContextClassLoader(); - try { - Thread.currentThread().setContextClassLoader(PreEncodedHttpField.class.getClassLoader()); - load = ServiceLoader.load(HttpFieldPreEncoder.class); - }finally { - Thread.currentThread().setContextClassLoader(saveCl); - }*/ - - /*System.err.println("\tCustom HttpTransporter ServiceLoader=" + load); - Stream> providerStream = TypeUtil.serviceProviderStream(load); - System.err.println("\tCustom HttpTransporter Stream> = " + providerStream); - ArrayList calls = new ArrayList<>(); - providerStream.forEach((provider) -> { - try { - calls.add(calls.size()); - HttpFieldPreEncoder encoder = (HttpFieldPreEncoder)provider.get(); - HttpVersion v = encoder.getHttpVersion(); - System.err.println("\tCustom HttpTransporter HttpFieldPreEncoder: encoder=" + encoder + "; ver=" + v); - } catch (RuntimeException | Error var3) { - System.err.println("\tCustom HttpTransporter Error processing encoder: " + provider.get()); - } - }); - System.err.println("\tCustom HttpTransporter providerStream calls=" + calls.size());*/ - HashMap encoders = new HashMap<>(); for (HttpFieldPreEncoder val: load) { - //System.err.println("\tCustom HttpTransporter HttpFieldPreEncoder val=" + val); + LOGGER.debug("Custom HttpTransporter HttpFieldPreEncoder val={}", val); encoders.put(val.getHttpVersion(), val); } Field ff = PreEncodedHttpField.class.getDeclaredField("__encoders"); ff.setAccessible(true); - String fldDescr = ff.get(null).toString(); - //System.err.println("\tCustom HttpTransporter __encoders BEFORE: " + fldDescr + "; this=" + this); @SuppressWarnings("unchecked") EnumMap obj = (EnumMap)ff.get(null); if (encoders.containsKey(HttpVersion.HTTP_3) && !obj.containsKey(HttpVersion.HTTP_3)) { - //System.err.println("\tCustom HttpTransporter adding to __encoders: " + obj + "; this=" + this); + LOGGER.debug("Custom HttpTransporter adding to __encoders: {}, this = {}", obj, this); obj.put(HttpVersion.HTTP_3, encoders.get(HttpVersion.HTTP_3)); } - //System.err.println("\tCustom HttpTransporter __encoders AFTER: " + obj + "; this=" + this); + LOGGER.debug("Custom HttpTransporter __encoders AFTER: {}; this={}", obj, this); // Rechecking http3 support is available (loaded) f = new PreEncodedHttpField("Host", "localhost"); @@ -420,7 +396,7 @@ private void forceLoadHttp3Support() throws NoSuchFieldException, IllegalAccessE } catch (Exception ex) { len = -1; } - //System.err.println("\tCustom HttpTransporter PreEncodedHttpField v=" + v + "; len=" + len); + LOGGER.debug("Custom HttpTransporter PreEncodedHttpField v={}; len={}", v, len); } } } diff --git a/mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporterFactory.java b/mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporterFactory.java index 7f87629..516f473 100644 --- a/mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporterFactory.java +++ b/mvn-resolver-transport-http3/src/main/java/com/artipie/aether/transport/http3/HttpTransporterFactory.java @@ -90,7 +90,7 @@ public Transporter newInstance(RepositorySystemSession session, RemoteRepository throws NoTransporterException { requireNonNull(session, "session cannot be null"); requireNonNull(repository, "repository cannot be null"); - System.err.println("Custom HttpTransporterFactory created!!!"); + HttpTransporter.LOGGER.debug("Custom HttpTransporterFactory created!!!"); try { return new HttpTransporter(extractors, repository, session); } catch (Exception e) { diff --git a/mvn-resolver-transport-http3/src/main/resources/log4j.properties b/mvn-resolver-transport-http3/src/main/resources/log4j.properties index fd8860a..25282f2 100644 --- a/mvn-resolver-transport-http3/src/main/resources/log4j.properties +++ b/mvn-resolver-transport-http3/src/main/resources/log4j.properties @@ -6,4 +6,5 @@ log4j.appender.CONSOLE.layout.ConversionPattern=[%p] %c - %m%n log4j2.formatMsgNoLookups=True +log4j.logger.http3.plugin=DEBUG log4j.logger.com.artipie=DEBUG \ No newline at end of file diff --git a/mvn-resolver-transport-http3/src/test/java/com/artipie/aether/transport/http3/ArtipieAndLocalPluginHTTP3IT.java b/mvn-resolver-transport-http3/src/test/java/com/artipie/aether/transport/http3/ArtipieAndLocalPluginHTTP3IT.java index 8c39183..92b76ec 100644 --- a/mvn-resolver-transport-http3/src/test/java/com/artipie/aether/transport/http3/ArtipieAndLocalPluginHTTP3IT.java +++ b/mvn-resolver-transport-http3/src/test/java/com/artipie/aether/transport/http3/ArtipieAndLocalPluginHTTP3IT.java @@ -35,14 +35,15 @@ */ public class ArtipieAndLocalPluginHTTP3IT { - private static final Logger LOGGER = LoggerFactory.getLogger(ArtipieAndLocalPluginHTTP3IT.class); + private static final Logger LOGGER = LoggerFactory.getLogger("ArtipieAndLocalPluginHTTP3IT"); private GenericContainer mavenClient; private GenericContainer artipie; private final Consumer artipieLog = - new Slf4jLogConsumer(LoggerFactory.getLogger(this.getClass())).withPrefix("ARTIPIE"); + new Slf4jLogConsumer(LoggerFactory.getLogger("ArtipieAndLocalPluginHTTP3IT")) + .withPrefix("ARTIPIE"); private Network net; @@ -74,7 +75,7 @@ void resolvesDependencies() throws IOException, InterruptedException { this.putClasspathResourceToClient("com/example/maven-http3/maven-settings.xml", "/w/settings.xml"); this.putClasspathResourceToClient("com/example/maven-http3/pom.xml", "/w/pom.xml"); final Container.ExecResult exec = this.mavenClient.execInContainer( - "mvn", "install", "-s", "settings.xml", "-Daether.connector.https.securityMode=insecure" + "mvn", "install", "-X", "-s", "settings.xml", "-Daether.connector.https.securityMode=insecure" ); String res = String.join("\n", exec.getStdout(), exec.getStderr()); LOGGER.info(res); @@ -82,9 +83,9 @@ void resolvesDependencies() throws IOException, InterruptedException { MatcherAssert.assertThat( res, Matchers.stringContainsInOrder( - "BUILD SUCCESS", - "Request over HTTP/3.0 done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/args4j/args4j/2.33/args4j-2.33.jar", - "Request over HTTP/3.0 done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/org/springframework/spring-web/6.1.0/spring-web-6.1.0.jar" + "HTTP/3.0 request done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/args4j/args4j/2.33/args4j-2.33.jar", + "HTTP/3.0 request done, method=GET, resp status=200, url=https://artipie:8091/my-maven-proxy/org/springframework/spring-web/6.1.0/spring-web-6.1.0.jar", + "BUILD SUCCESS" ) ); }