protected UpdateResourceCollectionResponse updateResourceCollection()

in aws-devopsguru-resourcecollection/src/main/java/software/amazon/devopsguru/resourcecollection/BaseHandlerStd.java [128:173]


    protected UpdateResourceCollectionResponse updateResourceCollection(
            final UpdateResourceCollectionRequest updateResourceCollectionRequest,
            final ProxyClient<DevOpsGuruClient> proxyClient,
            final ResourceModel model,
            final Logger logger,
            final boolean overrideEmpty) {
        UpdateResourceCollectionResponse updateResourceCollectionResponse = null;
        List<String> getResourceCollectionResponseStackNames = null;

        try {
            GetResourceCollectionRequest getResourceCollectionRequest =
                    GetResourceCollectionRequest.builder().resourceCollectionType(ResourceCollectionType.AWS_CLOUD_FORMATION.getName()).build();
            getResourceCollectionResponseStackNames = getAllResourceCollection(getResourceCollectionRequest,
                    proxyClient, model, logger);
            logger.log(String.format("getAllResourceCollection return %s", getResourceCollectionResponseStackNames));
        } catch (CfnNotFoundException e) {
            if (overrideEmpty) {
                getResourceCollectionResponseStackNames = new ArrayList<>();
                logger.log("This is user first time onboarding. Setting existing list as empty.");
            } else {
                logger.log("Attempting to update non-existent resource");
                throw e;
            }
        }
        List<String> updateStackNames =
                updateResourceCollectionRequest.resourceCollection().cloudFormation().stackNames();

        Set<String> updateStackNamesSet = new HashSet<>(updateStackNames);
        Set<String> existingStackNamesSet = new HashSet<>(getResourceCollectionResponseStackNames);
        List<String> addStackNames = new ArrayList<>(Sets.difference(updateStackNamesSet, existingStackNamesSet));
        List<String> removeStackNames = new ArrayList<>(Sets.difference(existingStackNamesSet, updateStackNamesSet));

        if (addStackNames.size() > 0) {
            updateResourceCollectionResponse = updateResourceCollectionByBatch(addStackNames, Translator.AddAction,
                    proxyClient, logger);
        }

        if (removeStackNames.size() > 0 && !existingStackNamesSet.contains("*") && !updateStackNamesSet.contains("*")) {
            updateResourceCollectionResponse = updateResourceCollectionByBatch(removeStackNames,
                    Translator.RemoveAction, proxyClient, logger);
        }
        if (updateResourceCollectionResponse == null)
            return UpdateResourceCollectionResponse.builder().build();
        else
            return updateResourceCollectionResponse;
    }