protected ProgressEvent handleRequest()

in aws-route53recoverycontrol-safetyrule/src/main/java/software/amazon/route53recoverycontrol/safetyrule/CreateHandler.java [29:79]


    protected ProgressEvent<ResourceModel, CallbackContext> handleRequest(
        final AmazonWebServicesClientProxy proxy,
        final ResourceHandlerRequest<ResourceModel> request,
        final CallbackContext callbackContext,
        final ProxyClient<Route53RecoveryControlConfigClient> proxyClient,
        final Logger logger) {

        this.logger = logger;

        ResourceModel currentModel = request.getDesiredResourceState();

        boolean isAssertion = isAssertion(currentModel);

        String controlPanelArn = currentModel.getControlPanelArn();

        List<String> routingControls = isAssertion ? currentModel.getAssertionRule().getAssertedControls() : currentModel.getGatingRule().getGatingControls();

        // Control Panel existence check
        DescribeControlPanelRequest controlPanelRequest = DescribeControlPanelRequest.builder().controlPanelArn(controlPanelArn).build();
        describeControlPanel(controlPanelRequest, proxyClient);

        //Routing Controls existence check
        if (routingControls.size() > 0) {
            for (String routingControl : routingControls) {
                DescribeRoutingControlRequest routingControlRequest = DescribeRoutingControlRequest.builder().routingControlArn(routingControl).build();
                getRoutingControl(routingControlRequest, proxyClient);
            }
        }

        // Target Controls existence check
        if (!isAssertion) {
            List<String> targetControls = currentModel.getGatingRule().getTargetControls();
            if (targetControls.size() > 0) {
                for (String targetControl : targetControls) {
                    DescribeRoutingControlRequest routingControlRequest = DescribeRoutingControlRequest.builder().routingControlArn(targetControl).build();
                    getRoutingControl(routingControlRequest, proxyClient);
                }
            }
        }

        return ProgressEvent.progress(request.getDesiredResourceState(), callbackContext)
                .then(progress ->
                            proxy.initiate("AWS-Route53RecoveryControl-SafetyRule::Create", proxyClient, progress.getResourceModel(), progress.getCallbackContext())
                                    .translateToServiceRequest(Translator::translateToCreateRequest)
                                    .makeServiceCall(this::createSafetyRule)
                                    .stabilize(this::isStabilized)
                                    .progress()
                )
                .then(progress -> new ReadHandler().handleRequest(proxy, request, callbackContext, proxyClient, logger));

    }