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-js-provider.git


The following commit(s) were added to refs/heads/master by this push:
     new c6b5a6d  SLING-9599 - Incomplete non-existing resource check
c6b5a6d is described below

commit c6b5a6d06c8aef78a24195d20e3bd7b7318131ef
Author: Radu Cotescu <[email protected]>
AuthorDate: Tue Jul 21 23:36:52 2020 +0200

    SLING-9599 - Incomplete non-existing resource check
    
    * bring back support for relative paths
---
 .../sightly/js/impl/use/DependencyResolver.java    | 24 ++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/DependencyResolver.java
 
b/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/DependencyResolver.java
index c586b78..ab02bc2 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/DependencyResolver.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/js/impl/use/DependencyResolver.java
@@ -77,9 +77,17 @@ public class DependencyResolver {
                 }
                 if (caller != null && Utils.isJsScript(caller.getName()) &&
                         
("sling/bundle/resource".equals(caller.getResourceType()) || 
"nt:file".equals(caller.getResourceType()))) {
-                    caller = caller.getParent();
-                    if (caller != null) {
-                        scriptResource = caller.getChild(dependency);
+                    if (dependency.startsWith(".")) {
+                        // relative path
+                        String absolutePath = 
ResourceUtil.normalize(caller.getPath() + "/" + dependency);
+                        if (StringUtils.isNotEmpty(absolutePath)) {
+                            scriptResource = 
scriptingResourceResolver.resolve(absolutePath);
+                        }
+                    } else {
+                        caller = caller.getParent();
+                        if (caller != null) {
+                            scriptResource = caller.getChild(dependency);
+                        }
                     }
                 }
 
@@ -105,7 +113,15 @@ public class DependencyResolver {
                         servletResource = 
scriptingResourceResolver.resolve(type);
                     }
                     if (servletResource != null) {
-                        scriptResource = servletResource.getChild(dependency);
+                        if (dependency.startsWith(".")) {
+                            // relative path
+                            String absolutePath = 
ResourceUtil.normalize(servletResource.getPath() + "/" + dependency);
+                            if (StringUtils.isNotEmpty(absolutePath)) {
+                                scriptResource = 
scriptingResourceResolver.resolve(absolutePath);
+                            }
+                        } else {
+                            scriptResource = 
servletResource.getChild(dependency);
+                        }
                         type = servletResource.getResourceSuperType();
                     } else {
                         type = null;

Reply via email to