Skip to content

Commit a860798

Browse files
authored
Remove download consumer builder because it's confusing (#3599)
1 parent 2374eb2 commit a860798

File tree

3 files changed

+23
-35
lines changed

3 files changed

+23
-35
lines changed

services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/S3TransferManager.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.util.concurrent.CompletableFuture;
2020
import java.util.concurrent.Executor;
2121
import java.util.function.Consumer;
22-
import java.util.function.Function;
2322
import software.amazon.awssdk.annotations.SdkPreviewApi;
2423
import software.amazon.awssdk.annotations.SdkPublicApi;
2524
import software.amazon.awssdk.annotations.ThreadSafe;
@@ -304,30 +303,19 @@ default FileDownload resumeDownloadFile(Consumer<ResumableFileDownload.Builder>
304303
* @param downloadRequest the download request, containing a {@link GetObjectRequest} and {@link AsyncResponseTransformer}
305304
* @param <ResultT> The type of data the {@link AsyncResponseTransformer} produces
306305
* @return A {@link Download} that can be used to track the ongoing transfer
307-
* @see #download(Function)
308306
* @see #downloadFile(DownloadFileRequest)
309307
*/
310308
default <ResultT> Download<ResultT> download(DownloadRequest<ResultT> downloadRequest) {
311309
throw new UnsupportedOperationException();
312310
}
313311

314-
/**
315-
* This is a convenience method that creates an instance of the {@link DownloadRequest} builder, avoiding the need to create
316-
* one manually via {@link DownloadRequest#builder()}.
317-
*
318-
* @see #download(DownloadRequest)
319-
*/
320-
default <ResultT> Download<ResultT> download(Function<DownloadRequest.UntypedBuilder,
321-
DownloadRequest.TypedBuilder<ResultT>> request) {
322-
return download(DownloadRequest.builder().applyMutation(request).build());
323-
}
324-
325312
/**
326313
* Uploads a local file to an object in S3. For non-file-based uploads, you may use {@link #upload(UploadRequest)} instead.
327314
* <p>
328315
* Users can monitor the progress of the transfer by attaching a {@link TransferListener}. The provided
329316
* {@link LoggingTransferListener} logs a basic progress bar; users can also implement their own listeners.
330317
*
318+
* Upload a local file to an object in S3. For non-file-based uploads, you may use {@link #upload(UploadRequest)} instead.
331319
* <p>
332320
* <b>Usage Example:</b>
333321
* {@snippet :

services-custom/s3-transfer-manager/src/main/java/software/amazon/awssdk/transfer/s3/model/DownloadRequest.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.List;
2222
import java.util.Objects;
2323
import java.util.function.Consumer;
24-
import java.util.function.Function;
2524
import software.amazon.awssdk.annotations.SdkPreviewApi;
2625
import software.amazon.awssdk.annotations.SdkPublicApi;
2726
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
@@ -33,7 +32,6 @@
3332
import software.amazon.awssdk.utils.ToString;
3433
import software.amazon.awssdk.utils.Validate;
3534
import software.amazon.awssdk.utils.builder.CopyableBuilder;
36-
import software.amazon.awssdk.utils.builder.SdkBuilder;
3735
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
3836

3937
/**
@@ -209,18 +207,9 @@ default UntypedBuilder getObjectRequest(Consumer<GetObjectRequest.Builder> getOb
209207
* @see AsyncResponseTransformer
210208
*/
211209
<T> TypedBuilder<T> responseTransformer(AsyncResponseTransformer<GetObjectResponse, T> responseTransformer);
212-
213-
/**
214-
* Like {@link SdkBuilder#applyMutation(Consumer)}, but accepts a {@link Function} that upgrades this {@link
215-
* UntypedBuilder} to a {@link TypedBuilder}. Therefore, the function must also call {@link
216-
* #responseTransformer(AsyncResponseTransformer)} to specify the generic type.
217-
*/
218-
default <T> TypedBuilder<T> applyMutation(Function<UntypedBuilder, TypedBuilder<T>> mutator) {
219-
return mutator.apply(this);
220-
}
221210
}
222211

223-
private static class DefaultUntypedBuilder implements UntypedBuilder {
212+
private static final class DefaultUntypedBuilder implements UntypedBuilder {
224213
private GetObjectRequest getObjectRequest;
225214
private List<TransferListener> transferListeners;
226215

services-custom/s3-transfer-manager/src/test/java/software/amazon/awssdk/transfer/s3/internal/S3TransferManagerTest.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import software.amazon.awssdk.core.ResponseBytes;
3333
import software.amazon.awssdk.core.async.AsyncRequestBody;
3434
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
35+
import software.amazon.awssdk.core.async.ResponsePublisher;
3536
import software.amazon.awssdk.services.s3.internal.crt.S3CrtAsyncClient;
3637
import software.amazon.awssdk.services.s3.model.CopyObjectRequest;
3738
import software.amazon.awssdk.services.s3.model.CopyObjectResponse;
@@ -48,6 +49,7 @@
4849
import software.amazon.awssdk.transfer.s3.model.DownloadDirectoryRequest;
4950
import software.amazon.awssdk.transfer.s3.model.DownloadFileRequest;
5051
import software.amazon.awssdk.transfer.s3.S3TransferManager;
52+
import software.amazon.awssdk.transfer.s3.model.DownloadRequest;
5153
import software.amazon.awssdk.transfer.s3.model.UploadDirectoryRequest;
5254
import software.amazon.awssdk.transfer.s3.model.UploadFileRequest;
5355

@@ -206,13 +208,13 @@ void download_cancel_shouldForwardCancellation() {
206208
CompletableFuture<GetObjectResponse> s3CrtFuture = new CompletableFuture<>();
207209
when(mockS3Crt.getObject(any(GetObjectRequest.class), any(AsyncResponseTransformer.class)))
208210
.thenReturn(s3CrtFuture);
211+
DownloadRequest<ResponseBytes<GetObjectResponse>> downloadRequest =
212+
DownloadRequest.builder()
213+
.getObjectRequest(g -> g.bucket("bucket").key("key"))
214+
.responseTransformer(AsyncResponseTransformer.toBytes()).build();
209215

210216
CompletableFuture<CompletedDownload<ResponseBytes<GetObjectResponse>>> future =
211-
tm.download(d -> d
212-
.getObjectRequest(g -> g.bucket("bucket")
213-
.key("key"))
214-
.responseTransformer(AsyncResponseTransformer.toBytes()))
215-
.completionFuture();
217+
tm.download(downloadRequest).completionFuture();
216218
future.cancel(true);
217219
assertThat(s3CrtFuture).isCancelled();
218220
}
@@ -236,8 +238,14 @@ void objectLambdaArnBucketProvided_shouldThrowException() {
236238
.completionFuture().join())
237239
.hasMessageContaining("support S3 Object Lambda resources").hasCauseInstanceOf(IllegalArgumentException.class);
238240

239-
assertThatThrownBy(() -> tm.download(b -> b.getObjectRequest(p -> p.bucket(objectLambdaArn).key("key"))
240-
.responseTransformer(AsyncResponseTransformer.toBytes()))
241+
242+
DownloadRequest<ResponseBytes<GetObjectResponse>> downloadRequest =
243+
DownloadRequest.builder()
244+
.getObjectRequest(g -> g.bucket(objectLambdaArn).key("key"))
245+
.responseTransformer(AsyncResponseTransformer.toBytes())
246+
.build();
247+
248+
assertThatThrownBy(() -> tm.download(downloadRequest)
241249
.completionFuture().join())
242250
.hasMessageContaining("support S3 Object Lambda resources").hasCauseInstanceOf(IllegalArgumentException.class);
243251

@@ -280,9 +288,12 @@ void mrapArnProvided_shouldThrowException() {
280288
.completionFuture().join())
281289
.hasMessageContaining("multi-region access point ARN").hasCauseInstanceOf(IllegalArgumentException.class);
282290

283-
assertThatThrownBy(() -> tm.download(b -> b.getObjectRequest(p -> p.bucket(mrapArn).key("key"))
284-
.responseTransformer(AsyncResponseTransformer.toBytes()))
285-
.completionFuture().join())
291+
DownloadRequest<ResponseBytes<GetObjectResponse>> downloadRequest =
292+
DownloadRequest.builder()
293+
.getObjectRequest(g -> g.bucket(mrapArn).key("key"))
294+
.responseTransformer(AsyncResponseTransformer.toBytes()).build();
295+
296+
assertThatThrownBy(() -> tm.download(downloadRequest).completionFuture().join())
286297
.hasMessageContaining("multi-region access point ARN").hasCauseInstanceOf(IllegalArgumentException.class);
287298

288299
assertThatThrownBy(() -> tm.uploadDirectory(b -> b.bucket(mrapArn)

0 commit comments

Comments
 (0)