You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2006/09/02 01:06:03 UTC
svn commit: r439501 - in /tomcat/tc6.0.x/trunk/java/org/apache/catalina:
loader/WebappLoader.java startup/ContextRuleSet.java
Author: remm
Date: Fri Sep 1 16:06:02 2006
New Revision: 439501
URL: http://svn.apache.org/viewvc?rev=439501&view=rev
Log:
- API change for the constructor of Loader: if not specified, the loader will get the parent CL from the context,
avoiding the problems of ignoring the privileged flag in some cases as seen in bug 39704.
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappLoader.java
tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ContextRuleSet.java
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappLoader.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappLoader.java?rev=439501&r1=439500&r2=439501&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappLoader.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/WebappLoader.java Fri Sep 1 16:06:02 2006
@@ -770,7 +770,7 @@
WebappClassLoader classLoader = null;
if (parentClassLoader == null) {
- parentClassLoader = Thread.currentThread().getContextClassLoader();
+ parentClassLoader = container.getParentClassLoader();
}
Class[] argTypes = { ClassLoader.class };
Object[] args = { parentClassLoader };
Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ContextRuleSet.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ContextRuleSet.java?rev=439501&r1=439500&r2=439501&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ContextRuleSet.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ContextRuleSet.java Fri Sep 1 16:06:02 2006
@@ -144,10 +144,9 @@
"addLifecycleListener",
"org.apache.catalina.LifecycleListener");
- digester.addRule(prefix + "Context/Loader",
- new CreateLoaderRule
- ("org.apache.catalina.loader.WebappLoader",
- "className"));
+ digester.addObjectCreate(prefix + "Context/Loader",
+ "org.apache.catalina.loader.WebappLoader",
+ "className");
digester.addSetProperties(prefix + "Context/Loader");
digester.addSetNext(prefix + "Context/Loader",
"setLoader",
@@ -217,76 +216,5 @@
"addWrapperListener", 0);
}
-
-}
-
-
-// ----------------------------------------------------------- Private Classes
-
-
-/**
- * Rule that creates a new <code>Loader</code> instance, with the parent
- * class loader associated with the top object on the stack (which must be
- * a <code>Container</code>), and pushes it on to the stack.
- */
-
-final class CreateLoaderRule extends Rule {
-
- public CreateLoaderRule(String loaderClass, String attributeName) {
-
- this.loaderClass = loaderClass;
- this.attributeName = attributeName;
-
- }
-
- private String attributeName;
-
- private String loaderClass;
-
- public void begin(String namespace, String name, Attributes attributes)
- throws Exception {
-
- // Look up the required parent class loader
- ClassLoader parentClassLoader = null;
- Object ojb = digester.peek();
- if (ojb instanceof Container) {
- parentClassLoader = ((Container)ojb).getParentClassLoader();
- }
-
- // Bugzilla 36852: http://issues.apache.org/bugzilla/show_bug.cgi?id=36852
- if((ojb instanceof org.apache.catalina.Context) &&
- (((org.apache.catalina.Context) ojb).getPrivileged())) {
- parentClassLoader = ojb.getClass().getClassLoader();
- }
-
- // Instantiate a new Loader implementation object
- String className = loaderClass;
- if (attributeName != null) {
- String value = attributes.getValue(attributeName);
- if (value != null)
- className = value;
- }
- Class clazz = Class.forName(className);
- Class types[] = { ClassLoader.class };
- Object args[] = { parentClassLoader };
- Constructor constructor = clazz.getDeclaredConstructor(types);
- Loader loader = (Loader) constructor.newInstance(args);
-
- // Push the new loader onto the stack
- digester.push(loader);
- if (digester.getLogger().isDebugEnabled())
- digester.getLogger().debug("new " + loader.getClass().getName());
-
- }
-
- public void end(String namespace, String name)
- throws Exception {
-
- Loader loader = (Loader) digester.pop();
- if (digester.getLogger().isDebugEnabled())
- digester.getLogger().debug("pop " + loader.getClass().getName());
-
- }
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org