28
28
import software .amazon .awssdk .utils .builder .ToCopyableBuilder ;
29
29
30
30
/**
31
- * Optional Configurations for the underlying S3 client for which the TransferManager already provides
31
+ * Optional configuration for the underlying S3 client for which the TransferManager already provides
32
32
* sensible defaults.
33
33
*
34
34
* <p>Use {@link #builder()} to create a set of options.</p>
@@ -42,6 +42,7 @@ public final class S3ClientConfiguration implements ToCopyableBuilder<S3ClientCo
42
42
private final Double targetThroughputInGbps ;
43
43
private final Integer maxConcurrency ;
44
44
private final ClientAsyncConfiguration asyncConfiguration ;
45
+ private final UploadDirectoryConfiguration uploadDirectoryConfiguration ;
45
46
46
47
private S3ClientConfiguration (DefaultBuilder builder ) {
47
48
this .credentialsProvider = builder .credentialsProvider ;
@@ -51,6 +52,7 @@ private S3ClientConfiguration(DefaultBuilder builder) {
51
52
this .maxConcurrency = Validate .isPositiveOrNull (builder .maxConcurrency ,
52
53
"maxConcurrency" );
53
54
this .asyncConfiguration = builder .asyncConfiguration ;
55
+ this .uploadDirectoryConfiguration = builder .uploadDirectoryConfiguration ;
54
56
}
55
57
56
58
/**
@@ -95,6 +97,13 @@ public Optional<ClientAsyncConfiguration> asyncConfiguration() {
95
97
return Optional .ofNullable (asyncConfiguration );
96
98
}
97
99
100
+ /**
101
+ * @return the optional upload directory configuration specified
102
+ */
103
+ public Optional <UploadDirectoryConfiguration > uploadDirectoryConfiguration () {
104
+ return Optional .ofNullable (uploadDirectoryConfiguration );
105
+ }
106
+
98
107
@ Override
99
108
public Builder toBuilder () {
100
109
return new DefaultBuilder (this );
@@ -126,7 +135,10 @@ public boolean equals(Object o) {
126
135
if (!Objects .equals (maxConcurrency , that .maxConcurrency )) {
127
136
return false ;
128
137
}
129
- return Objects .equals (asyncConfiguration , that .asyncConfiguration );
138
+ if (!Objects .equals (asyncConfiguration , that .asyncConfiguration )) {
139
+ return false ;
140
+ }
141
+ return Objects .equals (uploadDirectoryConfiguration , that .uploadDirectoryConfiguration );
130
142
}
131
143
132
144
@ Override
@@ -137,6 +149,7 @@ public int hashCode() {
137
149
result = 31 * result + (targetThroughputInGbps != null ? targetThroughputInGbps .hashCode () : 0 );
138
150
result = 31 * result + (maxConcurrency != null ? maxConcurrency .hashCode () : 0 );
139
151
result = 31 * result + (asyncConfiguration != null ? asyncConfiguration .hashCode () : 0 );
152
+ result = 31 * result + (uploadDirectoryConfiguration != null ? uploadDirectoryConfiguration .hashCode () : 0 );
140
153
return result ;
141
154
}
142
155
@@ -253,6 +266,15 @@ public interface Builder extends CopyableBuilder<Builder, S3ClientConfiguration>
253
266
default Builder asyncConfiguration (Consumer <ClientAsyncConfiguration .Builder > configuration ) {
254
267
return asyncConfiguration (ClientAsyncConfiguration .builder ().applyMutation (configuration ).build ());
255
268
}
269
+
270
+ Builder uploadDirectoryConfiguration (UploadDirectoryConfiguration uploadDirectoryConfiguration );
271
+
272
+ default Builder uploadDirectoryConfiguration (Consumer <UploadDirectoryConfiguration .Builder > uploadConfigurationBuilder ) {
273
+ Validate .paramNotNull (uploadConfigurationBuilder , "uploadConfigurationBuilder" );
274
+ return uploadDirectoryConfiguration (UploadDirectoryConfiguration .builder ()
275
+ .applyMutation (uploadConfigurationBuilder )
276
+ .build ());
277
+ }
256
278
}
257
279
258
280
private static final class DefaultBuilder implements Builder {
@@ -262,6 +284,7 @@ private static final class DefaultBuilder implements Builder {
262
284
private Double targetThroughputInGbps ;
263
285
private Integer maxConcurrency ;
264
286
private ClientAsyncConfiguration asyncConfiguration ;
287
+ private UploadDirectoryConfiguration uploadDirectoryConfiguration ;
265
288
266
289
private DefaultBuilder () {
267
290
}
@@ -311,6 +334,12 @@ public Builder asyncConfiguration(ClientAsyncConfiguration asyncConfiguration) {
311
334
return this ;
312
335
}
313
336
337
+ @ Override
338
+ public Builder uploadDirectoryConfiguration (UploadDirectoryConfiguration uploadDirectoryConfiguration ) {
339
+ this .uploadDirectoryConfiguration = uploadDirectoryConfiguration ;
340
+ return this ;
341
+ }
342
+
314
343
@ Override
315
344
public S3ClientConfiguration build () {
316
345
return new S3ClientConfiguration (this );
0 commit comments