incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cziege...@apache.org
Subject svn commit: r1306533 - in /sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp: JspScriptEngineFactory.java jasper/compiler/JspRuntimeContext.java
Date Wed, 28 Mar 2012 18:42:58 GMT
Author: cziegeler
Date: Wed Mar 28 18:42:58 2012
New Revision: 1306533

URL: http://svn.apache.org/viewvc?rev=1306533&view=rev
Log:
SLING-2447 : ClassLoaderWriter should provide class loader for loading written classes/resources

Modified:
    sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
    sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspRuntimeContext.java

Modified: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java?rev=1306533&r1=1306532&r2=1306533&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
(original)
+++ sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/JspScriptEngineFactory.java
Wed Mar 28 18:42:58 2012
@@ -46,6 +46,7 @@ import org.apache.sling.api.scripting.Sl
 import org.apache.sling.api.scripting.SlingScriptConstants;
 import org.apache.sling.api.scripting.SlingScriptHelper;
 import org.apache.sling.commons.classloader.ClassLoaderWriter;
+import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
 import org.apache.sling.scripting.api.AbstractScriptEngineFactory;
 import org.apache.sling.scripting.api.AbstractSlingScriptEngine;
 import org.apache.sling.scripting.jsp.jasper.JasperException;
@@ -94,6 +95,11 @@ public class JspScriptEngineFactory
     @Reference
     private ClassLoaderWriter classLoaderWriter;
 
+    @Reference
+    private DynamicClassLoaderManager dynamicClassLoaderManager;
+
+    private ClassLoader dynamicClassLoader;
+
     /** The io provider for reading and writing. */
     private SlingIOProvider ioProvider;
 
@@ -277,7 +283,7 @@ public class JspScriptEngineFactory
         // set the current class loader as the thread context loader for
         // the setup of the JspRuntimeContext
         final ClassLoader old = Thread.currentThread().getContextClassLoader();
-        Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+        Thread.currentThread().setContextClassLoader(this.dynamicClassLoader);
 
         try {
             this.jspFactoryHandler = JspRuntimeContext.initFactoryHandler();
@@ -382,6 +388,44 @@ public class JspScriptEngineFactory
         }
     }
 
+    /**
+     * Bind the class load provider.
+     *
+     * @param repositoryClassLoaderProvider the new provider
+     */
+    protected void bindDynamicClassLoaderManager(final DynamicClassLoaderManager rclp) {
+        if ( this.dynamicClassLoader != null ) {
+            this.ungetClassLoader();
+        }
+        this.getClassLoader(rclp);
+    }
+
+    /**
+     * Unbind the class loader provider.
+     * @param repositoryClassLoaderProvider the old provider
+     */
+    protected void unbindDynamicClassLoaderManager(final DynamicClassLoaderManager rclp)
{
+        if ( this.dynamicClassLoaderManager == rclp ) {
+            this.ungetClassLoader();
+        }
+    }
+
+    /**
+     * Get the class loader
+     */
+    private void getClassLoader(final DynamicClassLoaderManager rclp) {
+        this.dynamicClassLoaderManager = rclp;
+        this.dynamicClassLoader = rclp.getDynamicClassLoader();
+    }
+
+    /**
+     * Unget the class loader
+     */
+    private void ungetClassLoader() {
+        this.dynamicClassLoader = null;
+        this.dynamicClassLoaderManager = null;
+    }
+
     // ---------- Internal -----------------------------------------------------
 
     private class JspScriptEngine extends AbstractSlingScriptEngine {
@@ -399,7 +443,7 @@ public class JspScriptEngineFactory
                 // set the current class loader as the thread context loader for
                 // the compilation and execution of the JSP script
                 ClassLoader old = Thread.currentThread().getContextClassLoader();
-                Thread.currentThread().setContextClassLoader(classLoaderWriter.getClassLoader());
+                Thread.currentThread().setContextClassLoader(dynamicClassLoader);
 
                 try {
                     callJsp(props, scriptHelper, context);

Modified: sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspRuntimeContext.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspRuntimeContext.java?rev=1306533&r1=1306532&r2=1306533&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspRuntimeContext.java
(original)
+++ sling/trunk/bundles/scripting/jsp/src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/JspRuntimeContext.java
Wed Mar 28 18:42:58 2012
@@ -20,7 +20,6 @@ package org.apache.sling.scripting.jsp.j
 import java.io.File;
 import java.io.FilePermission;
 import java.net.URL;
-import java.net.URLClassLoader;
 import java.security.CodeSource;
 import java.security.PermissionCollection;
 import java.security.Policy;
@@ -215,7 +214,7 @@ public final class JspRuntimeContext {
         this.context = context;
         this.options = options;
         this.ioProvider = ioProvider;
-
+/*
         // Get the parent class loader
         parentClassLoader = Thread.currentThread().getContextClassLoader();
         if (parentClassLoader == null) {
@@ -233,7 +232,7 @@ public final class JspRuntimeContext {
         }
 
         initClassPath();
-
+*/
     	if (context instanceof org.apache.sling.scripting.jsp.jasper.servlet.JspCServletContext)
{
     	    return;
     	}
@@ -250,10 +249,10 @@ public final class JspRuntimeContext {
      */
     private ServletContext context;
     private Options options;
-    private ClassLoader parentClassLoader;
+//    private ClassLoader parentClassLoader;
     private PermissionCollection permissionCollection;
     private CodeSource codeSource;
-    private String classpath;
+ //   private String classpath;
 
     /**
      * Maps JSP pages to their JspServletWrapper's
@@ -388,10 +387,10 @@ public final class JspRuntimeContext {
      * Get the parent URLClassLoader.
      *
      * @return URLClassLoader parent
-     */
     public ClassLoader getParentClassLoader() {
         return parentClassLoader;
     }
+     */
 
     /**
      * Get the SecurityManager PermissionCollection for this
@@ -440,10 +439,10 @@ public final class JspRuntimeContext {
 
     /**
      * The classpath that is passed off to the Java compiler.
-     */
     public String getClassPath() {
         return classpath;
     }
+     */
 
     /**
      * Returns the current {@link IOProvider} of this context.
@@ -457,7 +456,6 @@ public final class JspRuntimeContext {
 
     /**
      * Method used to initialize classpath for compiles.
-     */
     private void initClassPath() {
 
         StringBuffer cpath = new StringBuffer();
@@ -488,6 +486,7 @@ public final class JspRuntimeContext {
             log.debug("Compilation classpath initialized: " + getClassPath());
         }
     }
+     */
 
     /**
      * Method used to initialize SecurityManager data.
@@ -542,7 +541,7 @@ public final class JspRuntimeContext {
                 // Allow the JSP to access org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase
                 permissionCollection.add( new RuntimePermission(
                     "accessClassInPackage.org.apache.jasper.runtime") );
-
+/*
                 if (parentClassLoader instanceof URLClassLoader) {
                     URL [] urls = ((URLClassLoader) parentClassLoader).getURLs();
                     String jarUrl = null;
@@ -571,6 +570,7 @@ public final class JspRuntimeContext {
                         permissionCollection.add(
                                 new FilePermission(jndiUrl,"read") );
                 }
+                */
             } catch(Exception e) {
                 context.log("Security Init for context failed",e);
             }



Mime
View raw message