This is an automated email from the ASF dual-hosted git repository. radu pushed a commit to branch issue/osgi-registrations in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourcemerger.git
commit d0b0cfe6a73ac8998d2d3887bb0bfc9ba2b66d32 Author: Radu Cotescu <[email protected]> AuthorDate: Mon Feb 13 20:00:31 2023 +0100 SLING-11774 - Fix the registration of the MergedResourcePicker2 implementations * make sure to use the service registration merged properties rather than only the configuration properties when registering the pickers as ResourceProviders --- .../impl/MergedResourcePickerWhiteboard.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java b/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java index 275ec9e..c169a01 100644 --- a/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java +++ b/src/main/java/org/apache/sling/resourcemerger/impl/MergedResourcePickerWhiteboard.java @@ -18,7 +18,9 @@ */ package org.apache.sling.resourcemerger.impl; +import java.util.Arrays; import java.util.Dictionary; +import java.util.HashMap; import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -32,6 +34,7 @@ import org.apache.sling.resourcemerger.spi.MergedResourcePicker2; import org.apache.sling.spi.resource.provider.ResourceProvider; import org.osgi.framework.BundleContext; import org.osgi.framework.Constants; +import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; @@ -64,7 +67,11 @@ public class MergedResourcePickerWhiteboard { } @Reference(policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.MULTIPLE) - public void bindMergedResourcePicker(MergedResourcePicker resourcePicker, Map<String, Object> properties) { + public void bindMergedResourcePicker(MergedResourcePicker resourcePicker, + ServiceReference<MergedResourcePicker> reference) { + final Map<String, Object> properties = new HashMap<String, Object>(); + Arrays.stream(reference.getPropertyKeys()).forEach(property -> properties.put(property, + reference.getProperty(property))); registerMergingResourceProvider((resolver, relativePath, relatedResource) -> resourcePicker.pickResources(resolver, relativePath), properties); } @@ -73,7 +80,11 @@ public class MergedResourcePickerWhiteboard { } @Reference(policy = ReferencePolicy.DYNAMIC, cardinality = ReferenceCardinality.MULTIPLE) - public void bindMergedResourcePicker2(MergedResourcePicker2 resourcePicker, Map<String, Object> properties) { + public void bindMergedResourcePicker2(MergedResourcePicker2 resourcePicker, + final ServiceReference<MergedResourcePicker2> reference) { + final Map<String, Object> properties = new HashMap<String, Object>(); + Arrays.stream(reference.getPropertyKeys()).forEach(property -> properties.put(property, + reference.getProperty(property))); registerMergingResourceProvider(resourcePicker, properties); }
