in src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java [197:233]
private void resolveNestedConfigs(Map<String, Object> props) {
if (configMetadata == null) {
return;
}
for (PropertyMetadata<?> propertyMetadata :
configMetadata.getPropertyMetadata().values()) {
if (propertyMetadata.isNestedConfiguration()) {
ConfigurationMetadata nestedConfigMetadata = propertyMetadata.getConfigurationMetadata();
String relatedConfigPath =
resolvedConfigurationResource != null ? resolvedConfigurationResource.getPath() : null;
String nestedConfigName;
if (configResourceCollection) {
String nestedCollectionItemName = StringUtils.defaultString(getCollectionItemName(), "newItem");
nestedConfigName = configurationPersistenceStrategy.getCollectionItemConfigName(
configurationPersistenceStrategy.getCollectionParentConfigName(
configName, relatedConfigPath)
+ "/" + nestedCollectionItemName,
relatedConfigPath)
+ "/" + nestedConfigMetadata.getName();
} else {
nestedConfigName = configurationPersistenceStrategy.getConfigName(configName, relatedConfigPath)
+ "/" + nestedConfigMetadata.getName();
}
if (propertyMetadata.getType().equals(ConfigurationMetadata.class)) {
ConfigurationData configData =
configurationManager.getConfiguration(contextResource, nestedConfigName);
props.put(propertyMetadata.getName(), configData);
} else if (propertyMetadata.getType().equals(ConfigurationMetadata[].class)) {
Collection<ConfigurationData> configDatas = configurationManager
.getConfigurationCollection(contextResource, nestedConfigName)
.getItems();
props.put(
propertyMetadata.getName(), configDatas.toArray(new ConfigurationData[configDatas.size()]));
}
}
}
}