diff --git a/.changes/next-release/bugfix-S3TransferManager-2f34394.json b/.changes/next-release/bugfix-S3TransferManager-2f34394.json new file mode 100644 index 000000000000..c36c5269f4b2 --- /dev/null +++ b/.changes/next-release/bugfix-S3TransferManager-2f34394.json @@ -0,0 +1,6 @@ +{ + "category": "S3 Transfer Manager", + "contributor": "", + "type": "bugfix", + "description": "A couple of minor refactoring on the S3TransferManager. 1. `CompletedDirectoryUpload#failedTransfers` now returns `List` instead of `Collection`. 2. `UploadDirectoryOverrideConfiguration#uploadFileRequestTransformer` now returns `Consumer` instead of `Optional>` it will be no-op if no uploadFileRequestTransformer is provided" +} diff --git a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryDownload.java b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryDownload.java index 9784177486a0..159487059a6c 100644 --- a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryDownload.java +++ b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryDownload.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Objects; import software.amazon.awssdk.annotations.SdkPreviewApi; import software.amazon.awssdk.annotations.SdkPublicApi; @@ -38,15 +39,15 @@ public final class CompletedDirectoryDownload implements CompletedDirectoryTrans ToCopyableBuilder { - private final Collection failedTransfers; + private final List failedTransfers; private CompletedDirectoryDownload(DefaultBuilder builder) { - this.failedTransfers = Collections.unmodifiableCollection( + this.failedTransfers = Collections.unmodifiableList( new ArrayList<>(Validate.paramNotNull(builder.failedTransfers, "failedTransfers"))); } @Override - public Collection failedTransfers() { + public List failedTransfers() { return failedTransfers; } diff --git a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryTransfer.java b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryTransfer.java index f0ab9be05caf..e050fc08822c 100644 --- a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryTransfer.java +++ b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryTransfer.java @@ -15,7 +15,7 @@ package software.amazon.awssdk.transfer.s3; -import java.util.Collection; +import java.util.List; import software.amazon.awssdk.annotations.SdkPreviewApi; import software.amazon.awssdk.annotations.SdkPublicApi; @@ -34,5 +34,5 @@ public interface CompletedDirectoryTransfer extends CompletedTransfer { * * @return an immutable list of failed transfers */ - Collection failedTransfers(); + List failedTransfers(); } diff --git a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryUpload.java b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryUpload.java index bdc8f9d27c38..7c144b8a9c7d 100644 --- a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryUpload.java +++ b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/CompletedDirectoryUpload.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.List; import java.util.Objects; import software.amazon.awssdk.annotations.SdkPreviewApi; import software.amazon.awssdk.annotations.SdkPublicApi; @@ -38,15 +39,15 @@ public final class CompletedDirectoryUpload implements CompletedDirectoryTransfe ToCopyableBuilder { - private final Collection failedTransfers; + private final List failedTransfers; private CompletedDirectoryUpload(DefaultBuilder builder) { - this.failedTransfers = Collections.unmodifiableCollection( + this.failedTransfers = Collections.unmodifiableList( new ArrayList<>(Validate.paramNotNull(builder.failedTransfers, "failedTransfers"))); } @Override - public Collection failedTransfers() { + public List failedTransfers() { return failedTransfers; } diff --git a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/DownloadDirectoryOverrideConfiguration.java b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/DownloadDirectoryOverrideConfiguration.java index db9162cde6be..e6f18e8054f6 100644 --- a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/DownloadDirectoryOverrideConfiguration.java +++ b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/DownloadDirectoryOverrideConfiguration.java @@ -16,7 +16,6 @@ package software.amazon.awssdk.transfer.s3; import java.util.Objects; -import java.util.Optional; import java.util.function.Consumer; import software.amazon.awssdk.annotations.SdkPreviewApi; import software.amazon.awssdk.annotations.SdkPublicApi; @@ -45,11 +44,11 @@ private DownloadDirectoryOverrideConfiguration(DefaultBuilder builder) { } /** - * @return the optional download request transformer + * @return the download request transformer if not null, otherwise no-op * @see DownloadDirectoryOverrideConfiguration.Builder#downloadFileRequestTransformer(Consumer) */ - public Optional> downloadFileRequestTransformer() { - return Optional.ofNullable(downloadFileRequestTransformer); + public Consumer downloadFileRequestTransformer() { + return downloadFileRequestTransformer == null ? ignore -> { } : downloadFileRequestTransformer; } @Override diff --git a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/UploadDirectoryOverrideConfiguration.java b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/UploadDirectoryOverrideConfiguration.java index ae3ceb3d3d23..8b5ddfcee087 100644 --- a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/UploadDirectoryOverrideConfiguration.java +++ b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/UploadDirectoryOverrideConfiguration.java @@ -75,11 +75,11 @@ public Optional recursive() { } /** - * @return the optional upload request transformer + * @return the upload request transformer if not null, otherwise no-op * @see UploadDirectoryOverrideConfiguration.Builder#uploadFileRequestTransformer(Consumer) */ - public Optional> uploadFileRequestTransformer() { - return Optional.ofNullable(uploadFileRequestTransformer); + public Consumer uploadFileRequestTransformer() { + return uploadFileRequestTransformer == null ? ignore -> { } : uploadFileRequestTransformer; } @Override diff --git a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/UploadDirectoryHelper.java b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/UploadDirectoryHelper.java index 5ece1ddf7cd6..bf19bc60e151 100644 --- a/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/UploadDirectoryHelper.java +++ b/services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/internal/UploadDirectoryHelper.java @@ -237,7 +237,7 @@ private UploadFileRequest constructUploadRequest(UploadDirectoryRequest uploadDi .putObjectRequest(putObjectRequest); uploadDirectoryRequest.overrideConfiguration() - .flatMap(UploadDirectoryOverrideConfiguration::uploadFileRequestTransformer) + .map(UploadDirectoryOverrideConfiguration::uploadFileRequestTransformer) .ifPresent(c -> c.accept(requestBuilder)); return requestBuilder.build(); diff --git a/services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/DownloadDirectoryOverrideConfigurationTest.java b/services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/DownloadDirectoryOverrideConfigurationTest.java index 9535fff74246..1c8da69ca8f4 100644 --- a/services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/DownloadDirectoryOverrideConfigurationTest.java +++ b/services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/DownloadDirectoryOverrideConfigurationTest.java @@ -15,32 +15,11 @@ package software.amazon.awssdk.transfer.s3; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.nio.file.Paths; import nl.jqno.equalsverifier.EqualsVerifier; import org.junit.jupiter.api.Test; class DownloadDirectoryOverrideConfigurationTest { - @Test - void defaultBuilder() { - DownloadDirectoryOverrideConfiguration configuration = - DownloadDirectoryOverrideConfiguration.builder() - .build(); - assertThat(configuration.downloadFileRequestTransformer()).isEmpty(); - } - - @Test - void defaultBuilderWithPropertySet() { - DownloadDirectoryOverrideConfiguration configuration = - DownloadDirectoryOverrideConfiguration.builder() - .downloadFileRequestTransformer((request -> request.destination(Paths.get(".")))) - .build(); - assertThat(configuration.downloadFileRequestTransformer()).isNotEmpty(); - } - @Test void equalsHashCode() { EqualsVerifier.forClass(DownloadDirectoryOverrideConfiguration.class).verify();