diff --git a/maven-resolver-api/src/main/java/org/eclipse/aether/transfer/TransferResource.java b/maven-resolver-api/src/main/java/org/eclipse/aether/transfer/TransferResource.java index cbe023072369058e5a33ce960b5479b54e9c7d0b..1fecdad2efa9bb3606bb9141cc71fda01da121b3 100644 --- a/maven-resolver-api/src/main/java/org/eclipse/aether/transfer/TransferResource.java +++ b/maven-resolver-api/src/main/java/org/eclipse/aether/transfer/TransferResource.java @@ -29,6 +29,8 @@ import org.eclipse.aether.RequestTrace; public final class TransferResource { + private final String repositoryId; + private final String repositoryUrl; private final String resourceName; @@ -45,16 +47,48 @@ public final class TransferResource /** * Creates a new transfer resource with the specified properties. - * + * + * @param repositoryUrl The base URL of the repository, may be {@code null} or empty if unknown. If not empty, a + * trailing slash will automatically be added if missing. + * @param resourceName The relative path to the resource within the repository, may be {@code null}. A leading slash + * (if any) will be automatically removed. + * @param file The source/target file involved in the transfer, may be {@code null}. + * @param trace The trace information, may be {@code null}. + * + * @deprecated As of 1.1.0, replaced by {@link #TransferResource(java.lang.String, java.lang.String, + * java.lang.String, java.io.File, org.eclipse.aether.RequestTrace)} + */ + @Deprecated + public TransferResource( String repositoryUrl, String resourceName, File file, RequestTrace trace ) + { + this( null, repositoryUrl, resourceName, file, trace ); + } + + /** + * Creates a new transfer resource with the specified properties. + * + * @param repositoryId The ID of the repository used to transfer the resource, may be {@code null} or empty if unknown. * @param repositoryUrl The base URL of the repository, may be {@code null} or empty if unknown. If not empty, a * trailing slash will automatically be added if missing. * @param resourceName The relative path to the resource within the repository, may be {@code null}. A leading slash * (if any) will be automatically removed. * @param file The source/target file involved in the transfer, may be {@code null}. * @param trace The trace information, may be {@code null}. + * + * @since 1.1.0 */ - public TransferResource( String repositoryUrl, String resourceName, File file, RequestTrace trace ) + public TransferResource( String repositoryId, String repositoryUrl, String resourceName, + File file, RequestTrace trace ) { + if ( repositoryId == null || repositoryId.length() <= 0 ) + { + this.repositoryId = ""; + } + else + { + this.repositoryId = repositoryId; + } + if ( repositoryUrl == null || repositoryUrl.length() <= 0 ) { this.repositoryUrl = ""; @@ -88,10 +122,22 @@ public final class TransferResource startTime = System.currentTimeMillis(); } + /** + * The ID of the repository, e.g., "central". + * + * @return The ID of the repository or an empty string if unknown, never {@code null}. + * + * @since 1.1.0 + */ + public String getRepositoryId() + { + return repositoryId; + } + /** * The base URL of the repository, e.g. "http://repo1.maven.org/maven2/". Unless the URL is unknown, it will be * terminated by a trailing slash. - * + * * @return The base URL of the repository or an empty string if unknown, never {@code null}. */ public String getRepositoryUrl() @@ -101,7 +147,7 @@ public final class TransferResource /** * The path of the resource relative to the repository's base URL, e.g. "org/apache/maven/maven/3.0/maven-3.0.pom". - * + * * @return The path of the resource, never {@code null}. */ public String getResourceName() @@ -112,7 +158,7 @@ public final class TransferResource /** * Gets the local file being uploaded or downloaded. When the repository system merely checks for the existence of a * remote resource, no local file will be involved in the transfer. - * + * * @return The source/target file involved in the transfer or {@code null} if none. */ public File getFile() @@ -124,7 +170,7 @@ public final class TransferResource * The size of the resource in bytes. Note that the size of a resource during downloads might be unknown to the * client which is usually the case when transfers employ compression like gzip. In general, the content length is * not known until the transfer has {@link TransferListener#transferStarted(TransferEvent) started}. - * + * * @return The size of the resource in bytes or a negative value if unknown. */ public long getContentLength() @@ -134,7 +180,7 @@ public final class TransferResource /** * Sets the size of the resource in bytes. - * + * * @param contentLength The size of the resource in bytes or a negative value if unknown. * @return This resource for chaining, never {@code null}. */ @@ -147,7 +193,7 @@ public final class TransferResource /** * Gets the byte offset within the resource from which the download starts. A positive offset indicates a previous * download attempt is being resumed, {@code 0} means the transfer starts at the first byte. - * + * * @return The zero-based index of the first byte being transferred, never negative. */ public long getResumeOffset() @@ -157,7 +203,7 @@ public final class TransferResource /** * Sets the byte offset within the resource at which the download starts. - * + * * @param resumeOffset The zero-based index of the first byte being transferred, must not be negative. * @return This resource for chaining, never {@code null}. */ @@ -173,7 +219,7 @@ public final class TransferResource /** * Gets the timestamp when the transfer of this resource was started. - * + * * @return The timestamp when the transfer of this resource was started. */ public long getTransferStartTime() @@ -184,7 +230,7 @@ public final class TransferResource /** * Gets the trace information that describes the higher level request/operation during which this resource is * transferred. - * + * * @return The trace information about the higher level operation or {@code null} if none. */ public RequestTrace getTrace() diff --git a/maven-resolver-api/src/test/java/org/eclipse/aether/transfer/TransferEventTest.java b/maven-resolver-api/src/test/java/org/eclipse/aether/transfer/TransferEventTest.java index 0ce6249b386eea236be5b6606facc551a27e45db..7d4c07065cb69ad51a886f1c969407daffc3310a 100644 --- a/maven-resolver-api/src/test/java/org/eclipse/aether/transfer/TransferEventTest.java +++ b/maven-resolver-api/src/test/java/org/eclipse/aether/transfer/TransferEventTest.java @@ -34,7 +34,7 @@ import org.junit.Test; public class TransferEventTest { - private static TransferResource res = new TransferResource( "file://nil", "void", null, null ); + private static TransferResource res = new TransferResource( "none", "file://nil", "void", null, null ); private static RepositorySystemSession session = new DefaultRepositorySystemSession(); diff --git a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java index 27f22858870f0422b3c2fe966a1dfd8c584add60..4d8a8cfea9464db05702c760dbd4932f3a8bf133 100644 --- a/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java +++ b/maven-resolver-connector-basic/src/main/java/org/eclipse/aether/connector/basic/BasicRepositoryConnector.java @@ -305,7 +305,7 @@ final class BasicRepositoryConnector private TransferResource newTransferResource( URI path, File file, RequestTrace trace ) { - return new TransferResource( repository.getUrl(), path.toString(), file, trace ); + return new TransferResource( repository.getId(), repository.getUrl(), path.toString(), file, trace ); } private TransferEvent.Builder newEventBuilder( TransferResource resource, boolean upload, boolean peek ) diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java index 82318e5dd06a3b69736f39aad091e2d4a47ce27d..542e3eae3d240b085450349bbb2ca7c48dd655fb 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/DefaultChecksumPolicyProviderTest.java @@ -51,7 +51,7 @@ public class DefaultChecksumPolicyProviderTest session = TestUtils.newSession(); provider = new DefaultChecksumPolicyProvider(); repository = new RemoteRepository.Builder( "test", "default", "file:/void" ).build(); - resource = new TransferResource( repository.getUrl(), "file.txt", null, null ); + resource = new TransferResource( repository.getId(), repository.getUrl(), "file.txt", null, null ); } @After diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java index f36e0a02408368b1ab5ab2f75df7001799ec4c28..296f8296818d0be268f7874dfef7e5f49dfd8a7c 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/FailChecksumPolicyTest.java @@ -37,7 +37,7 @@ public class FailChecksumPolicyTest @Before public void setup() { - policy = new FailChecksumPolicy( null, new TransferResource( "file:/dev/null", "file.txt", null, null ) ); + policy = new FailChecksumPolicy( null, new TransferResource( "null", "file:/dev/null", "file.txt", null, null ) ); exception = new ChecksumFailureException( "test" ); } diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryConnector.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryConnector.java index bbb78bf4ad68bab495dc406892a2e88f351194c9..80a347ac9a8046f2876d39de57e44409559c635b 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryConnector.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/RecordingRepositoryConnector.java @@ -194,7 +194,7 @@ class RecordingRepositoryConnector return; } TransferEvent.Builder event = - new TransferEvent.Builder( session, new TransferResource( null, null, null, transfer.getTrace() ) ); + new TransferEvent.Builder( session, new TransferResource( null, null, null, null, transfer.getTrace() ) ); event.setType( TransferEvent.EventType.INITIATED ); listener.transferInitiated( event.build() ); } @@ -208,7 +208,7 @@ class RecordingRepositoryConnector return; } TransferEvent.Builder event = - new TransferEvent.Builder( session, new TransferResource( null, null, null, transfer.getTrace() ) ); + new TransferEvent.Builder( session, new TransferResource( null, null, null, null, transfer.getTrace() ) ); event.setException( transfer.getException() ); if ( transfer.getException() != null ) { diff --git a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java index 78fd8079d530fd483f0884e9909f7fdeefa4d203..7f64e062b8beb41f371a8b35e449f4e4462e5e95 100644 --- a/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java +++ b/maven-resolver-impl/src/test/java/org/eclipse/aether/internal/impl/WarnChecksumPolicyTest.java @@ -37,7 +37,7 @@ public class WarnChecksumPolicyTest @Before public void setup() { - policy = new WarnChecksumPolicy( null, new TransferResource( "file:/dev/null", "file.txt", null, null ) ); + policy = new WarnChecksumPolicy( null, new TransferResource( "null", "file:/dev/null", "file.txt", null, null ) ); exception = new ChecksumFailureException( "test" ); }