private void registerMergingResourceProvider()

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