You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2020/03/24 11:48:29 UTC

[sling-org-apache-sling-scripting-bundle-tracker] branch master updated: SLING-9252 - Optimise request dispatching for inheriting resource types

This is an automated email from the ASF dual-hosted git repository.

radu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-bundle-tracker.git


The following commit(s) were added to refs/heads/master by this push:
     new 1776151  SLING-9252 - Optimise request dispatching for inheriting resource types
1776151 is described below

commit 17761511b879fd03caa668349f979843a9b31ca2
Author: Radu Cotescu <ra...@apache.org>
AuthorDate: Tue Mar 24 12:48:18 2020 +0100

    SLING-9252 - Optimise request dispatching for inheriting resource types
---
 .../tracker/internal/BundledScriptTracker.java     | 23 ++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptTracker.java b/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptTracker.java
index 13ce403..540efde 100644
--- a/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptTracker.java
+++ b/src/main/java/org/apache/sling/scripting/bundle/tracker/internal/BundledScriptTracker.java
@@ -152,25 +152,28 @@ public class BundledScriptTracker implements BundleTrackerCustomizer<List<Servic
                     List<ServiceRegistration<Servlet>> regs = new ArrayList<>();
                     LinkedHashSet<TypeProvider> wiredProviders = new LinkedHashSet<>();
                     wiredProviders.add(new TypeProvider(resourceTypeCapability.getResourceTypes(), bundle));
-                    String extendedResourceType = resourceTypeCapability.getExtendedResourceType();
-                    if (StringUtils.isNotEmpty(extendedResourceType)) {
-                        BundleWire extendedWire = null;
+                    String extendedResourceTypeString = resourceTypeCapability.getExtendedResourceType();
+                    if (StringUtils.isNotEmpty(extendedResourceTypeString)) {
+                        Bundle providingBundle = null;
+                        ResourceType extendedResourceType = null;
                         ResourceTypeCapability extendedCapability = null;
-                        LOGGER.debug("Bundle {} extends resource type {} through {}.", bundle.getSymbolicName(), extendedResourceType,
-                                resourceTypesRegistrationValue);
                         for (BundleWire wire : bundleWiring.getRequiredWires(NS_SLING_RESOURCE_TYPE)) {
                             ResourceTypeCapability wiredCapability =
                                     ResourceTypeCapability.fromBundleCapability(wire.getCapability());
                             for (ResourceType resourceType : wiredCapability.getResourceTypes()) {
-                                if (extendedResourceType.equals(resourceType.getType()) && wiredCapability.getSelectors().isEmpty()) {
-                                    extendedWire = wire;
+                                if (extendedResourceTypeString.equals(resourceType.getType()) && wiredCapability.getSelectors().isEmpty()) {
+                                    providingBundle = wire.getProvider().getBundle();
                                     extendedCapability = wiredCapability;
+                                    extendedResourceType = resourceType;
+                                    LOGGER.debug("Bundle {} extends resource type {} through {}.", bundle.getSymbolicName(),
+                                            extendedResourceType.toString(), resourceTypesRegistrationValue);
+                                    break;
                                 }
                             }
                         }
-                        if (extendedWire != null) {
-                            wiredProviders.add(new TypeProvider(extendedCapability.getResourceTypes(), extendedWire.getProvider().getBundle()));
-                            properties.put(ServletResolverConstants.SLING_SERVLET_RESOURCE_SUPER_TYPE, extendedResourceType);
+                        if (providingBundle != null) {
+                            wiredProviders.add(new TypeProvider(extendedCapability.getResourceTypes(), providingBundle));
+                            properties.put(ServletResolverConstants.SLING_SERVLET_RESOURCE_SUPER_TYPE, extendedResourceType.toString());
                         }
                     }
                     populateWiredProviders(wiredProviders);