in src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java [86:104]
private void registerMergingResourceProvider(MergedResourcePicker2 resourcePicker, Map<String, Object> properties) {
final String mergeRoot = (String)properties.getOrDefault(MergedResourcePicker2.MERGE_ROOT, null);
if (mergeRoot != null) {
boolean readOnly = PropertiesUtil.toBoolean(properties.get(MergedResourcePicker2.READ_ONLY), true);
boolean traverseParent = PropertiesUtil.toBoolean(properties.get(MergedResourcePicker2.TRAVERSE_PARENT), false);
ResourceProvider<Void> provider = readOnly ?
new MergingResourceProvider(mergeRoot, resourcePicker, true, traverseParent) :
new CRUDMergingResourceProvider(mergeRoot, resourcePicker, traverseParent);
final Dictionary<String, Object> props = new Hashtable<>();
props.put(ResourceProvider.PROPERTY_NAME, readOnly ? "Merging" : "CRUDMerging");
props.put(ResourceProvider.PROPERTY_ROOT, mergeRoot);
props.put(ResourceProvider.PROPERTY_MODIFIABLE, !readOnly);
props.put(ResourceProvider.PROPERTY_AUTHENTICATE, ResourceProvider.AUTHENTICATE_NO);
final Long key = (Long) properties.get(Constants.SERVICE_ID);
final ServiceRegistration<ResourceProvider<Void>> resourceProvider = (ServiceRegistration<ResourceProvider<Void>>)bundleContext.registerService(ResourceProvider.class.getName(), provider, props);
resourceProvidersPerPickerServiceId.put(key, resourceProvider);
}
}