You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2022/01/18 08:52:04 UTC
[sling-org-apache-sling-jcr-resource] branch master updated: SLING-11066 sort URIProvider implementations by ranking (descending) (#20)
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-resource.git
The following commit(s) were added to refs/heads/master by this push:
new aff20ac SLING-11066 sort URIProvider implementations by ranking (descending) (#20)
aff20ac is described below
commit aff20ac7dea93fbc49ea6c4bb5242ecdd863f3b2
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Tue Jan 18 09:50:20 2022 +0100
SLING-11066 sort URIProvider implementations by ranking (descending) (#20)
---
.../internal/helper/jcr/JcrResourceProvider.java | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java b/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java
index 163ccba..32ac3e1 100644
--- a/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java
+++ b/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java
@@ -22,11 +22,14 @@ import java.io.Closeable;
import java.io.IOException;
import java.security.Principal;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicReference;
@@ -109,7 +112,11 @@ public class JcrResourceProvider extends ResourceProvider<JcrProviderState> {
/** The JCR observation listeners. */
private final Map<ObserverConfiguration, Closeable> listeners = new HashMap<>();
- private final Map<URIProvider, URIProvider> providers = new ConcurrentHashMap<URIProvider, URIProvider>();
+ /**
+ * Map of bound URIProviders sorted by service ranking in descending order (highest ranking first).
+ * Key = service reference, value = service implementation
+ */
+ private final SortedMap<ServiceReference<URIProvider>, URIProvider> providers = Collections.synchronizedSortedMap(new TreeMap<>(Collections.reverseOrder()));
private volatile SlingRepository repository;
@@ -161,13 +168,13 @@ public class JcrResourceProvider extends ResourceProvider<JcrProviderState> {
bind = "bindUriProvider",
unbind = "unbindUriProvider"
)
- private void bindUriProvider(URIProvider uriProvider) {
-
- providers.put(uriProvider, uriProvider);
+ private void bindUriProvider(ServiceReference<URIProvider> srUriProvider, URIProvider uriProvider) {
+ providers.put(srUriProvider, uriProvider);
updateURIProviders();
}
- private void unbindUriProvider(URIProvider uriProvider) {
- providers.remove(uriProvider);
+
+ private void unbindUriProvider(ServiceReference<URIProvider> srUriProvider) {
+ providers.remove(srUriProvider);
updateURIProviders();
}