in src/main/java/org/apache/sling/scripting/sightly/impl/utils/ScriptDependencyResolver.java [92:129]
public Resource resolveScript(RenderContext renderContext, String scriptIdentifier) {
readLock.lock();
try {
SlingHttpServletRequest request = BindingsUtils.getRequest(renderContext.getBindings());
String cacheKey = request.getResource().getResourceType() + ":" + scriptIdentifier;
Resource result = null;
if (!resolutionCache.containsKey(cacheKey)) {
readLock.unlock();
writeLock.lock();
try {
Resource caller =
ResourceResolution.getResourceForRequest(scriptingResourceResolverProvider.getRequestScopedResourceResolver(),
request);
result = ResourceResolution.getResourceFromSearchPath(caller, scriptIdentifier);
if (result == null) {
SlingScriptHelper sling = BindingsUtils.getHelper(renderContext.getBindings());
if (sling != null) {
caller = getResource(scriptingResourceResolverProvider.getRequestScopedResourceResolver(),
sling.getScript().getScriptResource());
result = ResourceResolution.getResourceFromSearchPath(caller, scriptIdentifier);
}
}
if (result != null) {
resolutionCache.put(cacheKey, result.getPath());
}
readLock.lock();
} finally {
writeLock.unlock();
}
} else {
String scriptPath = resolutionCache.get(cacheKey);
result = scriptingResourceResolverProvider.getRequestScopedResourceResolver().getResource(scriptPath);
}
return result;
} finally {
readLock.unlock();
}
}