You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2018/09/19 15:51:12 UTC
[sling-org-apache-sling-scripting-sightly] branch
experimental-scripting-resolver updated: allow the usage of a provided
classloader
This is an automated email from the ASF dual-hosted git repository.
radu pushed a commit to branch experimental-scripting-resolver
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-sightly.git
The following commit(s) were added to refs/heads/experimental-scripting-resolver by this push:
new 4ca98cd allow the usage of a provided classloader
4ca98cd is described below
commit 4ca98cd13cfe41aab16a3402988564b7ca8b1b4f
Author: Radu Cotescu <ra...@apache.org>
AuthorDate: Wed Sep 19 17:48:26 2018 +0200
allow the usage of a provided classloader
---
.../sightly/impl/engine/extension/use/JavaUseProvider.java | 6 +++++-
.../scripting/sightly/impl/engine/runtime/RenderContextImpl.java | 6 ++++++
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/JavaUseProvider.java b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/JavaUseProvider.java
index 13e95ec..c0f65ee 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/JavaUseProvider.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/use/JavaUseProvider.java
@@ -93,7 +93,11 @@ public class JavaUseProvider implements UseProvider {
return ProviderOutcome.success(result);
} else {
LOG.debug("Attempting to load class {} from the classloader cache.", identifier);
- Class<?> cls = classLoaderWriter.getClassLoader().loadClass(identifier);
+ ClassLoader classLoader = (ClassLoader) renderContext.getBindings().get("org.apache.sling.scripting.sightly.render_unit.loader");
+ if (classLoader == null) {
+ classLoader = classLoaderWriter.getClassLoader();
+ }
+ Class<?> cls = classLoader.loadClass(identifier);
// attempt OSGi service load
result = sling.getService(cls);
if (result != null) {
diff --git a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/runtime/RenderContextImpl.java b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/runtime/RenderContextImpl.java
index e70d6e4..648c339 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/impl/engine/runtime/RenderContextImpl.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/impl/engine/runtime/RenderContextImpl.java
@@ -22,6 +22,7 @@ import java.util.Map;
import javax.script.Bindings;
import javax.script.ScriptContext;
+import org.apache.sling.api.scripting.SlingScriptConstants;
import org.apache.sling.scripting.sightly.SightlyException;
import org.apache.sling.scripting.sightly.extension.RuntimeExtension;
import org.apache.sling.scripting.sightly.impl.engine.ExtensionRegistryService;
@@ -42,6 +43,11 @@ public class RenderContextImpl implements RenderContext {
public RenderContextImpl(ScriptContext scriptContext) {
bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
+ ClassLoader classLoader = (ClassLoader) scriptContext.getAttribute("precompiled.bundle.classloader",
+ SlingScriptConstants.SLING_SCOPE);
+ if (classLoader != null) {
+ bindings.put("org.apache.sling.scripting.sightly.render_unit.loader", classLoader);
+ }
extensionRegistryService = BindingsUtils.getHelper(bindings).getService(ExtensionRegistryService.class);
}