@Override
public String toString() {
return ToString.builder("PutObjectRequest").add("ACL", aclAsString()).add("Bucket", bucket())
.add("CacheControl", cacheControl()).add("ContentDisposition", contentDisposition())
.add("ContentEncoding", contentEncoding()).add("ContentLanguage", contentLanguage())
.add("ContentLength", contentLength()).add("ContentMD5", contentMD5()).add("ContentType", contentType())
.add("Expires", expires()).add("GrantFullControl", grantFullControl()).add("GrantRead", grantRead())
.add("GrantReadACP", grantReadACP()).add("GrantWriteACP", grantWriteACP()).add("Key", key())
.add("Metadata", metadata()).add("ServerSideEncryption", serverSideEncryptionAsString())
.add("StorageClass", storageClassAsString()).add("WebsiteRedirectLocation", websiteRedirectLocation())
.add("SSECustomerAlgorithm", sseCustomerAlgorithm())
.add("SSECustomerKey", sseCustomerKey() == null ? null : "*** Sensitive Data Redacted ***")
.add("SSECustomerKeyMD5", sseCustomerKeyMD5())
.add("SSEKMSKeyId", ssekmsKeyId() == null ? null : "*** Sensitive Data Redacted ***")
.add("RequestPayer", requestPayerAsString()).add("Tagging", tagging())
.add("ObjectLockMode", objectLockModeAsString()).add("ObjectLockRetainUntilDate", objectLockRetainUntilDate())
.add("ObjectLockLegalHoldStatus", objectLockLegalHoldStatusAsString()).build();
}