You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2009/04/26 01:25:36 UTC
svn commit: r768624 - in /tomcat/trunk/java/org/apache/jasper:
JspCompilationContext.java compiler/JspRuntimeContext.java
compiler/TagFileProcessor.java
Author: markt
Date: Sat Apr 25 23:25:36 2009
New Revision: 768624
URL: http://svn.apache.org/viewvc?rev=768624&view=rev
Log:
Reduce dependency on URLClassloader. Allow custom Loader elements to use ClassLoader rather than URLClassLoader.
Modified:
tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java
tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java
tomcat/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java
Modified: tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java?rev=768624&r1=768623&r2=768624&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java (original)
+++ tomcat/trunk/java/org/apache/jasper/JspCompilationContext.java Sat Apr 25 23:25:36 2009
@@ -77,7 +77,7 @@
protected String baseURI;
protected String outputDir;
protected ServletContext context;
- protected URLClassLoader loader;
+ protected ClassLoader loader;
protected JspRuntimeContext rctxt;
@@ -170,7 +170,7 @@
return rctxt.getParentClassLoader();
}
- public void setClassLoader(URLClassLoader loader) {
+ public void setClassLoader(ClassLoader loader) {
this.loader = loader;
}
Modified: tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java?rev=768624&r1=768623&r2=768624&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/JspRuntimeContext.java Sat Apr 25 23:25:36 2009
@@ -110,11 +110,9 @@
this.options = options;
// Get the parent class loader
- parentClassLoader =
- (URLClassLoader) Thread.currentThread().getContextClassLoader();
+ parentClassLoader = Thread.currentThread().getContextClassLoader();
if (parentClassLoader == null) {
- parentClassLoader =
- (URLClassLoader)this.getClass().getClassLoader();
+ parentClassLoader = this.getClass().getClassLoader();
}
if (log.isDebugEnabled()) {
@@ -154,7 +152,7 @@
*/
private ServletContext context;
private Options options;
- private URLClassLoader parentClassLoader;
+ private ClassLoader parentClassLoader;
private PermissionCollection permissionCollection;
private CodeSource codeSource;
private String classpath;
@@ -218,11 +216,11 @@
}
/**
- * Get the parent URLClassLoader.
+ * Get the parent ClassLoader.
*
- * @return URLClassLoader parent
+ * @return ClassLoader parent
*/
- public URLClassLoader getParentClassLoader() {
+ public ClassLoader getParentClassLoader() {
return parentClassLoader;
}
@@ -325,20 +323,23 @@
*/
private void initClassPath() {
- URL [] urls = parentClassLoader.getURLs();
StringBuffer cpath = new StringBuffer();
String sep = System.getProperty("path.separator");
- for(int i = 0; i < urls.length; i++) {
- // Tomcat 4 can use URL's other than file URL's,
- // a protocol other than file: will generate a
- // bad file system path, so only add file:
- // protocol URL's to the classpath.
-
- if( urls[i].getProtocol().equals("file") ) {
- cpath.append(urls[i].getFile()+sep);
+ if (parentClassLoader instanceof URLClassLoader) {
+ URL [] urls = ((URLClassLoader)parentClassLoader).getURLs();
+
+ for(int i = 0; i < urls.length; i++) {
+ // Tomcat 4 can use URL's other than file URL's,
+ // a protocol other than file: will generate a
+ // bad file system path, so only add file:
+ // protocol URL's to the classpath.
+
+ if( urls[i].getProtocol().equals("file") ) {
+ cpath.append(urls[i].getFile()+sep);
+ }
}
- }
+ }
cpath.append(options.getScratchDir() + sep);
@@ -408,32 +409,34 @@
permissionCollection.add( new RuntimePermission(
"accessClassInPackage.org.apache.jasper.runtime") );
- URL [] urls = parentClassLoader.getURLs();
- String jarUrl = null;
- String jndiUrl = null;
- for (int i=0; i<urls.length; i++) {
- if (jndiUrl == null
- && urls[i].toString().startsWith("jndi:") ) {
- jndiUrl = urls[i].toString() + "-";
+ if (parentClassLoader instanceof URLClassLoader) {
+ URL [] urls = ((URLClassLoader)parentClassLoader).getURLs();
+ String jarUrl = null;
+ String jndiUrl = null;
+ for (int i=0; i<urls.length; i++) {
+ if (jndiUrl == null
+ && urls[i].toString().startsWith("jndi:") ) {
+ jndiUrl = urls[i].toString() + "-";
+ }
+ if (jarUrl == null
+ && urls[i].toString().startsWith("jar:jndi:")
+ ) {
+ jarUrl = urls[i].toString();
+ jarUrl = jarUrl.substring(0,jarUrl.length() - 2);
+ jarUrl = jarUrl.substring(0,
+ jarUrl.lastIndexOf('/')) + "/-";
+ }
}
- if (jarUrl == null
- && urls[i].toString().startsWith("jar:jndi:")
- ) {
- jarUrl = urls[i].toString();
- jarUrl = jarUrl.substring(0,jarUrl.length() - 2);
- jarUrl = jarUrl.substring(0,
- jarUrl.lastIndexOf('/')) + "/-";
+ if (jarUrl != null) {
+ permissionCollection.add(
+ new FilePermission(jarUrl,"read"));
+ permissionCollection.add(
+ new FilePermission(jarUrl.substring(4),"read"));
}
+ if (jndiUrl != null)
+ permissionCollection.add(
+ new FilePermission(jndiUrl,"read") );
}
- if (jarUrl != null) {
- permissionCollection.add(
- new FilePermission(jarUrl,"read"));
- permissionCollection.add(
- new FilePermission(jarUrl.substring(4),"read"));
- }
- if (jndiUrl != null)
- permissionCollection.add(
- new FilePermission(jndiUrl,"read") );
} catch(Exception e) {
context.log("Security Init for context failed",e);
}
Modified: tomcat/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java?rev=768624&r1=768623&r2=768624&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java Sat Apr 25 23:25:36 2009
@@ -21,7 +21,6 @@
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
-import java.net.URLClassLoader;
import java.util.Iterator;
import java.util.Vector;
import java.util.HashMap;
@@ -595,7 +594,7 @@
// Use same classloader and classpath for compiling tag files
wrapper.getJspEngineContext().setClassLoader(
- (URLClassLoader) ctxt.getClassLoader());
+ ctxt.getClassLoader());
wrapper.getJspEngineContext().setClassPath(ctxt.getClassPath());
} else {
// Make sure that JspCompilationContext gets the latest TagInfo
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org