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 <[email protected]> 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 "[email protected]" <[email protected]>.
