in src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationPersistHelper.java [86:120]
void writeConfigurationCollection(
@NotNull String configName, @NotNull Collection<@NotNull Map<String, Object>> values) {
// split each collection item map in it's parts
Map<String, ConfigurationDataParts> partsCollection = new LinkedHashMap<>();
int index = 0;
for (Map<String, Object> map : values) {
partsCollection.put("item" + (index++), new ConfigurationDataParts(map));
}
// write properties of main configuration collection
List<ConfigurationPersistData> items = partsCollection.entrySet().stream()
.map(entry ->
new ConfigurationPersistData(entry.getValue().getValues()).collectionItemName(entry.getKey()))
.collect(Collectors.toList());
configManager.persistConfigurationCollection(
contextResource, configName, new ConfigurationCollectionPersistData(items));
// write nested configuration and nested configuration collections
for (Map.Entry<String, ConfigurationDataParts> entry : partsCollection.entrySet()) {
String itemName = entry.getKey();
ConfigurationDataParts parts = entry.getValue();
for (Map.Entry<String, Map<String, Object>> nestedMap :
parts.getMaps().entrySet()) {
writeConfiguration(
getNestedCollectionItemConfigName(configName, itemName, nestedMap.getKey()),
nestedMap.getValue());
}
for (Map.Entry<String, Collection<Map<String, Object>>> nestedCollection :
parts.getCollections().entrySet()) {
writeConfigurationCollection(
getNestedCollectionItemConfigName(configName, itemName, nestedCollection.getKey()),
nestedCollection.getValue());
}
}
}