Author: markt Date: Thu Feb 28 00:25:01 2013 New Revision: 1451053 URL: http://svn.apache.org/r1451053 Log: Refactor to make the fix for BZ54585 cleaner
Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java?rev=1451053&r1=1451052&r2=1451053&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java (original) +++ tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java Thu Feb 28 00:25:01 2013 @@ -811,40 +811,9 @@ public class WebappLoader extends Lifecy // Assemble the class path information from our class loader chain ClassLoader loader = getClassLoader(); - int n = 0; while (loader != null) { - if (!(loader instanceof URLClassLoader)) { - String cp=getClasspath( loader ); - if( cp==null ) { - log.info( "Unknown loader " + loader + " " + loader.getClass()); - } else { - if (n > 0) - classpath.append(File.pathSeparator); - classpath.append(cp); - n++; - } + if (!buildClassPath(servletContext, classpath, loader)) { break; - //continue; - } - URL repositories[] = - ((URLClassLoader) loader).getURLs(); - for (int i = 0; i < repositories.length; i++) { - String repository = repositories[i].toString(); - if (repository.startsWith("file://")) - repository = utf8Decode(repository.substring(7)); - else if (repository.startsWith("file:")) - repository = utf8Decode(repository.substring(5)); - else if (repository.startsWith("jndi:")) - repository = - servletContext.getRealPath(repository.substring(5)); - else - continue; - if (repository == null) - continue; - if (n > 0) - classpath.append(File.pathSeparator); - classpath.append(repository); - n++; } loader = loader.getParent(); } @@ -857,6 +826,43 @@ public class WebappLoader extends Lifecy } + + private boolean buildClassPath(ServletContext servletContext, + StringBuilder classpath, ClassLoader loader) { + if (loader instanceof URLClassLoader) { + URL repositories[] = + ((URLClassLoader) loader).getURLs(); + for (int i = 0; i < repositories.length; i++) { + String repository = repositories[i].toString(); + if (repository.startsWith("file://")) + repository = utf8Decode(repository.substring(7)); + else if (repository.startsWith("file:")) + repository = utf8Decode(repository.substring(5)); + else if (repository.startsWith("jndi:")) + repository = + servletContext.getRealPath(repository.substring(5)); + else + continue; + if (repository == null) + continue; + if (classpath.length() > 0) + classpath.append(File.pathSeparator); + classpath.append(repository); + } + } else { + String cp = getClasspath(loader); + if (cp == null) { + log.info( "Unknown loader " + loader + " " + loader.getClass()); + } else { + if (classpath.length() > 0) + classpath.append(File.pathSeparator); + classpath.append(cp); + } + return false; + } + return true; + } + private String utf8Decode(String input) { String result = null; try { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org