From d8a383bd4f1e461f1d020c511fb3326e30f0eb65 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Fri, 10 Oct 2025 16:17:28 +0200 Subject: [PATCH 1/2] Add test for HTTP compression support Disable for now for Java Http Client This relates to #1620 --- .../internal/test/util/http/HttpTransporterTest.java | 12 ++++++++++++ .../aether/transport/jdk/JdkTransporterTest.java | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java b/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java index 776bcc381..920922e07 100644 --- a/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java +++ b/maven-resolver-test-http/src/main/java/org/eclipse/aether/internal/test/util/http/HttpTransporterTest.java @@ -184,6 +184,7 @@ protected void setUp(TestInfo testInfo) throws Exception { factory = transporterFactorySupplier.get(); repoDir = TestFileUtils.createTempDir(); TestFileUtils.writeString(new File(repoDir, "file.txt"), "test"); + TestFileUtils.writeString(new File(repoDir, "artifact.pom"), "pom"); TestFileUtils.writeString(new File(repoDir, "dir/file.txt"), "test"); TestFileUtils.writeString(new File(repoDir, "dir/oldFile.txt"), "oldTest", OLD_FILE_TIMESTAMP); TestFileUtils.writeString(new File(repoDir, "empty.txt"), ""); @@ -391,6 +392,17 @@ protected void testGet_ToFileTimestamp() throws Exception { assertEquals(OLD_FILE_TIMESTAMP, file.lastModified()); } + @Test + protected void testGet_CompressionUsedWithPom() throws Exception { + File file = TestFileUtils.createTempFile("pom"); + GetTask task = new GetTask(URI.create("repo/artifact.pom")).setDataPath(file.toPath()); + transporter.get(task); + String acceptEncoding = httpServer.getLogEntries().get(0).getHeaders().get("Accept-Encoding"); + assertNotNull(acceptEncoding, "Missing Accept-Encoding header when retrieving pom"); + // support either gzip or deflate as the transporter implementation may vary + assertTrue(acceptEncoding.contains("gzip") || acceptEncoding.contains("deflate")); + } + @Test protected void testGet_EmptyResource() throws Exception { File file = TestFileUtils.createTempFile("failure"); diff --git a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java index aaa168296..9f9a08b94 100644 --- a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java +++ b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java @@ -89,6 +89,11 @@ protected void testPut_Authenticated_ExpectContinueRejected_ExplicitlyConfigured @Test protected void testRequestTimeout() throws Exception {} + @Override + @Disabled("https://github.com/apache/maven-resolver/issues/1620") + @Test + protected void testGet_CompressionUsedWithPom() throws Exception {} + public JdkTransporterTest() { super(() -> new JdkTransporterFactory(standardChecksumExtractor(), new DefaultPathProcessor())); } From 3489304537d49bdc8bc4931c7d7747f0d74e14d9 Mon Sep 17 00:00:00 2001 From: Konrad Windszus Date: Fri, 10 Oct 2025 16:25:28 +0200 Subject: [PATCH 2/2] Use Methanol for support of response compression https://mizosoft.github.io/methanol/decompression/ This closes #1620 --- .../maven-resolver-transport-jdk-11/pom.xml | 5 +++++ .../org/eclipse/aether/transport/jdk/JdkTransporter.java | 3 ++- .../org/eclipse/aether/transport/jdk/JdkTransporterTest.java | 5 ----- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/pom.xml b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/pom.xml index 3c18dc77c..c61ac14c5 100644 --- a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/pom.xml +++ b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/pom.xml @@ -53,6 +53,11 @@ org.apache.maven.resolver maven-resolver-util + + com.github.mizosoft.methanol + methanol + 1.8.3 + javax.inject javax.inject diff --git a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporter.java b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporter.java index 7029762e8..a6b2854f0 100644 --- a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporter.java +++ b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/main/java/org/eclipse/aether/transport/jdk/JdkTransporter.java @@ -61,6 +61,7 @@ import java.util.function.Supplier; import java.util.regex.Matcher; +import com.github.mizosoft.methanol.Methanol; import org.eclipse.aether.ConfigurationProperties; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.repository.AuthenticationContext; @@ -485,7 +486,7 @@ public X509Certificate[] getAcceptedIssuers() { } } - HttpClient.Builder builder = HttpClient.newBuilder() + HttpClient.Builder builder = Methanol.newBuilder() .version(HttpClient.Version.valueOf(ConfigUtils.getString( session, DEFAULT_HTTP_VERSION, diff --git a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java index 9f9a08b94..aaa168296 100644 --- a/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java +++ b/maven-resolver-transport-jdk-parent/maven-resolver-transport-jdk-11/src/test/java/org/eclipse/aether/transport/jdk/JdkTransporterTest.java @@ -89,11 +89,6 @@ protected void testPut_Authenticated_ExpectContinueRejected_ExplicitlyConfigured @Test protected void testRequestTimeout() throws Exception {} - @Override - @Disabled("https://github.com/apache/maven-resolver/issues/1620") - @Test - protected void testGet_CompressionUsedWithPom() throws Exception {} - public JdkTransporterTest() { super(() -> new JdkTransporterFactory(standardChecksumExtractor(), new DefaultPathProcessor())); }