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>.