47
47
import software .amazon .awssdk .services .s3 .model .S3ResponseMetadata ;
48
48
import software .amazon .awssdk .utils .http .SdkHttpUtils ;
49
49
50
+ /**
51
+ * Helper class to convert CRT POJOs to SDK POJOs and vice versa
52
+ */
53
+ //TODO: codegen this class in the future
50
54
@ SdkInternalApi
51
- public final class S3CrtUtils {
55
+ public final class S3CrtPojoConversion {
52
56
private static final String HEADER_USER_AGENT = "User-Agent" ;
53
57
private static final String USER_AGENT_STRING = SdkUserAgent .create ().userAgent () + " ft/s3-transfer" ;
54
58
55
- private S3CrtUtils () {
59
+ private S3CrtPojoConversion () {
56
60
}
57
61
58
- // TODO: Add more adapters if there are any new crt credentials providers.
59
-
62
+ // TODO: Move this method out of this util class and change to use DelegateCredentialsProvider
60
63
/**
61
64
* Adapter between the sdk credentials provider and the crt credentials provider.
62
65
*/
@@ -74,16 +77,29 @@ public static CredentialsProvider createCrtCredentialsProvider(AwsCredentialsPro
74
77
.build ();
75
78
}
76
79
77
- // TODO: codegen and add tests
78
80
public static com .amazonaws .s3 .model .GetObjectRequest toCrtGetObjectRequest (GetObjectRequest request ) {
79
81
com .amazonaws .s3 .model .GetObjectRequest .Builder getObjectBuilder =
80
82
com .amazonaws .s3 .model .GetObjectRequest .builder ()
81
- .key (request .key ())
82
83
.bucket (request .bucket ())
83
- .expectedBucketOwner (request .expectedBucketOwner ())
84
84
.ifMatch (request .ifMatch ())
85
85
.ifModifiedSince (request .ifModifiedSince ())
86
- .ifNoneMatch (request .ifNoneMatch ());
86
+ .ifNoneMatch (request .ifNoneMatch ())
87
+ .ifUnmodifiedSince (request .ifUnmodifiedSince ())
88
+ .key (request .key ())
89
+ .range (request .range ())
90
+ .responseCacheControl (request .responseCacheControl ())
91
+ .responseContentDisposition (request .responseContentDisposition ())
92
+ .responseContentEncoding (request .responseContentEncoding ())
93
+ .responseContentLanguage (request .responseContentLanguage ())
94
+ .responseContentType (request .responseContentType ())
95
+ .responseExpires (request .responseExpires ())
96
+ .versionId (request .versionId ())
97
+ .sSECustomerAlgorithm (request .sseCustomerAlgorithm ())
98
+ .sSECustomerKey (request .sseCustomerKey ())
99
+ .sSECustomerKeyMD5 (request .sseCustomerKeyMD5 ())
100
+ .requestPayer (RequestPayer .fromValue (request .requestPayerAsString ()))
101
+ .partNumber (request .partNumber ())
102
+ .expectedBucketOwner (request .expectedBucketOwner ());
87
103
88
104
processRequestOverrideConfiguration (request .overrideConfiguration ().orElse (null ),
89
105
getObjectBuilder ::customQueryParameters );
@@ -95,36 +111,70 @@ public static com.amazonaws.s3.model.GetObjectRequest toCrtGetObjectRequest(GetO
95
111
}
96
112
97
113
// TODO: codegen and add tests
98
- public static GetObjectResponse adaptGetObjectOutput (GetObjectOutput response , SdkHttpResponse sdkHttpResponse ) {
114
+ public static GetObjectResponse fromCrtGetObjectOutput (GetObjectOutput response , SdkHttpResponse sdkHttpResponse ) {
99
115
S3ResponseMetadata s3ResponseMetadata = createS3ResponseMetadata (sdkHttpResponse );
100
116
101
- return (GetObjectResponse ) GetObjectResponse .builder ()
102
- .bucketKeyEnabled (response .bucketKeyEnabled ())
103
- .acceptRanges (response .acceptRanges ())
104
- .contentDisposition (response .contentDisposition ())
105
- .cacheControl (response .cacheControl ())
106
- .contentEncoding (response .contentEncoding ())
107
- .contentLanguage (response .contentLanguage ())
108
- .contentRange (response .contentRange ())
109
- .contentLength (response .contentLength ())
110
- .contentType (response .contentType ())
111
- .deleteMarker (response .deleteMarker ())
112
- .eTag (response .eTag ())
113
- .expiration (response .expiration ())
114
- .expires (response .expires ())
115
- .lastModified (response .lastModified ())
116
- .metadata (response .metadata ())
117
- .responseMetadata (s3ResponseMetadata )
118
- .sdkHttpResponse (sdkHttpResponse )
119
- .build ();
117
+ GetObjectResponse .Builder builder = GetObjectResponse .builder ()
118
+ .deleteMarker (response .deleteMarker ())
119
+ .acceptRanges (response .acceptRanges ())
120
+ .expiration (response .expiration ())
121
+ .restore (response .restore ())
122
+ .lastModified (response .lastModified ())
123
+ .contentLength (response .contentLength ())
124
+ .eTag (response .eTag ())
125
+ .missingMeta (response .missingMeta ())
126
+ .versionId (response .versionId ())
127
+ .cacheControl (response .cacheControl ())
128
+ .contentDisposition (response .contentDisposition ())
129
+ .contentEncoding (response .contentEncoding ())
130
+ .contentLanguage (response .contentLanguage ())
131
+ .contentRange (response .contentRange ())
132
+ .contentType (response .contentType ())
133
+ .expires (response .expires ())
134
+ .websiteRedirectLocation (response .websiteRedirectLocation ())
135
+ .metadata (response .metadata ())
136
+ .sseCustomerAlgorithm (response .sSECustomerAlgorithm ())
137
+ .sseCustomerKeyMD5 (response .sSECustomerKeyMD5 ())
138
+ .ssekmsKeyId (response .sSEKMSKeyId ())
139
+ .bucketKeyEnabled (response .bucketKeyEnabled ())
140
+ .partsCount (response .partsCount ())
141
+ .tagCount (response .tagCount ())
142
+ .objectLockRetainUntilDate (response .objectLockRetainUntilDate ());
143
+
144
+ if (response .serverSideEncryption () != null ) {
145
+ builder .serverSideEncryption (response .serverSideEncryption ().name ());
146
+ }
147
+
148
+ if (response .storageClass () != null ) {
149
+ builder .storageClass (response .storageClass ().name ());
150
+ }
151
+
152
+ if (response .requestCharged () != null ) {
153
+ builder .requestCharged (response .requestCharged ().name ());
154
+ }
155
+
156
+ if (response .replicationStatus () != null ) {
157
+ builder .replicationStatus (response .replicationStatus ().name ());
158
+ }
159
+
160
+ if (response .objectLockMode () != null ) {
161
+ builder .objectLockMode (response .objectLockMode ().name ());
162
+ }
163
+
164
+ if (response .objectLockLegalHoldStatus () != null ) {
165
+ builder .objectLockLegalHoldStatus (response .objectLockLegalHoldStatus ().name ());
166
+ }
167
+
168
+ return (GetObjectResponse ) builder .responseMetadata (s3ResponseMetadata )
169
+ .sdkHttpResponse (sdkHttpResponse )
170
+ .build ();
171
+
120
172
}
121
173
122
- // TODO: codegen and add tests
123
174
public static com .amazonaws .s3 .model .PutObjectRequest toCrtPutObjectRequest (PutObjectRequest sdkPutObject ) {
124
175
com .amazonaws .s3 .model .PutObjectRequest .Builder putObjectBuilder =
125
176
com .amazonaws .s3 .model .PutObjectRequest .builder ()
126
177
.contentLength (sdkPutObject .contentLength ())
127
- .aCL (ObjectCannedACL .fromValue (sdkPutObject .aclAsString ()))
128
178
.bucket (sdkPutObject .bucket ())
129
179
.key (sdkPutObject .key ())
130
180
.bucketKeyEnabled (sdkPutObject .bucketKeyEnabled ())
@@ -141,23 +191,42 @@ public static com.amazonaws.s3.model.PutObjectRequest toCrtPutObjectRequest(PutO
141
191
.grantReadACP (sdkPutObject .grantReadACP ())
142
192
.grantWriteACP (sdkPutObject .grantWriteACP ())
143
193
.metadata (sdkPutObject .metadata ())
144
- .objectLockLegalHoldStatus (ObjectLockLegalHoldStatus .fromValue (
145
- sdkPutObject .objectLockLegalHoldStatusAsString ()))
146
- .objectLockMode (ObjectLockMode .fromValue (
147
- sdkPutObject .objectLockModeAsString ()))
148
194
.objectLockRetainUntilDate (sdkPutObject .objectLockRetainUntilDate ())
149
- .requestPayer (RequestPayer .fromValue (sdkPutObject .requestPayerAsString ()))
150
- .serverSideEncryption (ServerSideEncryption .fromValue (
151
- sdkPutObject .requestPayerAsString ()))
152
195
.sSECustomerAlgorithm (sdkPutObject .sseCustomerAlgorithm ())
153
196
.sSECustomerKey (sdkPutObject .sseCustomerKey ())
154
197
.sSECustomerKeyMD5 (sdkPutObject .sseCustomerKeyMD5 ())
155
198
.sSEKMSEncryptionContext (sdkPutObject .ssekmsEncryptionContext ())
156
199
.sSEKMSKeyId (sdkPutObject .ssekmsKeyId ())
157
- .storageClass (StorageClass .fromValue (sdkPutObject .storageClassAsString ()))
158
200
.tagging (sdkPutObject .tagging ())
159
201
.websiteRedirectLocation (sdkPutObject .websiteRedirectLocation ());
160
202
203
+ if (sdkPutObject .acl () != null ) {
204
+ putObjectBuilder .aCL (ObjectCannedACL .fromValue (sdkPutObject .acl ().name ()));
205
+ }
206
+
207
+ if (sdkPutObject .objectLockLegalHoldStatus () != null ) {
208
+ putObjectBuilder .objectLockLegalHoldStatus (ObjectLockLegalHoldStatus .fromValue (
209
+ sdkPutObject .objectLockLegalHoldStatus ().name ()));
210
+ }
211
+
212
+ if (sdkPutObject .objectLockMode () != null ) {
213
+ putObjectBuilder .objectLockMode (ObjectLockMode .fromValue (
214
+ sdkPutObject .objectLockMode ().name ()));
215
+ }
216
+
217
+ if (sdkPutObject .requestPayer () != null ) {
218
+ putObjectBuilder .requestPayer (RequestPayer .fromValue (sdkPutObject .requestPayer ().name ()));
219
+ }
220
+
221
+ if (sdkPutObject .serverSideEncryption () != null ) {
222
+ putObjectBuilder .serverSideEncryption (ServerSideEncryption .fromValue (
223
+ sdkPutObject .serverSideEncryption ().name ()));
224
+ }
225
+
226
+ if (sdkPutObject .storageClass () != null ) {
227
+ putObjectBuilder .storageClass (StorageClass .fromValue (
228
+ sdkPutObject .storageClass ().name ()));
229
+ }
161
230
162
231
processRequestOverrideConfiguration (sdkPutObject .overrideConfiguration ().orElse (null ),
163
232
putObjectBuilder ::customQueryParameters );
@@ -182,11 +251,11 @@ public static PutObjectResponse fromCrtPutObjectOutput(PutObjectOutput crtPutObj
182
251
.versionId (crtPutObjectOutput .versionId ());
183
252
184
253
if (crtPutObjectOutput .requestCharged () != null ) {
185
- builder .requestCharged (crtPutObjectOutput .requestCharged ().value ());
254
+ builder .requestCharged (crtPutObjectOutput .requestCharged ().name ());
186
255
}
187
256
188
257
if (crtPutObjectOutput .serverSideEncryption () != null ) {
189
- builder .serverSideEncryption (crtPutObjectOutput .serverSideEncryption ().value ());
258
+ builder .serverSideEncryption (crtPutObjectOutput .serverSideEncryption ().name ());
190
259
}
191
260
192
261
return builder .build ();
@@ -204,11 +273,11 @@ private static void throwExceptionForUnsupportedConfigurations(AwsRequestOverrid
204
273
}
205
274
206
275
if (overrideConfiguration .signer ().isPresent ()) {
207
- throw new UnsupportedOperationException ("signer are not supported" );
276
+ throw new UnsupportedOperationException ("signer is not supported" );
208
277
}
209
278
210
279
if (!overrideConfiguration .apiNames ().isEmpty ()) {
211
- throw new UnsupportedOperationException ("apiNames are not supported" );
280
+ throw new UnsupportedOperationException ("apiNames is not supported" );
212
281
}
213
282
214
283
if (overrideConfiguration .apiCallAttemptTimeout ().isPresent ()) {
0 commit comments