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);
}