in src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java [278:302]
private Map<String, Object> applyDefaultValues(Map<String, Object> props, String configName) {
ConfigurationMetadata metadata = configurationMetadataProvider.getConfigurationMetadata(configName);
if (metadata == null) {
// probably a configuration list - remove item name from end
if (StringUtils.contains(configName, "/")) {
String partialConfigName = StringUtils.substringBeforeLast(configName, "/");
metadata = configurationMetadataProvider.getConfigurationMetadata(partialConfigName);
}
if (metadata == null) {
return null;
}
}
Map<String, Object> updatedMap = new HashMap<>();
for (PropertyMetadata<?> propertyMetadata :
metadata.getPropertyMetadata().values()) {
if (propertyMetadata.getDefaultValue() != null) {
updatedMap.put(propertyMetadata.getName(), propertyMetadata.getDefaultValue());
}
}
if (updatedMap.isEmpty()) {
return null;
}
updatedMap.putAll(props);
return updatedMap;
}