private void validateGroups()

in src/main/java/aws/cfn/codegen/json/Config.java [182:221]


    private void validateGroups() {
        if (groups.isEmpty()) {
            GroupSpec spec = GroupSpec.includesOnly("all", "AWS.*");
            groups.put(spec.getGroupName(), spec);
        }

        // Merge as needed
        GroupSpec defaultGrpSpec = groups.containsKey("default") ?
            groups.remove("default") :
            GroupSpec.includesOnly("default", "Tag.*");
        Optional<Set<String>> defaultIncludes = Optional.ofNullable(defaultGrpSpec.getIncludes());
        Optional<Set<String>> defaultExcludes = Optional.ofNullable(defaultGrpSpec.getExcludes());

        // merge default and then compile the specifications
        groups.entrySet().stream()
            .map(e -> {
                GroupSpec grp = e.getValue();
                grp.setGroupName(e.getKey());
                grp.setIncludes(
                    Optional.ofNullable(grp.getIncludes())
                        .map(s ->
                            defaultIncludes.
                                map(ds -> { s.addAll(ds); return s; })
                                .orElse(s)
                        )
                        .orElseGet(defaultGrpSpec::getIncludes));
                grp.setExcludes(
                    Optional.ofNullable(grp.getExcludes())
                        .map(s ->
                            defaultExcludes
                                .map(ds -> { s.addAll(ds); return s; })
                                .orElse(s)
                        )
                        .orElseGet(defaultGrpSpec::getExcludes)
                );
                return e;
            })
            .map(Map.Entry::getValue)
            .forEach(GroupSpec::compile);
    }