You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2022/01/26 16:42:40 UTC
[sling-org-apache-sling-servlets-resolver] branch master updated: SLING-11093: only register the absolute resource type if the relative resource type is the same (#26)
This is an automated email from the ASF dual-hosted git repository.
pauls pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git
The following commit(s) were added to refs/heads/master by this push:
new eb9743b SLING-11093: only register the absolute resource type if the relative resource type is the same (#26)
eb9743b is described below
commit eb9743bd2086a9998105437e40b5f473990a7f07
Author: Karl Pauls <pa...@apache.org>
AuthorDate: Wed Jan 26 17:42:33 2022 +0100
SLING-11093: only register the absolute resource type if the relative resource type is the same (#26)
---
.../resolver/internal/bundle/BundledScriptTracker.java | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledScriptTracker.java b/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledScriptTracker.java
index 6454e63..62f8726 100644
--- a/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledScriptTracker.java
+++ b/src/main/java/org/apache/sling/servlets/resolver/internal/bundle/BundledScriptTracker.java
@@ -54,6 +54,7 @@ import org.apache.sling.api.SlingConstants;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.request.RequestDispatcherOptions;
+import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.resource.type.ResourceType;
import org.apache.sling.api.servlets.ServletResolverConstants;
@@ -110,6 +111,9 @@ public class BundledScriptTracker implements BundleTrackerCustomizer<List<Servic
@Reference
private ServletMounter mounter;
+ @Reference
+ private ResourceResolverFactory resourceResolverFactory;
+
private AtomicReference<BundleContext> bundleContext = new AtomicReference<>();
private AtomicReference<BundleTracker<List<ServiceRegistration<Servlet>>>> tracker = new AtomicReference<>();
private AtomicReference<Map<Set<String>, ServiceRegistration<Servlet>>> dispatchers = new AtomicReference<>();
@@ -163,11 +167,21 @@ public class BundledScriptTracker implements BundleTrackerCustomizer<List<Servic
LinkedHashSet<TypeProvider> inheritanceChain = new LinkedHashSet<>();
inheritanceChain.add(baseTypeProvider);
if (!bundledRenderUnitCapability.getResourceTypes().isEmpty()) {
- String[] resourceTypesRegistrationValue = new String[bundledRenderUnitCapability.getResourceTypes().size()];
+ LinkedHashSet<String> resourceTypesRegistrationValueSet = new LinkedHashSet<>();
int rtIndex = 0;
for (ResourceType resourceType : bundledRenderUnitCapability.getResourceTypes()) {
- resourceTypesRegistrationValue[rtIndex++] = resourceType.toString();
+ resourceTypesRegistrationValueSet.add(resourceType.toString());
}
+ String[] resourceTypesRegistrationValue = resourceTypesRegistrationValueSet.stream().filter(rt -> {
+ if (!rt.startsWith("/")) {
+ for (String prefix : resourceResolverFactory.getSearchPath()) {
+ if (resourceTypesRegistrationValueSet.contains(prefix.concat(rt))) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }).toArray(String[]::new);
properties.put(ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES, resourceTypesRegistrationValue);
String extension = bundledRenderUnitCapability.getExtension();