@@ -151,7 +151,7 @@ private SdkPojoConversionUtils() {
151151 public static UploadPartRequest toUploadPartRequest (PutObjectRequest putObjectRequest , int partNumber , String uploadId ) {
152152
153153 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 );
155155 setSdkFields (builder , putObjectRequest , PUT_OBJECT_REQUEST_TO_UPLOAD_PART_FIELDS_TO_IGNORE );
156156 return builder .uploadId (uploadId ).partNumber (partNumber ).build ();
157157 }
@@ -160,7 +160,7 @@ public static CompleteMultipartUploadRequest toCompleteMultipartUploadRequest(Pu
160160 String uploadId , CompletedPart [] parts ,
161161 long contentLength ) {
162162 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 );
164164 setSdkFields (builder , putObjectRequest );
165165
166166 builder .mpuObjectSize (contentLength );
@@ -175,7 +175,7 @@ public static CompleteMultipartUploadRequest toCompleteMultipartUploadRequest(Pu
175175 public static CreateMultipartUploadRequest toCreateMultipartUploadRequest (PutObjectRequest putObjectRequest ) {
176176
177177 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 );
179179 setSdkFields (builder , putObjectRequest );
180180
181181 if (S3ChecksumUtils .checksumValueSpecified (putObjectRequest )) {
@@ -225,14 +225,14 @@ public static CompletedPart toCompletedPart(Part part) {
225225
226226 public static ListPartsRequest toListPartsRequest (String uploadId , PutObjectRequest putObjectRequest ) {
227227 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 );
229229 setSdkFields (builder , putObjectRequest );
230230 return builder .uploadId (uploadId ).build ();
231231 }
232232
233233 public static CreateMultipartUploadRequest toCreateMultipartUploadRequest (CopyObjectRequest copyObjectRequest ) {
234234 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 );
236236 setSdkFields (builder , copyObjectRequest );
237237 builder .bucket (copyObjectRequest .destinationBucket ());
238238 builder .key (copyObjectRequest .destinationKey ());
@@ -260,7 +260,7 @@ private static CopyObjectResult toCopyObjectResult(CompleteMultipartUploadRespon
260260
261261 public static AbortMultipartUploadRequest .Builder toAbortMultipartUploadRequest (CopyObjectRequest copyObjectRequest ) {
262262 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 );
264264 setSdkFields (builder , copyObjectRequest );
265265 builder .bucket (copyObjectRequest .destinationBucket ());
266266 builder .key (copyObjectRequest .destinationKey ());
@@ -269,7 +269,7 @@ public static AbortMultipartUploadRequest.Builder toAbortMultipartUploadRequest(
269269
270270 public static AbortMultipartUploadRequest .Builder toAbortMultipartUploadRequest (PutObjectRequest putObjectRequest ) {
271271 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 );
273273 setSdkFields (builder , putObjectRequest );
274274 return builder ;
275275 }
@@ -324,15 +324,22 @@ private static void setSdkFields(SdkPojo targetBuilder, SdkPojo sourceObject, Se
324324 }
325325 }
326326
327- private static void validateRequestFields (SdkPojo sourceObject , Set <String > allowedFields ) {
327+ private static void validateRequestFields (SdkPojo sourceObject , SdkPojo targetBuilder , Set <String > allowedFields ) {
328328 Set <String > invalidFields = new HashSet <>();
329329
330330 for (SdkField <?> sourceField : sourceObject .sdkFields ()) {
331331 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+ }
336343 }
337344 }
338345
0 commit comments