You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:04:00 UTC
[sling-org-apache-sling-scripting-java] 26/41: SLING-1050 : Use
dynamic class loader instead of dynamic import package.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.scripting.java-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-java.git
commit d55d8f0f8727a3fa4c63e9eb20c513e7a6e403a3
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Thu Jul 16 07:18:17 2009 +0000
SLING-1050 : Use dynamic class loader instead of dynamic import package.
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/scripting/java@794562 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 5 ++-
.../scripting/java/JavaScriptEngineFactory.java | 40 +++++++---------------
.../sling/scripting/java/SlingIOProvider.java | 27 ++-------------
3 files changed, 16 insertions(+), 56 deletions(-)
diff --git a/pom.xml b/pom.xml
index 2ef4995..4b5008a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,7 +60,6 @@
org.apache.sling.scripting.java.jdt,
org.eclipse.jdt.*
</Private-Package>
- <DynamicImport-Package>*</DynamicImport-Package>
<ScriptEngine-Name>${pom.name}</ScriptEngine-Name>
<ScriptEngine-Version>${pom.version}</ScriptEngine-Version>
@@ -106,8 +105,8 @@
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.jcr.classloader</artifactId>
- <version>2.0.2-incubator</version>
+ <artifactId>org.apache.sling.commons.classloader</artifactId>
+ <version>0.9.0-SNAPSHOT</version>
</dependency>
<!-- We use the same eclipse jdt as the jsp bundle -->
diff --git a/src/main/java/org/apache/sling/scripting/java/JavaScriptEngineFactory.java b/src/main/java/org/apache/sling/scripting/java/JavaScriptEngineFactory.java
index e50a78d..0425c08 100644
--- a/src/main/java/org/apache/sling/scripting/java/JavaScriptEngineFactory.java
+++ b/src/main/java/org/apache/sling/scripting/java/JavaScriptEngineFactory.java
@@ -20,7 +20,6 @@ import static org.apache.sling.api.scripting.SlingBindings.SLING;
import java.io.Reader;
-import javax.jcr.RepositoryException;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
@@ -34,8 +33,7 @@ import org.apache.sling.api.SlingServletException;
import org.apache.sling.api.scripting.SlingBindings;
import org.apache.sling.api.scripting.SlingScript;
import org.apache.sling.api.scripting.SlingScriptHelper;
-import org.apache.sling.jcr.api.SlingRepository;
-import org.apache.sling.jcr.classloader.RepositoryClassLoaderProvider;
+import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
import org.apache.sling.scripting.api.AbstractScriptEngineFactory;
import org.apache.sling.scripting.api.AbstractSlingScriptEngine;
import org.osgi.service.component.ComponentContext;
@@ -60,18 +58,13 @@ import org.slf4j.LoggerFactory;
*/
public class JavaScriptEngineFactory extends AbstractScriptEngineFactory {
- private static final String CLASSLOADER_NAME = "admin";
-
/** default logger */
private final Logger log = LoggerFactory.getLogger(getClass());
- /** @scr.reference */
- private SlingRepository repository;
-
/**
* @scr.reference
*/
- private RepositoryClassLoaderProvider repoCLProvider;
+ private DynamicClassLoaderManager dynamicClassLoaderManager;
/**
* The class loader
@@ -127,7 +120,7 @@ public class JavaScriptEngineFactory extends AbstractScriptEngineFactory {
* @param componentContext
*/
protected void activate(ComponentContext componentContext) {
- this.ioProvider = new SlingIOProvider(repository);
+ this.ioProvider = new SlingIOProvider();
this.servletCache = new ServletCache();
this.javaServletContext = new JavaServletContext(ioProvider,
@@ -166,7 +159,7 @@ public class JavaScriptEngineFactory extends AbstractScriptEngineFactory {
*/
private void callServlet(Bindings bindings, SlingScriptHelper scriptHelper) {
- ioProvider.setRequestResourceResolver(scriptHelper.getRequest().getResourceResolver());
+ ioProvider.setRequestResourceResolver(scriptHelper.getScript().getScriptResource().getResourceResolver());
try {
ServletWrapper servlet = getWrapperAdapter(scriptHelper);
// create a SlingBindings object
@@ -206,7 +199,7 @@ public class JavaScriptEngineFactory extends AbstractScriptEngineFactory {
* Bind the class load provider.
* @param repositoryClassLoaderProvider the new provider
*/
- protected void bindRepositoryClassLoaderProvider(RepositoryClassLoaderProvider rclp) {
+ protected void bindDynamicClassLoaderManager(DynamicClassLoaderManager rclp) {
if ( this.javaClassLoader != null ) {
this.ungetClassLoader();
}
@@ -217,8 +210,8 @@ public class JavaScriptEngineFactory extends AbstractScriptEngineFactory {
* Unbind the class loader provider.
* @param repositoryClassLoaderProvider the old provider
*/
- protected void unbindRepositoryClassLoaderProvider(RepositoryClassLoaderProvider rclp) {
- if ( this.repoCLProvider == rclp ) {
+ protected void unbindDynamicClassLoaderManager(DynamicClassLoaderManager rclp) {
+ if ( this.dynamicClassLoaderManager == rclp ) {
this.ungetClassLoader();
}
}
@@ -226,26 +219,17 @@ public class JavaScriptEngineFactory extends AbstractScriptEngineFactory {
/**
* Get the class loader
*/
- private void getClassLoader(RepositoryClassLoaderProvider rclp) {
- try {
- this.repoCLProvider = rclp;
- this.javaClassLoader = rclp.getClassLoader(CLASSLOADER_NAME);
- } catch (RepositoryException re) {
- log.error("Cannot get Java class loader", re);
- }
+ private void getClassLoader(DynamicClassLoaderManager rclp) {
+ this.dynamicClassLoaderManager = rclp;
+ this.javaClassLoader = rclp.getDynamicClassLoader();
}
/**
* Unget the class loader
*/
private void ungetClassLoader() {
- if ( this.repoCLProvider != null ) {
- if ( this.javaClassLoader != null ) {
- this.repoCLProvider.ungetClassLoader(this.javaClassLoader);
- this.javaClassLoader = null;
- }
- this.repoCLProvider = null;
- }
+ this.dynamicClassLoaderManager = null;
+ this.javaClassLoader = null;
}
// ---------- Internal -----------------------------------------------------
diff --git a/src/main/java/org/apache/sling/scripting/java/SlingIOProvider.java b/src/main/java/org/apache/sling/scripting/java/SlingIOProvider.java
index 00e714a..34908ab 100644
--- a/src/main/java/org/apache/sling/scripting/java/SlingIOProvider.java
+++ b/src/main/java/org/apache/sling/scripting/java/SlingIOProvider.java
@@ -38,7 +38,6 @@ import org.apache.sling.api.SlingException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceMetadata;
import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.jcr.api.SlingRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,17 +49,10 @@ public class SlingIOProvider {
/** default log */
private static final Logger log = LoggerFactory.getLogger(SlingIOProvider.class);
- private final SlingRepository repository;
-
private ThreadLocal<ResourceResolver> requestResourceResolver;
- // private session for write access
- private ThreadLocal<Session> privateSession;
-
- SlingIOProvider(SlingRepository repository) {
- this.repository = repository;
+ SlingIOProvider() {
this.requestResourceResolver = new ThreadLocal<ResourceResolver>();
- this.privateSession = new ThreadLocal<Session>();
}
void setRequestResourceResolver(ResourceResolver resolver) {
@@ -69,15 +61,6 @@ public class SlingIOProvider {
void resetRequestResourceResolver() {
requestResourceResolver.remove();
-
- // at the same time logout this thread's session
- Session session = privateSession.get();
- if (session != null) {
- if (session.isLive()) {
- session.logout();
- }
- privateSession.remove();
- }
}
// ---------- IOProvider interface -----------------------------------------
@@ -210,13 +193,7 @@ public class SlingIOProvider {
// ---------- internal -----------------------------------------------------
private Session getPrivateSession() throws RepositoryException {
- Session session = privateSession.get();
- if (session == null) {
- session = repository.loginAdministrative(null);
- privateSession.set(session);
- }
-
- return session;
+ return requestResourceResolver.get().adaptTo(Session.class);
}
private static void checkNode(Node node, String path) {
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.