You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2024/04/16 08:28:58 UTC
(maven-resolver) branch master updated: [MRESOLVER-536] Cleanup redundancy and support FS without TS support (#468)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
The following commit(s) were added to refs/heads/master by this push:
new c7e41893 [MRESOLVER-536] Cleanup redundancy and support FS without TS support (#468)
c7e41893 is described below
commit c7e41893d66fbb33e85c274293003ee25cc736eb
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Tue Apr 16 10:28:52 2024 +0200
[MRESOLVER-536] Cleanup redundancy and support FS without TS support (#468)
Centralize method and apply some common logic.
---
https://issues.apache.org/jira/browse/MRESOLVER-536
---
.../supplier/SupplierRepositorySystemFactory.java | 4 ++-
.../internal/impl/DefaultArtifactResolver.java | 4 +--
.../aether/internal/impl/DefaultInstaller.java | 4 +--
.../aether/internal/impl/DefaultPathProcessor.java | 5 ---
.../org/eclipse/aether/spi/io/PathProcessor.java | 41 +++++++++++++++++++++-
.../aether/supplier/RepositorySystemSupplier.java | 4 ++-
.../aether/supplier/RepositorySystemSupplier.java | 4 ++-
.../internal/test/util/TestPathProcessor.java | 4 ---
.../aether/transport/apache/ApacheTransporter.java | 13 +++++--
.../transport/apache/ApacheTransporterFactory.java | 8 +++--
.../transport/apache/ApacheTransporterTest.java | 3 +-
.../aether/transport/jdk/JdkTransporter.java | 7 ++--
.../aether/transport/jetty/JettyTransporter.java | 18 +++++-----
.../transport/jetty/JettyTransporterFactory.java | 8 +++--
.../transport/jetty/JettyTransporterTest.java | 3 +-
15 files changed, 90 insertions(+), 40 deletions(-)
diff --git a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/supplier/SupplierRepositorySystemFactory.java b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/supplier/SupplierRepositorySystemFactory.java
index 412f0a9a..0d618e7f 100644
--- a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/supplier/SupplierRepositorySystemFactory.java
+++ b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/supplier/SupplierRepositorySystemFactory.java
@@ -93,7 +93,9 @@ public class SupplierRepositorySystemFactory {
result.put(
JdkTransporterFactory.NAME,
new JdkTransporterFactory(getChecksumExtractor(), getPathProcessor()));
- result.put(JettyTransporterFactory.NAME, new JettyTransporterFactory(getChecksumExtractor()));
+ result.put(
+ JettyTransporterFactory.NAME,
+ new JettyTransporterFactory(getChecksumExtractor(), getPathProcessor()));
return result;
}
}.get();
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
index 15e10145..cee23036 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultArtifactResolver.java
@@ -26,7 +26,6 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
-import java.nio.file.attribute.FileTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -455,8 +454,7 @@ public class DefaultArtifactResolver implements ArtifactResolver {
boolean copy = pathProcessor.size(dst, 0L) != pathProcessor.size(path, 0L)
|| pathProcessor.lastModified(dst, 0L) != pathLastModified;
if (copy) {
- pathProcessor.copy(path, dst);
- Files.setLastModifiedTime(dst, FileTime.fromMillis(pathLastModified));
+ pathProcessor.copyWithTimestamp(path, dst);
}
} catch (IOException e) {
throw new ArtifactTransferException(artifact, null, e);
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java
index 5ac182c2..7f6cf4d8 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultInstaller.java
@@ -22,7 +22,6 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
-import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
import java.util.ArrayList;
@@ -197,8 +196,7 @@ public class DefaultInstaller implements Installer {
throw new IllegalStateException("cannot install " + dstPath + " to same path");
}
- pathProcessor.copy(srcPath, dstPath);
- Files.setLastModifiedTime(dstPath, Files.getLastModifiedTime(srcPath));
+ pathProcessor.copyWithTimestamp(srcPath, dstPath);
lrm.add(session, new LocalArtifactRegistration(artifact));
} catch (Exception e) {
exception = e;
diff --git a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultPathProcessor.java b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultPathProcessor.java
index b3af35bb..0b8c9298 100644
--- a/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultPathProcessor.java
+++ b/maven-resolver-impl/src/main/java/org/eclipse/aether/internal/impl/DefaultPathProcessor.java
@@ -47,11 +47,6 @@ public class DefaultPathProcessor implements PathProcessor {
FileUtils.writeFile(target, p -> Files.copy(source, p, StandardCopyOption.REPLACE_EXISTING));
}
- @Override
- public void copy(Path source, Path target) throws IOException {
- copy(source, target, null);
- }
-
@Override
public long copy(Path source, Path target, ProgressListener listener) throws IOException {
try (InputStream in = new BufferedInputStream(Files.newInputStream(source));
diff --git a/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/io/PathProcessor.java b/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/io/PathProcessor.java
index 9b28ec2d..424386e0 100644
--- a/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/io/PathProcessor.java
+++ b/maven-resolver-spi/src/main/java/org/eclipse/aether/spi/io/PathProcessor.java
@@ -20,9 +20,11 @@ package org.eclipse.aether.spi.io;
import java.io.*;
import java.nio.ByteBuffer;
+import java.nio.file.FileSystemException;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
+import java.nio.file.attribute.FileTime;
/**
* A utility component to perform file-based operations.
@@ -46,6 +48,26 @@ public interface PathProcessor {
}
}
+ /**
+ * Sets last modified of path in milliseconds, if exists.
+ *
+ * @param path The path, may be {@code null}.
+ * @throws UncheckedIOException If an I/O error occurs.
+ * @return {@code true} if timestamp was successfully set, {@code false} otherwise. Reasons of {@code false} may
+ * be multiple, from file not found, to FS not supporting the setting the TS.
+ * @since TBD
+ */
+ default boolean setLastModified(Path path, long value) {
+ try {
+ Files.setLastModifiedTime(path, FileTime.fromMillis(value));
+ return true;
+ } catch (FileSystemException e) {
+ return false; // not found Ex belongs here as well
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
+ }
+
/**
* Returns size of file, if exists.
*
@@ -101,7 +123,24 @@ public interface PathProcessor {
* @param target The file to copy to, must not be {@code null}.
* @throws IOException If an I/O error occurs.
*/
- void copy(Path source, Path target) throws IOException;
+ default void copy(Path source, Path target) throws IOException {
+ copy(source, target, null);
+ }
+
+ /**
+ * Same as {@link #copy(Path, Path)} but sets source file last modified timestamp on target as well.
+ *
+ * @param source The file to copy from, must not be {@code null}.
+ * @param target The file to copy to, must not be {@code null}.
+ * @throws IOException If an I/O error occurs.
+ * @return {@code true} if timestamp was successfully set, {@code false} otherwise.
+ * @see #setLastModified(Path, long)
+ * @since TBD
+ */
+ default boolean copyWithTimestamp(Path source, Path target) throws IOException {
+ copy(source, target, null);
+ return setLastModified(target, Files.getLastModifiedTime(source).toMillis());
+ }
/**
* Copies the specified source file to the given target file. Creates the necessary directories for the target file.
diff --git a/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java b/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
index 5016462a..e851f786 100644
--- a/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
+++ b/maven-resolver-supplier-mvn3/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
@@ -615,7 +615,9 @@ public class RepositorySystemSupplier implements Supplier<RepositorySystem> {
protected Map<String, TransporterFactory> createTransporterFactories() {
HashMap<String, TransporterFactory> result = new HashMap<>();
result.put(FileTransporterFactory.NAME, new FileTransporterFactory());
- result.put(ApacheTransporterFactory.NAME, new ApacheTransporterFactory(getChecksumExtractor()));
+ result.put(
+ ApacheTransporterFactory.NAME,
+ new ApacheTransporterFactory(getChecksumExtractor(), getPathProcessor()));
return result;
}
diff --git a/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java b/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
index cc2f994c..10ed0606 100644
--- a/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
+++ b/maven-resolver-supplier-mvn4/src/main/java/org/eclipse/aether/supplier/RepositorySystemSupplier.java
@@ -611,7 +611,9 @@ public class RepositorySystemSupplier implements Supplier<RepositorySystem> {
protected Map<String, TransporterFactory> createTransporterFactories() {
HashMap<String, TransporterFactory> result = new HashMap<>();
result.put(FileTransporterFactory.NAME, new FileTransporterFactory());
- result.put(ApacheTransporterFactory.NAME, new ApacheTransporterFactory(getChecksumExtractor()));
+ result.put(
+ ApacheTransporterFactory.NAME,
+ new ApacheTransporterFactory(getChecksumExtractor(), getPathProcessor()));
return result;
}
diff --git a/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestPathProcessor.java b/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestPathProcessor.java
index 0a263c88..b3e3e935 100644
--- a/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestPathProcessor.java
+++ b/maven-resolver-test-util/src/main/java/org/eclipse/aether/internal/test/util/TestPathProcessor.java
@@ -45,10 +45,6 @@ public class TestPathProcessor implements PathProcessor {
testFileProcessor.write(target.toFile(), source);
}
- public void copy(Path source, Path target) throws IOException {
- copy(source, target, null);
- }
-
public long copy(Path source, Path target, ProgressListener listener) throws IOException {
return testFileProcessor.copy(source.toFile(), target.toFile(), null);
}
diff --git a/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/ApacheTransporter.java b/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/ApacheTransporter.java
index 4ca9707f..4a1cb463 100644
--- a/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/ApacheTransporter.java
+++ b/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/ApacheTransporter.java
@@ -31,7 +31,6 @@ import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
-import java.nio.file.attribute.FileTime;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
@@ -95,6 +94,7 @@ import org.eclipse.aether.spi.connector.transport.TransportTask;
import org.eclipse.aether.spi.connector.transport.http.ChecksumExtractor;
import org.eclipse.aether.spi.connector.transport.http.HttpTransporter;
import org.eclipse.aether.spi.connector.transport.http.HttpTransporterException;
+import org.eclipse.aether.spi.io.PathProcessor;
import org.eclipse.aether.transfer.NoTransporterException;
import org.eclipse.aether.transfer.TransferCancelledException;
import org.eclipse.aether.util.ConfigUtils;
@@ -120,6 +120,8 @@ final class ApacheTransporter extends AbstractTransporter implements HttpTranspo
private final ChecksumExtractor checksumExtractor;
+ private final PathProcessor pathProcessor;
+
private final AuthenticationContext repoAuthContext;
private final AuthenticationContext proxyAuthContext;
@@ -143,12 +145,17 @@ final class ApacheTransporter extends AbstractTransporter implements HttpTranspo
private final boolean supportWebDav;
@SuppressWarnings("checkstyle:methodlength")
- ApacheTransporter(RemoteRepository repository, RepositorySystemSession session, ChecksumExtractor checksumExtractor)
+ ApacheTransporter(
+ RemoteRepository repository,
+ RepositorySystemSession session,
+ ChecksumExtractor checksumExtractor,
+ PathProcessor pathProcessor)
throws NoTransporterException {
if (!"http".equalsIgnoreCase(repository.getProtocol()) && !"https".equalsIgnoreCase(repository.getProtocol())) {
throw new NoTransporterException(repository);
}
this.checksumExtractor = checksumExtractor;
+ this.pathProcessor = pathProcessor;
try {
this.baseUri = new URI(repository.getUrl()).parseServerAuthority();
if (baseUri.isOpaque()) {
@@ -672,7 +679,7 @@ final class ApacheTransporter extends AbstractTransporter implements HttpTranspo
if (lastModifiedHeader != null) {
Date lastModified = DateUtils.parseDate(lastModifiedHeader.getValue());
if (lastModified != null) {
- Files.setLastModifiedTime(task.getDataPath(), FileTime.fromMillis(lastModified.getTime()));
+ pathProcessor.setLastModified(task.getDataPath(), lastModified.getTime());
}
}
}
diff --git a/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/ApacheTransporterFactory.java b/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/ApacheTransporterFactory.java
index 73fd4b9e..14c076f4 100644
--- a/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/ApacheTransporterFactory.java
+++ b/maven-resolver-transport-apache/src/main/java/org/eclipse/aether/transport/apache/ApacheTransporterFactory.java
@@ -26,6 +26,7 @@ import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.spi.connector.transport.http.ChecksumExtractor;
import org.eclipse.aether.spi.connector.transport.http.HttpTransporter;
import org.eclipse.aether.spi.connector.transport.http.HttpTransporterFactory;
+import org.eclipse.aether.spi.io.PathProcessor;
import org.eclipse.aether.transfer.NoTransporterException;
import static java.util.Objects.requireNonNull;
@@ -42,9 +43,12 @@ public final class ApacheTransporterFactory implements HttpTransporterFactory {
private final ChecksumExtractor checksumExtractor;
+ private final PathProcessor pathProcessor;
+
@Inject
- public ApacheTransporterFactory(ChecksumExtractor checksumExtractor) {
+ public ApacheTransporterFactory(ChecksumExtractor checksumExtractor, PathProcessor pathProcessor) {
this.checksumExtractor = requireNonNull(checksumExtractor, "checksumExtractor");
+ this.pathProcessor = requireNonNull(pathProcessor, "pathProcessor");
}
@Override
@@ -69,6 +73,6 @@ public final class ApacheTransporterFactory implements HttpTransporterFactory {
requireNonNull(session, "session cannot be null");
requireNonNull(repository, "repository cannot be null");
- return new ApacheTransporter(repository, session, checksumExtractor);
+ return new ApacheTransporter(repository, session, checksumExtractor, pathProcessor);
}
}
diff --git a/maven-resolver-transport-apache/src/test/java/org/eclipse/aether/transport/apache/ApacheTransporterTest.java b/maven-resolver-transport-apache/src/test/java/org/eclipse/aether/transport/apache/ApacheTransporterTest.java
index a3a8d2ed..f468e42a 100644
--- a/maven-resolver-transport-apache/src/test/java/org/eclipse/aether/transport/apache/ApacheTransporterTest.java
+++ b/maven-resolver-transport-apache/src/test/java/org/eclipse/aether/transport/apache/ApacheTransporterTest.java
@@ -27,6 +27,7 @@ import org.apache.http.pool.PoolStats;
import org.eclipse.aether.ConfigurationProperties;
import org.eclipse.aether.DefaultRepositoryCache;
import org.eclipse.aether.internal.test.util.TestFileUtils;
+import org.eclipse.aether.internal.test.util.TestPathProcessor;
import org.eclipse.aether.internal.test.util.http.HttpTransporterTest;
import org.eclipse.aether.internal.test.util.http.RecordingTransportListener;
import org.eclipse.aether.spi.connector.transport.GetTask;
@@ -42,7 +43,7 @@ import static org.junit.jupiter.api.Assertions.*;
class ApacheTransporterTest extends HttpTransporterTest {
public ApacheTransporterTest() {
- super(() -> new ApacheTransporterFactory(standardChecksumExtractor()));
+ super(() -> new ApacheTransporterFactory(standardChecksumExtractor(), new TestPathProcessor()));
}
@Test
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 77a2312d..6287ff6c 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
@@ -32,7 +32,6 @@ import java.net.http.HttpResponse;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
-import java.nio.file.attribute.FileTime;
import java.security.cert.X509Certificate;
import java.time.Duration;
import java.time.Instant;
@@ -304,11 +303,11 @@ final class JdkTransporter extends AbstractTransporter implements HttpTransporte
.orElse(null); // note: Wagon also does first not last
if (lastModifiedHeader != null) {
try {
- Files.setLastModifiedTime(
+ pathProcessor.setLastModified(
task.getDataPath(),
- FileTime.fromMillis(ZonedDateTime.parse(lastModifiedHeader, RFC7231)
+ ZonedDateTime.parse(lastModifiedHeader, RFC7231)
.toInstant()
- .toEpochMilli()));
+ .toEpochMilli());
} catch (DateTimeParseException e) {
// fall through
}
diff --git a/maven-resolver-transport-jetty/src/main/java/org/eclipse/aether/transport/jetty/JettyTransporter.java b/maven-resolver-transport-jetty/src/main/java/org/eclipse/aether/transport/jetty/JettyTransporter.java
index 107dda51..9dd46127 100644
--- a/maven-resolver-transport-jetty/src/main/java/org/eclipse/aether/transport/jetty/JettyTransporter.java
+++ b/maven-resolver-transport-jetty/src/main/java/org/eclipse/aether/transport/jetty/JettyTransporter.java
@@ -27,9 +27,7 @@ import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
-import java.nio.file.attribute.FileTime;
import java.security.cert.X509Certificate;
-import java.time.format.DateTimeParseException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -52,6 +50,7 @@ import org.eclipse.aether.spi.connector.transport.TransportTask;
import org.eclipse.aether.spi.connector.transport.http.ChecksumExtractor;
import org.eclipse.aether.spi.connector.transport.http.HttpTransporter;
import org.eclipse.aether.spi.connector.transport.http.HttpTransporterException;
+import org.eclipse.aether.spi.io.PathProcessor;
import org.eclipse.aether.transfer.NoTransporterException;
import org.eclipse.aether.transfer.TransferCancelledException;
import org.eclipse.aether.util.ConfigUtils;
@@ -85,6 +84,8 @@ final class JettyTransporter extends AbstractTransporter implements HttpTranspor
private final ChecksumExtractor checksumExtractor;
+ private final PathProcessor pathProcessor;
+
private final URI baseUri;
private final HttpClient client;
@@ -101,9 +102,14 @@ final class JettyTransporter extends AbstractTransporter implements HttpTranspor
private final BasicAuthentication.BasicResult basicProxyAuthenticationResult;
- JettyTransporter(RepositorySystemSession session, RemoteRepository repository, ChecksumExtractor checksumExtractor)
+ JettyTransporter(
+ RepositorySystemSession session,
+ RemoteRepository repository,
+ ChecksumExtractor checksumExtractor,
+ PathProcessor pathProcessor)
throws NoTransporterException {
this.checksumExtractor = checksumExtractor;
+ this.pathProcessor = pathProcessor;
try {
URI uri = new URI(repository.getUrl()).parseServerAuthority();
if (uri.isOpaque()) {
@@ -300,11 +306,7 @@ final class JettyTransporter extends AbstractTransporter implements HttpTranspor
long lastModified =
response.getHeaders().getDateField(LAST_MODIFIED); // note: Wagon also does first not last
if (lastModified != -1) {
- try {
- Files.setLastModifiedTime(task.getDataPath(), FileTime.fromMillis(lastModified));
- } catch (DateTimeParseException e) {
- // fall through
- }
+ pathProcessor.setLastModified(task.getDataPath(), lastModified);
}
}
Map<String, String> checksums = checksumExtractor.extractChecksums(headerGetter(response));
diff --git a/maven-resolver-transport-jetty/src/main/java/org/eclipse/aether/transport/jetty/JettyTransporterFactory.java b/maven-resolver-transport-jetty/src/main/java/org/eclipse/aether/transport/jetty/JettyTransporterFactory.java
index 901d82d7..83ecafce 100644
--- a/maven-resolver-transport-jetty/src/main/java/org/eclipse/aether/transport/jetty/JettyTransporterFactory.java
+++ b/maven-resolver-transport-jetty/src/main/java/org/eclipse/aether/transport/jetty/JettyTransporterFactory.java
@@ -26,6 +26,7 @@ import org.eclipse.aether.repository.RemoteRepository;
import org.eclipse.aether.spi.connector.transport.http.ChecksumExtractor;
import org.eclipse.aether.spi.connector.transport.http.HttpTransporter;
import org.eclipse.aether.spi.connector.transport.http.HttpTransporterFactory;
+import org.eclipse.aether.spi.io.PathProcessor;
import org.eclipse.aether.transfer.NoTransporterException;
import static java.util.Objects.requireNonNull;
@@ -43,9 +44,12 @@ public final class JettyTransporterFactory implements HttpTransporterFactory {
private final ChecksumExtractor checksumExtractor;
+ private final PathProcessor pathProcessor;
+
@Inject
- public JettyTransporterFactory(ChecksumExtractor checksumExtractor) {
+ public JettyTransporterFactory(ChecksumExtractor checksumExtractor, PathProcessor pathProcessor) {
this.checksumExtractor = requireNonNull(checksumExtractor, "checksumExtractor");
+ this.pathProcessor = requireNonNull(pathProcessor, "pathProcessor");
}
@Override
@@ -68,6 +72,6 @@ public final class JettyTransporterFactory implements HttpTransporterFactory {
throw new NoTransporterException(repository);
}
- return new JettyTransporter(session, repository, checksumExtractor);
+ return new JettyTransporter(session, repository, checksumExtractor, pathProcessor);
}
}
diff --git a/maven-resolver-transport-jetty/src/test/java/org/eclipse/aether/transport/jetty/JettyTransporterTest.java b/maven-resolver-transport-jetty/src/test/java/org/eclipse/aether/transport/jetty/JettyTransporterTest.java
index 483f203f..67b3c976 100644
--- a/maven-resolver-transport-jetty/src/test/java/org/eclipse/aether/transport/jetty/JettyTransporterTest.java
+++ b/maven-resolver-transport-jetty/src/test/java/org/eclipse/aether/transport/jetty/JettyTransporterTest.java
@@ -18,6 +18,7 @@
*/
package org.eclipse.aether.transport.jetty;
+import org.eclipse.aether.internal.test.util.TestPathProcessor;
import org.eclipse.aether.internal.test.util.http.HttpTransporterTest;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@@ -58,6 +59,6 @@ class JettyTransporterTest extends HttpTransporterTest {
protected void testPut_Authenticated_ExpectContinueRejected_ExplicitlyConfiguredHeader() {}
public JettyTransporterTest() {
- super(() -> new JettyTransporterFactory(standardChecksumExtractor()));
+ super(() -> new JettyTransporterFactory(standardChecksumExtractor(), new TestPathProcessor()));
}
}