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 b90f060  SLING-9599 - Incomplete non-existing resource check
b90f060 is described below

commit b90f0602c308b0fa014ee687d63301b0951249d6
Author: Radu Cotescu <[email protected]>
AuthorDate: Fri Jul 24 16:11:37 2020 +0200

    SLING-9599 - Incomplete non-existing resource check
    
    * simplify logic
---
 .../scripting/sightly/js/impl/JsEnvironment.java   |  2 +-
 .../sightly/js/impl/use/DependencyResolver.java    | 34 ++++++++++------------
 2 files changed, 17 insertions(+), 19 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java 
b/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java
index 1dbb3de..8e36e8a 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/js/impl/JsEnvironment.java
@@ -90,12 +90,12 @@ public class JsEnvironment {
 
     private Bindings buildBindings(ScriptNameAwareReader reader, Bindings 
globalBindings, Bindings arguments, CommonJsModule commonJsModule) {
         Bindings bindings = new LazyBindings();
+        bindings.putAll(globalBindings);
         bindings.putAll(engineBindings);
         bindings.put(ScriptEngine.FILENAME, reader.getScriptName());
         bindings.put(Variables.MODULE, commonJsModule);
         bindings.put(Variables.EXPORTS, commonJsModule.getExports());
         bindings.put(Variables.CONSOLE, new 
Console(LoggerFactory.getLogger(reader.getScriptName())));
-        bindings.putAll(globalBindings);
         UseFunction useFunction = new UseFunction(this, dependencyResolver, 
bindings, arguments);
         bindings.put(Variables.JS_USE, useFunction);
         return bindings;
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 b6af89c..7b0a09e 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
@@ -29,7 +29,6 @@ import javax.script.ScriptEngine;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.sling.api.resource.NonExistingResource;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceUtil;
@@ -59,13 +58,13 @@ public class DependencyResolver {
         ScriptNameAwareReader reader = null;
         IOException ioException = null;
         try {
+            Resource caller = null;
             Resource scriptResource = null;
             if (dependency.startsWith("/")) {
                 scriptResource = 
scriptingResourceResolver.getResource(dependency);
             }
             if (scriptResource == null) {
                 String callerName = (String) 
bindings.get(ScriptEngine.FILENAME);
-                Resource caller = null;
                 if (StringUtils.isNotEmpty(callerName)) {
                     caller = scriptingResourceResolver.getResource(callerName);
                 }
@@ -75,20 +74,19 @@ public class DependencyResolver {
                         caller = scriptHelper.getScript().getScriptResource();
                     }
                 }
-                if (caller != null && Utils.isJsScript(caller.getName()) &&
-                        
("sling/bundle/resource".equals(caller.getResourceType()) || 
"nt:file".equals(caller.getResourceType()))) {
-                    if (dependency.startsWith("..")) {
+            }
+            if (caller != null && Utils.isJsScript(caller.getName())) {
+                if (dependency.startsWith("..")) {
+                    scriptResource = caller.getChild(dependency);
+                } else {
+                    caller = caller.getParent();
+                    if (caller != null) {
                         scriptResource = caller.getChild(dependency);
-                    } else {
-                        caller = caller.getParent();
-                        if (caller != null) {
-                            scriptResource = caller.getChild(dependency);
-                        }
                     }
                 }
-
             }
-            if (scriptResource == null) {
+
+            if (caller != null && scriptResource == null) {
                 Resource requestResource = (Resource) 
bindings.get(SlingBindings.RESOURCE);
                 String type = requestResource.getResourceType();
                 while (scriptResource == null && type != null) {
@@ -96,20 +94,20 @@ public class DependencyResolver {
                     if (!type.startsWith("/")) {
                         for (String searchPath : 
scriptingResourceResolver.getSearchPath()) {
                             String normalizedPath = 
ResourceUtil.normalize(searchPath + "/" + type);
-                            servletResource = 
resolveServletResource(normalizedPath);
+                            servletResource = resolveResource(normalizedPath);
                             if (servletResource != null) {
                                 break;
                             }
                         }
                     } else {
-                        servletResource = resolveServletResource(type);
+                        servletResource = resolveResource(type);
                     }
                     if (servletResource != null) {
-                        if (dependency.startsWith(".")) {
+                        if (dependency.startsWith("..")) {
                             // relative path
-                            String absolutePath = 
ResourceUtil.normalize(servletResource.getPath() + "/" + dependency);
+                            String absolutePath = 
ResourceUtil.normalize(caller.getPath() + "/" + dependency);
                             if (StringUtils.isNotEmpty(absolutePath)) {
-                                scriptResource = 
scriptingResourceResolver.resolve(absolutePath);
+                                scriptResource = resolveResource(absolutePath);
                             }
                         } else {
                             scriptResource = 
servletResource.getChild(dependency);
@@ -135,7 +133,7 @@ public class DependencyResolver {
         return reader;
     }
 
-    Resource resolveServletResource(String type) {
+    Resource resolveResource(String type) {
         Resource servletResource = scriptingResourceResolver.resolve(type);
         if (ResourceUtil.isNonExistingResource(servletResource)) {
             servletResource = scriptingResourceResolver.getResource(type);

Reply via email to