2020import java .util .HashSet ;
2121import java .util .List ;
2222import java .util .Map ;
23+ import java .util .Objects ;
2324import java .util .Set ;
2425import software .amazon .awssdk .annotations .SdkInternalApi ;
2526import software .amazon .awssdk .core .SdkField ;
@@ -151,7 +152,7 @@ private SdkPojoConversionUtils() {
151152 public static UploadPartRequest toUploadPartRequest (PutObjectRequest putObjectRequest , int partNumber , String uploadId ) {
152153
153154 UploadPartRequest .Builder builder = UploadPartRequest .builder ();
154- validateRequestFields (putObjectRequest , builder , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
155+ validateRequestFields (putObjectRequest , builder . build () , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
155156 setSdkFields (builder , putObjectRequest , PUT_OBJECT_REQUEST_TO_UPLOAD_PART_FIELDS_TO_IGNORE );
156157 return builder .uploadId (uploadId ).partNumber (partNumber ).build ();
157158 }
@@ -160,7 +161,7 @@ public static CompleteMultipartUploadRequest toCompleteMultipartUploadRequest(Pu
160161 String uploadId , CompletedPart [] parts ,
161162 long contentLength ) {
162163 CompleteMultipartUploadRequest .Builder builder = CompleteMultipartUploadRequest .builder ();
163- validateRequestFields (putObjectRequest , builder , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
164+ validateRequestFields (putObjectRequest , builder . build () , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
164165 setSdkFields (builder , putObjectRequest );
165166
166167 builder .mpuObjectSize (contentLength );
@@ -175,7 +176,7 @@ public static CompleteMultipartUploadRequest toCompleteMultipartUploadRequest(Pu
175176 public static CreateMultipartUploadRequest toCreateMultipartUploadRequest (PutObjectRequest putObjectRequest ) {
176177
177178 CreateMultipartUploadRequest .Builder builder = CreateMultipartUploadRequest .builder ();
178- validateRequestFields (putObjectRequest , builder , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
179+ validateRequestFields (putObjectRequest , builder . build () , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
179180 setSdkFields (builder , putObjectRequest );
180181
181182 if (S3ChecksumUtils .checksumValueSpecified (putObjectRequest )) {
@@ -225,14 +226,14 @@ public static CompletedPart toCompletedPart(Part part) {
225226
226227 public static ListPartsRequest toListPartsRequest (String uploadId , PutObjectRequest putObjectRequest ) {
227228 ListPartsRequest .Builder builder = ListPartsRequest .builder ();
228- validateRequestFields (putObjectRequest , builder , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
229+ validateRequestFields (putObjectRequest , builder . build () , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
229230 setSdkFields (builder , putObjectRequest );
230231 return builder .uploadId (uploadId ).build ();
231232 }
232233
233234 public static CreateMultipartUploadRequest toCreateMultipartUploadRequest (CopyObjectRequest copyObjectRequest ) {
234235 CreateMultipartUploadRequest .Builder builder = CreateMultipartUploadRequest .builder ();
235- validateRequestFields (copyObjectRequest , builder , COPY_OBJECT_TO_COPY_OBJECT_ALLOWED_FIELDS );
236+ validateRequestFields (copyObjectRequest , builder . build () , COPY_OBJECT_TO_COPY_OBJECT_ALLOWED_FIELDS );
236237 setSdkFields (builder , copyObjectRequest );
237238 builder .bucket (copyObjectRequest .destinationBucket ());
238239 builder .key (copyObjectRequest .destinationKey ());
@@ -260,7 +261,7 @@ private static CopyObjectResult toCopyObjectResult(CompleteMultipartUploadRespon
260261
261262 public static AbortMultipartUploadRequest .Builder toAbortMultipartUploadRequest (CopyObjectRequest copyObjectRequest ) {
262263 AbortMultipartUploadRequest .Builder builder = AbortMultipartUploadRequest .builder ();
263- validateRequestFields (copyObjectRequest , builder , COPY_OBJECT_TO_COPY_OBJECT_ALLOWED_FIELDS );
264+ validateRequestFields (copyObjectRequest , builder . build () , COPY_OBJECT_TO_COPY_OBJECT_ALLOWED_FIELDS );
264265 setSdkFields (builder , copyObjectRequest );
265266 builder .bucket (copyObjectRequest .destinationBucket ());
266267 builder .key (copyObjectRequest .destinationKey ());
@@ -269,7 +270,7 @@ public static AbortMultipartUploadRequest.Builder toAbortMultipartUploadRequest(
269270
270271 public static AbortMultipartUploadRequest .Builder toAbortMultipartUploadRequest (PutObjectRequest putObjectRequest ) {
271272 AbortMultipartUploadRequest .Builder builder = AbortMultipartUploadRequest .builder ();
272- validateRequestFields (putObjectRequest , builder , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
273+ validateRequestFields (putObjectRequest , builder . build () , PUT_OBJECT_TO_UPLOAD_PART_ALLOWED_FIELDS );
273274 setSdkFields (builder , putObjectRequest );
274275 return builder ;
275276 }
@@ -324,20 +325,20 @@ private static void setSdkFields(SdkPojo targetBuilder, SdkPojo sourceObject, Se
324325 }
325326 }
326327
327- private static void validateRequestFields (SdkPojo sourceObject , SdkPojo targetBuilder , Set <String > allowedFields ) {
328+ private static void validateRequestFields (SdkPojo sourceObject , SdkPojo targetObject , Set <String > allowedFields ) {
328329 Set <String > invalidFields = new HashSet <>();
329330
330331 for (SdkField <?> sourceField : sourceObject .sdkFields ()) {
331332 String fieldName = sourceField .memberName ();
332333 Object sourceValue = sourceField .getValueOrDefault (sourceObject );
333334
334335 if (!allowedFields .contains (fieldName )) {
335- SdkField <?> targetField = targetBuilder .sdkFields ()
336+ SdkField <?> targetField = targetObject .sdkFields ()
336337 .stream ()
337338 .filter (field -> field .memberName ().equals (fieldName ))
338339 .findFirst ()
339340 .orElse (null );
340- if (targetField != null && !targetField .getValueOrDefault (targetBuilder ). equals ( sourceValue )) {
341+ if (targetField != null && !Objects . equals ( sourceValue , targetField .getValueOrDefault (targetObject ) )) {
341342 invalidFields .add (fieldName );
342343 }
343344 }
0 commit comments