public ProgressEvent handleRequest()

in aws-iot-resourcespecificlogging/src/main/java/software/amazon/iot/resourcespecificlogging/UpdateHandler.java [28:87]


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

        final ResourceModel model = request.getDesiredResourceState();

        if (StringUtils.isNullOrEmpty(model.getTargetId())) {
            return ProgressEvent.failed(model, callbackContext,
                    HandlerErrorCode.NotFound,
                    "The targetId for the resource is null or empty.");
        }

        //fetch targetType and targetName from targetId
        String[] targetIdArray = model.getTargetId().split(":", 2);

        String targetType = targetIdArray[0];

        String targetName = targetIdArray[1];

        //If resource has already existed, throw alreadyExist exception
        String logLevelForTarget;

        logger.log("Call ListLoggingLevels to get a specific log level for this target.");

        try {
            logLevelForTarget = HandlerUtils.getLoggingLevelForTarget(targetType, targetName, proxy, iotClient);
        } catch (RuntimeException e) {
            return ExceptionTranslator.translateExceptionToProgressEvent(model, e, logger);
        }

        if (logLevelForTarget == null) {
            return ProgressEvent.failed(model, callbackContext,
                    HandlerErrorCode.NotFound,
                    "The logLevel for this target doesn't exist.");
        }

        //update resource
        software.amazon.awssdk.services.iot.model.LogTarget logTarget = LogTarget.builder()
                .targetType(targetType)
                .targetName(targetName)
                .build();

        SetV2LoggingLevelRequest setV2LoggingLevelRequest = SetV2LoggingLevelRequest.builder()
                .logLevel(model.getLogLevel())
                .logTarget(logTarget)
                .build();

        try {
            proxy.injectCredentialsAndInvokeV2(setV2LoggingLevelRequest, iotClient::setV2LoggingLevel);

        } catch (RuntimeException e) {
            return ExceptionTranslator.translateExceptionToProgressEvent(model, e, logger);
        }

        logger.log(String.format("Update %s [%s] successfully", ResourceModel.TYPE_NAME, model.getTargetId()));

        return ProgressEvent.defaultSuccessHandler(model);
    }