private ProgressEvent updateQuickConnectConfig()

in aws-connect-quickconnect/src/main/java/software/amazon/connect/quickconnect/UpdateHandler.java [100:148]


    private ProgressEvent<ResourceModel, CallbackContext> updateQuickConnectConfig(final AmazonWebServicesClientProxy proxy,
                                                                                   final ProxyClient<ConnectClient> proxyClient,
                                                                                   final ResourceModel desiredStateModel,
                                                                                   final ResourceModel previousStateModel,
                                                                                   final ProgressEvent<ResourceModel, CallbackContext> progress,
                                                                                   final CallbackContext context,
                                                                                   final Logger logger) {
        if (!StringUtils.equals(desiredStateModel.getQuickConnectConfig().getQuickConnectType(), previousStateModel.getQuickConnectConfig().getQuickConnectType())) {
            logger.log(String.format("QuickConnectType:%s has changed from current type:%s in update operation, " +
                            "Calling UpdateQuickConnectConfig API for QuickConnect:%s", desiredStateModel.getQuickConnectConfig().getQuickConnectType(),
                    previousStateModel.getQuickConnectConfig().getQuickConnectType(), desiredStateModel.getQuickConnectArn()));
            return proxy.initiate("connect::updateQuickConnectConfig", proxyClient, desiredStateModel, context)
                    .translateToServiceRequest(UpdateHandler::translateToUpdateQuickConnectConfigRequest)
                    .makeServiceCall((req, clientProxy) -> invoke(req, clientProxy, clientProxy.client()::updateQuickConnectConfig, logger))
                    .progress();
        } else if (StringUtils.equals(desiredStateModel.getQuickConnectConfig().getQuickConnectType(), QuickConnectType.USER.toString())) {
            if (!StringUtils.equals(desiredStateModel.getQuickConnectConfig().getUserConfig().getContactFlowArn(), previousStateModel.getQuickConnectConfig().getUserConfig().getContactFlowArn()) ||
                    !StringUtils.equals(desiredStateModel.getQuickConnectConfig().getUserConfig().getUserArn(), previousStateModel.getQuickConnectConfig().getUserConfig().getUserArn())) {
                logger.log(String.format("QuickConnectType:USER is unchanged in update operation but the UserConfig properties " +
                        "have changed, Calling UpdateQuickConnectConfig API for QuickConnect:%s", desiredStateModel.getQuickConnectArn()));
                return proxy.initiate("connect::updateQuickConnectConfig", proxyClient, desiredStateModel, context)
                        .translateToServiceRequest(UpdateHandler::translateToUpdateQuickConnectConfigRequest)
                        .makeServiceCall((req, clientProxy) -> invoke(req, clientProxy, clientProxy.client()::updateQuickConnectConfig, logger))
                        .progress();
            }
        } else if (StringUtils.equals(desiredStateModel.getQuickConnectConfig().getQuickConnectType(), QuickConnectType.QUEUE.toString())) {
            if (!StringUtils.equals(desiredStateModel.getQuickConnectConfig().getQueueConfig().getContactFlowArn(), previousStateModel.getQuickConnectConfig().getQueueConfig().getContactFlowArn()) ||
                    !StringUtils.equals(desiredStateModel.getQuickConnectConfig().getQueueConfig().getQueueArn(), previousStateModel.getQuickConnectConfig().getQueueConfig().getQueueArn())) {
                logger.log(String.format("QuickConnectType:QUEUE is unchanged in update operation but the QueueConfig properties " +
                        "have changed, Calling UpdateQuickConnectConfig API for QuickConnect:%s", desiredStateModel.getQuickConnectArn()));
                return proxy.initiate("connect::updateQuickConnectConfig", proxyClient, desiredStateModel, context)
                        .translateToServiceRequest(UpdateHandler::translateToUpdateQuickConnectConfigRequest)
                        .makeServiceCall((req, clientProxy) -> invoke(req, clientProxy, clientProxy.client()::updateQuickConnectConfig, logger))
                        .progress();
            }
        } else if (StringUtils.equals(desiredStateModel.getQuickConnectConfig().getQuickConnectType(), QuickConnectType.PHONE_NUMBER.toString())) {
            if (!StringUtils.equals(desiredStateModel.getQuickConnectConfig().getPhoneConfig().getPhoneNumber(), previousStateModel.getQuickConnectConfig().getPhoneConfig().getPhoneNumber())) {
                logger.log(String.format("QuickConnectType:PHONE_NUMBER is unchanged in update operation but the PhoneConfig properties " +
                        "have changed, Calling UpdateQuickConnectConfig API for QuickConnect:%s", desiredStateModel.getQuickConnectArn()));
                return proxy.initiate("connect::updateQuickConnectConfig", proxyClient, desiredStateModel, context)
                        .translateToServiceRequest(UpdateHandler::translateToUpdateQuickConnectConfigRequest)
                        .makeServiceCall((req, clientProxy) -> invoke(req, clientProxy, clientProxy.client()::updateQuickConnectConfig, logger))
                        .progress();
            }
        }
        logger.log(String.format("QuickConnectConfig is unchanged in the update operation, skipping " +
                "UpdateQuickConnectConfig API call for QuickConnect:%s", desiredStateModel.getQuickConnectArn()));
        return progress;
    }