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);