in src/main/java/org/apache/sling/distribution/component/impl/ResourceConfigurationManager.java [96:135]
public void saveConfig(ResourceResolver resolver, DistributionConfiguration config) {
Resource configRoot = resolver.getResource(configRootPath);
if (configRoot == null) {
return;
}
Resource configResource = configRoot.getChild(config.getName());
Resource contentResource = (configResource != null)
? configResource.getChild(CONTENT_NODE)
: null ;
try {
if (configResource == null) {
Map<String, Object> configMap = new HashMap<String, Object>();
configMap.put("jcr:primaryType", "sling:Folder");
configResource = resolver.create(configRoot, config.getName(), configMap);
}
if (contentResource == null) {
Map<String, Object> contentMap = new HashMap<String, Object>();
contentMap.put("jcr:primaryType", "nt:unstructured");
contentResource = resolver.create(configResource, CONTENT_NODE, contentMap);
}
Map<String, Object> properties = config.getProperties();
properties = filterMap(properties);
for (Map.Entry<String, String> propDefault : configDefaults.entrySet()) {
if (!properties.containsKey(propDefault.getKey())) {
properties.put(propDefault.getKey(),propDefault.getValue());
}
}
ModifiableValueMap valueMap = contentResource.adaptTo(ModifiableValueMap.class);
valueMap.putAll(properties);
} catch (PersistenceException e) {
log.error("cannot save config {}", config.getName(), e);
}
}