private Map applyDefaultValues()

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