Return-Path: Delivered-To: apmail-tomcat-dev-archive@www.apache.org Received: (qmail 66796 invoked from network); 1 Sep 2006 23:06:28 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 1 Sep 2006 23:06:28 -0000 Received: (qmail 71441 invoked by uid 500); 1 Sep 2006 23:06:25 -0000 Delivered-To: apmail-tomcat-dev-archive@tomcat.apache.org Received: (qmail 71394 invoked by uid 500); 1 Sep 2006 23:06:25 -0000 Mailing-List: contact dev-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Developers List" Delivered-To: mailing list dev@tomcat.apache.org Received: (qmail 71383 invoked by uid 500); 1 Sep 2006 23:06:25 -0000 Delivered-To: apmail-jakarta-tomcat-dev@jakarta.apache.org Received: (qmail 71380 invoked by uid 99); 1 Sep 2006 23:06:25 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 01 Sep 2006 16:06:25 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 01 Sep 2006 16:06:23 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id A056E1A981A; Fri, 1 Sep 2006 16:06:03 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r439501 - in /tomcat/tc6.0.x/trunk/java/org/apache/catalina: loader/WebappLoader.java startup/ContextRuleSet.java Date: Fri, 01 Sep 2006 23:06:03 -0000 To: tomcat-dev@jakarta.apache.org From: remm@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060901230603.A056E1A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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 Loader instance, with the parent - * class loader associated with the top object on the stack (which must be - * a Container), 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