public ProgressEvent handleRequest()

in aws-databrew-job/src/main/java/software/amazon/databrew/job/UpdateHandler.java [20:112]


    public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
        final AmazonWebServicesClientProxy proxy,
        final ResourceHandlerRequest<ResourceModel> request,
        final CallbackContext callbackContext,
        final Logger logger) {

        final ResourceModel model = request.getDesiredResourceState();
        final DataBrewClient databrewClient = ClientBuilder.getClient();

        final String jobName = model.getName();
        final String jobType = model.getType();
        final JobSample jobSample = model.getJobSample();

        if (((!jobType.equals(ModelHelper.Type.PROFILE.toString())) && (!jobType.equals(ModelHelper.Type.RECIPE.toString()))) ||
            jobType.equals(ModelHelper.Type.RECIPE.toString()) && jobSample != null) {
            return ProgressEvent.<ResourceModel, CallbackContext>builder()
                    .errorCode(HandlerErrorCode.InvalidRequest)
                    .status(OperationStatus.FAILED)
                    .build();
        }

        if (jobType.equals(ModelHelper.Type.RECIPE.toString())) {
            final UpdateRecipeJobRequest updateRecipeJobRequest = UpdateRecipeJobRequest.builder()
                    .encryptionKeyArn(model.getEncryptionKeyArn())
                    .encryptionMode(model.getEncryptionMode())
                    .name(jobName)
                    .logSubscription(model.getLogSubscription())
                    .maxCapacity(model.getMaxCapacity())
                    .maxRetries(model.getMaxRetries())
                    .outputs(ModelHelper.buildRequestOutputs(model.getOutputs()))
                    .dataCatalogOutputs(ModelHelper.buildRequestDataCatalogOutputs(model.getDataCatalogOutputs()))
                    .databaseOutputs(ModelHelper.buildRequestDatabaseOutputs(model.getDatabaseOutputs()))
                    .roleArn(model.getRoleArn())
                    .timeout(model.getTimeout())
                    .build();

            try {
                proxy.injectCredentialsAndInvokeV2(updateRecipeJobRequest, databrewClient::updateRecipeJob);
                logger.log(String.format("%s [%s] Created Successfully", ResourceModel.TYPE_NAME, jobName));
            } catch (ResourceNotFoundException ex) {
                logger.log(String.format("%s [%s] Does Not Exist", ResourceModel.TYPE_NAME, jobName));
                return ProgressEvent.defaultFailureHandler(ex, HandlerErrorCode.NotFound);
            } catch (ConflictException ex) {
                logger.log(String.format("%s [%s] Already Exists", ResourceModel.TYPE_NAME, jobName));
                return ProgressEvent.defaultFailureHandler(ex, HandlerErrorCode.AlreadyExists);
            } catch (ValidationException ex) {
                logger.log(String.format("%s [%s] Invalid Parameter", ResourceModel.TYPE_NAME, jobName));
                return ProgressEvent.defaultFailureHandler(ex, HandlerErrorCode.InvalidRequest);
            } catch (DataBrewException ex) {
                logger.log(String.format("%s Create Failed", ResourceModel.TYPE_NAME));
                return ProgressEvent.defaultFailureHandler(ex, HandlerErrorCode.ServiceInternalError);
            }
        }

        if (jobType.equals(ModelHelper.Type.PROFILE.toString())) {
            final UpdateProfileJobRequest updateProfileJobRequest = UpdateProfileJobRequest.builder()
                    .encryptionKeyArn(model.getEncryptionKeyArn())
                    .encryptionMode(model.getEncryptionMode())
                    .name(jobName)
                    .logSubscription(model.getLogSubscription())
                    .maxCapacity(model.getMaxCapacity())
                    .maxRetries(model.getMaxRetries())
                    .outputLocation(ModelHelper.buildRequestS3Location(model.getOutputLocation()))
                    .roleArn(model.getRoleArn())
                    .timeout(model.getTimeout())
                    .jobSample(ModelHelper.buildModelJobSample(model.getJobSample()))
                    .configuration(ModelHelper.buildRequestProfileConfiguration(model.getProfileConfiguration()))
                    .validationConfigurations(ModelHelper.buildRequestValidationConfigurations(model.getValidationConfigurations()))
                    .build();

            try {
                proxy.injectCredentialsAndInvokeV2(updateProfileJobRequest, databrewClient::updateProfileJob);
                logger.log(String.format("%s [%s] Created Successfully", ResourceModel.TYPE_NAME, jobName));
            } catch (ResourceNotFoundException ex) {
                logger.log(String.format("%s [%s] Does Not Exist", ResourceModel.TYPE_NAME, jobName));
                return ProgressEvent.defaultFailureHandler(ex, HandlerErrorCode.NotFound);
            } catch (ConflictException ex) {
                logger.log(String.format("%s [%s] Already Exists", ResourceModel.TYPE_NAME, jobName));
                return ProgressEvent.defaultFailureHandler(ex, HandlerErrorCode.AlreadyExists);
            } catch (ValidationException ex) {
                logger.log(String.format("%s [%s] Invalid Parameter", ResourceModel.TYPE_NAME, jobName));
                return ProgressEvent.defaultFailureHandler(ex, HandlerErrorCode.InvalidRequest);
            } catch (DataBrewException ex) {
                logger.log(String.format("%s Create Failed", ResourceModel.TYPE_NAME));
                return ProgressEvent.defaultFailureHandler(ex, HandlerErrorCode.ServiceInternalError);
            }
        }

        return ProgressEvent.<ResourceModel, CallbackContext>builder()
                .resourceModel(model)
                .status(OperationStatus.SUCCESS)
                .build();
    }