public void reportProgress()

in src/main/java/software/amazon/cloudformation/proxy/CloudFormationCallbackAdapter.java [55:89]


    public void reportProgress(final String bearerToken,
                               final HandlerErrorCode errorCode,
                               final OperationStatus operationStatus,
                               final OperationStatus currentOperationStatus,
                               final T resourceModel,
                               final String statusMessage) {
        assert client != null : "CloudWatchEventsClient was not initialised. You must call refreshClient() first.";

        RecordHandlerProgressRequest.Builder requestBuilder = RecordHandlerProgressRequest.builder().bearerToken(bearerToken)
            .operationStatus(translate(operationStatus)).statusMessage(statusMessage)
            .clientRequestToken(UUID.randomUUID().toString());

        if (resourceModel != null) {
            try {
                JSONObject jsonModel = new JSONObject(this.serializer.serialize(resourceModel));
                resourceTypeSchema.removeWriteOnlyProperties(jsonModel);
                // expect return type to be non-null
                requestBuilder.resourceModel(jsonModel.toString());
            } catch (JsonProcessingException e) {
                throw new TerminalException("Unable to serialize resource model for reporting progress", e);
            }
        }

        if (errorCode != null) {
            requestBuilder.errorCode(translate(errorCode));
        }

        if (currentOperationStatus != null) {
            requestBuilder.currentOperationStatus(translate(currentOperationStatus));
        }
        // TODO: be far more fault tolerant, do retries, emit logs and metrics, etc.
        RecordHandlerProgressResponse response = this.client.recordHandlerProgress(requestBuilder.build());
        loggerProxy.log(String.format("Record Handler Progress with Request Id %s and Request: {%s}",
            response.responseMetadata().requestId(), requestBuilder.build().toString()));
    }