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-sightly.git


The following commit(s) were added to refs/heads/master by this push:
     new 65c4814  SLING-9718 - Relative paths for bundled HTL template files 
are not correctly handled
65c4814 is described below

commit 65c481435fe664ff1a6c7fc66026c0d1c38f1489
Author: Radu Cotescu <[email protected]>
AuthorDate: Thu Sep 3 18:49:04 2020 +0200

    SLING-9718 - Relative paths for bundled HTL template files are not 
correctly handled
    
    * if a servlet resource is found, work directly with its path to find the 
script class
    or bundle entry
    * corrected class name / file name when working with identifiers containing
    relative path segments
---
 .../engine/bundled/BundledUnitManagerImpl.java     | 24 +++++++++++++---------
 .../engine/extension/use/RenderUnitProvider.java   |  2 +-
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/bundled/BundledUnitManagerImpl.java
 
b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/bundled/BundledUnitManagerImpl.java
index 13d88a3..1676bf8 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/bundled/BundledUnitManagerImpl.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/bundled/BundledUnitManagerImpl.java
@@ -115,11 +115,18 @@ public class BundledUnitManagerImpl implements 
BundledUnitManager {
     public RenderUnit getRenderUnit(@NotNull Bindings bindings, @NotNull 
String identifier) {
         BundledRenderUnit bundledRenderUnit = getBundledRenderUnit(bindings);
         Resource currentResource = BindingsUtils.getResource(bindings);
-        List<String> searchPathRelativeLocations = new ArrayList<>();
-        if (!identifier.startsWith("/")) {
-            ResourceResolver scriptingResourceResolver = 
scriptingResourceResolverProvider.getRequestScopedResourceResolver();
-            for (String searchPath : 
scriptingResourceResolver.getSearchPath()) {
-                
searchPathRelativeLocations.add(ResourceUtil.normalize(searchPath + "/" + 
identifier));
+        Set<String> defaultLocations = new LinkedHashSet<>();
+        for (String searchPath : 
scriptingResourceResolverProvider.getRequestScopedResourceResolver().getSearchPath())
 {
+            if (identifier.startsWith("/")) {
+                defaultLocations.add(identifier);
+                if (identifier.startsWith(searchPath)) {
+                    
defaultLocations.add(identifier.substring(searchPath.length()));
+                }
+            } else {
+                String path = ResourceUtil.normalize(searchPath + "/" + 
identifier);
+                if (path != null) {
+                    defaultLocations.add(path);
+                }
             }
         }
         if (currentResource != null && bundledRenderUnit != null) {
@@ -129,10 +136,8 @@ public class BundledUnitManagerImpl implements 
BundledUnitManager {
                     for (ResourceType type : 
provider.getBundledRenderUnitCapability().getResourceTypes()) {
                         locations.add(getResourceTypeQualifiedPath(identifier, 
type));
                     }
-                    locations.addAll(searchPathRelativeLocations);
-                } else {
-                    locations.add(identifier);
                 }
+                locations.addAll(defaultLocations);
                 for (String renderUnitIdentifier : locations) {
                     String renderUnitBundledPath = renderUnitIdentifier;
                     if (renderUnitBundledPath.startsWith("/")) {
@@ -185,8 +190,7 @@ public class BundledUnitManagerImpl implements 
BundledUnitManager {
         if (currentResource != null && bundledRenderUnit != null) {
             for (TypeProvider provider : bundledRenderUnit.getTypeProviders()) 
{
                 for (ResourceType type : 
provider.getBundledRenderUnitCapability().getResourceTypes()) {
-                    String scriptResourcePath = 
getResourceTypeQualifiedPath(identifier, type);
-                    String scriptBundledPath = scriptResourcePath;
+                    String scriptBundledPath = 
getResourceTypeQualifiedPath(identifier, type);
                     if (scriptBundledPath.startsWith("/")) {
                         scriptBundledPath = scriptBundledPath.substring(1);
                     }
diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java
 
b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java
index fe3de7e..22ab065 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/RenderUnitProvider.java
@@ -117,7 +117,7 @@ public class RenderUnitProvider implements UseProvider {
             try {
                 if ("true".equalsIgnoreCase((String) 
renderUnitResource.getResourceMetadata().get("sling.servlet.resource"))) {
                     // bundled dependency
-                    RenderUnit renderUnit = 
bundledUnitManager.getRenderUnit(globalBindings, identifier);
+                    RenderUnit renderUnit = 
bundledUnitManager.getRenderUnit(globalBindings, renderUnitResource.getPath());
                     if (renderUnit != null) {
                         return ProviderOutcome.success(renderUnit);
                     }

Reply via email to