public PutObjectResponse putObject()

in src/main/java/software/amazon/encryption/s3/S3EncryptionClient.java [190:235]


    public PutObjectResponse putObject(PutObjectRequest putObjectRequest, RequestBody requestBody)
            throws AwsServiceException, SdkClientException {

        if (_enableMultipartPutObject) {
            try {
                CompleteMultipartUploadResponse completeResponse = multipartPutObject(putObjectRequest, requestBody);
                PutObjectResponse response = PutObjectResponse.builder()
                        .eTag(completeResponse.eTag())
                        .build();
                return response;
            } catch (Throwable e) {
                throw new S3EncryptionClientException("Exception while performing Multipart Upload PutObject", e);
            }
        }
        PutEncryptedObjectPipeline pipeline = PutEncryptedObjectPipeline.builder()
                .s3AsyncClient(_wrappedAsyncClient)
                .cryptoMaterialsManager(_cryptoMaterialsManager)
                .secureRandom(_secureRandom)
                .build();

        ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();

        try {
            CompletableFuture<PutObjectResponse> futurePut = pipeline.putObject(putObjectRequest,
                    AsyncRequestBody.fromInputStream(
                            requestBody.contentStreamProvider().newStream(),
                            requestBody.optionalContentLength().orElse(-1L),
                            singleThreadExecutor
                    )
            );

            PutObjectResponse response = futurePut.join();

            singleThreadExecutor.shutdown();

            return response;

        } catch (CompletionException completionException) {
            singleThreadExecutor.shutdownNow();
            throw new S3EncryptionClientException(completionException.getMessage(), completionException.getCause());
        } catch (Exception exception) {
            singleThreadExecutor.shutdownNow();
            throw new S3EncryptionClientException(exception.getMessage(), exception);
        }

    }