@@ -151,7 +151,7 @@ private SdkPojoConversionUtils() {
151
151
public static UploadPartRequest toUploadPartRequest (PutObjectRequest putObjectRequest , int partNumber , String uploadId ) {
152
152
153
153
UploadPartRequest .Builder builder = UploadPartRequest .builder ();
154
- validateRequestFields (putObjectRequest , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
154
+ validateRequestFields (putObjectRequest , builder , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
155
155
setSdkFields (builder , putObjectRequest , PUT_OBJECT_REQUEST_TO_UPLOAD_PART_FIELDS_TO_IGNORE );
156
156
return builder .uploadId (uploadId ).partNumber (partNumber ).build ();
157
157
}
@@ -160,7 +160,7 @@ public static CompleteMultipartUploadRequest toCompleteMultipartUploadRequest(Pu
160
160
String uploadId , CompletedPart [] parts ,
161
161
long contentLength ) {
162
162
CompleteMultipartUploadRequest .Builder builder = CompleteMultipartUploadRequest .builder ();
163
- validateRequestFields (putObjectRequest , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
163
+ validateRequestFields (putObjectRequest , builder , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
164
164
setSdkFields (builder , putObjectRequest );
165
165
166
166
builder .mpuObjectSize (contentLength );
@@ -175,7 +175,7 @@ public static CompleteMultipartUploadRequest toCompleteMultipartUploadRequest(Pu
175
175
public static CreateMultipartUploadRequest toCreateMultipartUploadRequest (PutObjectRequest putObjectRequest ) {
176
176
177
177
CreateMultipartUploadRequest .Builder builder = CreateMultipartUploadRequest .builder ();
178
- validateRequestFields (putObjectRequest , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
178
+ validateRequestFields (putObjectRequest , builder , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
179
179
setSdkFields (builder , putObjectRequest );
180
180
181
181
if (S3ChecksumUtils .checksumValueSpecified (putObjectRequest )) {
@@ -225,14 +225,14 @@ public static CompletedPart toCompletedPart(Part part) {
225
225
226
226
public static ListPartsRequest toListPartsRequest (String uploadId , PutObjectRequest putObjectRequest ) {
227
227
ListPartsRequest .Builder builder = ListPartsRequest .builder ();
228
- validateRequestFields (putObjectRequest , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
228
+ validateRequestFields (putObjectRequest , builder , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
229
229
setSdkFields (builder , putObjectRequest );
230
230
return builder .uploadId (uploadId ).build ();
231
231
}
232
232
233
233
public static CreateMultipartUploadRequest toCreateMultipartUploadRequest (CopyObjectRequest copyObjectRequest ) {
234
234
CreateMultipartUploadRequest .Builder builder = CreateMultipartUploadRequest .builder ();
235
- validateRequestFields (copyObjectRequest , COPY_OBJECT_TO_COPY_OBJECT_ALLOWED_FIELDS );
235
+ validateRequestFields (copyObjectRequest , builder , COPY_OBJECT_TO_COPY_OBJECT_ALLOWED_FIELDS );
236
236
setSdkFields (builder , copyObjectRequest );
237
237
builder .bucket (copyObjectRequest .destinationBucket ());
238
238
builder .key (copyObjectRequest .destinationKey ());
@@ -260,7 +260,7 @@ private static CopyObjectResult toCopyObjectResult(CompleteMultipartUploadRespon
260
260
261
261
public static AbortMultipartUploadRequest .Builder toAbortMultipartUploadRequest (CopyObjectRequest copyObjectRequest ) {
262
262
AbortMultipartUploadRequest .Builder builder = AbortMultipartUploadRequest .builder ();
263
- validateRequestFields (copyObjectRequest , COPY_OBJECT_TO_COPY_OBJECT_ALLOWED_FIELDS );
263
+ validateRequestFields (copyObjectRequest , builder , COPY_OBJECT_TO_COPY_OBJECT_ALLOWED_FIELDS );
264
264
setSdkFields (builder , copyObjectRequest );
265
265
builder .bucket (copyObjectRequest .destinationBucket ());
266
266
builder .key (copyObjectRequest .destinationKey ());
@@ -269,7 +269,7 @@ public static AbortMultipartUploadRequest.Builder toAbortMultipartUploadRequest(
269
269
270
270
public static AbortMultipartUploadRequest .Builder toAbortMultipartUploadRequest (PutObjectRequest putObjectRequest ) {
271
271
AbortMultipartUploadRequest .Builder builder = AbortMultipartUploadRequest .builder ();
272
- validateRequestFields (putObjectRequest , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
272
+ validateRequestFields (putObjectRequest , builder , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
273
273
setSdkFields (builder , putObjectRequest );
274
274
return builder ;
275
275
}
@@ -324,15 +324,22 @@ private static void setSdkFields(SdkPojo targetBuilder, SdkPojo sourceObject, Se
324
324
}
325
325
}
326
326
327
- private static void validateRequestFields (SdkPojo sourceObject , Set <String > allowedFields ) {
327
+ private static void validateRequestFields (SdkPojo sourceObject , SdkPojo targetBuilder , Set <String > allowedFields ) {
328
328
Set <String > invalidFields = new HashSet <>();
329
329
330
330
for (SdkField <?> sourceField : sourceObject .sdkFields ()) {
331
331
String fieldName = sourceField .memberName ();
332
- Object rawValue = sourceField .getValueOrDefault (sourceObject );
333
-
334
- if (rawValue != null && !allowedFields .contains (fieldName )) {
335
- invalidFields .add (fieldName );
332
+ Object sourceValue = sourceField .getValueOrDefault (sourceObject );
333
+
334
+ if (!allowedFields .contains (fieldName )) {
335
+ SdkField <?> targetField = targetBuilder .sdkFields ()
336
+ .stream ()
337
+ .filter (field -> field .memberName ().equals (fieldName ))
338
+ .findFirst ()
339
+ .orElse (null );
340
+ if (targetField != null && !targetField .getValueOrDefault (targetBuilder ).equals (sourceValue )) {
341
+ invalidFields .add (fieldName );
342
+ }
336
343
}
337
344
}
338
345
0 commit comments