Author: markt Date: Fri Jun 14 07:39:32 2013 New Revision: 1492975 URL: http://svn.apache.org/r1492975 Log: Enable client of JarScanner to determine if JAR is part of a web application or provided by the container.
Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java tomcat/trunk/java/org/apache/tomcat/JarScannerCallback.java tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1492975&r1=1492974&r2=1492975&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Fri Jun 14 07:39:32 2013 @@ -2743,7 +2743,8 @@ public class ContextConfig implements Li private final Map<String,WebXml> fragments = new HashMap<>(); @Override - public void scan(JarURLConnection jarConn) throws IOException { + public void scan(JarURLConnection jarConn, boolean isWebapp) + throws IOException { URL url = jarConn.getURL(); URL resourceURL = jarConn.getJarFileURL(); @@ -2790,7 +2791,7 @@ public class ContextConfig implements Li } @Override - public void scan(File file) throws IOException { + public void scan(File file, boolean isWebapp) throws IOException { InputStream stream = null; WebXml fragment = new WebXml(); Modified: tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java?rev=1492975&r1=1492974&r2=1492975&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/TldConfig.java Fri Jun 14 07:39:32 2013 @@ -287,12 +287,13 @@ public final class TldConfig implements private class TldJarScannerCallback implements JarScannerCallback { @Override - public void scan(JarURLConnection urlConn) throws IOException { + public void scan(JarURLConnection urlConn, boolean isWebapp) + throws IOException { tldScanJar(urlConn); } @Override - public void scan(File file) { + public void scan(File file, boolean isWebapp) { File metaInf = new File(file, "META-INF"); if (metaInf.isDirectory()) { tldScanDir(metaInf); Modified: tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java?rev=1492975&r1=1492974&r2=1492975&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java (original) +++ tomcat/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java Fri Jun 14 07:39:32 2013 @@ -255,12 +255,13 @@ public class TldLocationsCache { private class TldJarScannerCallback implements JarScannerCallback { @Override - public void scan(JarURLConnection urlConn) throws IOException { + public void scan(JarURLConnection urlConn, boolean isWebapp) + throws IOException { tldScanJar(urlConn); } @Override - public void scan(File file) throws IOException { + public void scan(File file, boolean isWebapp) throws IOException { File metaInf = new File(file, "META-INF"); if (metaInf.isDirectory()) { tldScanDir(metaInf); Modified: tomcat/trunk/java/org/apache/tomcat/JarScannerCallback.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/JarScannerCallback.java?rev=1492975&r1=1492974&r2=1492975&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/JarScannerCallback.java (original) +++ tomcat/trunk/java/org/apache/tomcat/JarScannerCallback.java Fri Jun 14 07:39:32 2013 @@ -31,17 +31,24 @@ public interface JarScannerCallback { * further processing via the provided URL connection. * * @param urlConn The connection to the identified JAR + * @param isWebapp Indicates if the JAR was found within a web application. + * If <code>false</code> the JAR should be treated as + * being provided by the container */ - public void scan(JarURLConnection urlConn) throws IOException; + public void scan(JarURLConnection urlConn, boolean isWebapp) + throws IOException; /** * A JAR was found (probably in an unpacked WAR or possibly elsewhere on the * class path) and may be accessed for further processing via the provided * file. * - * @param file The file for the identified JAR. + * @param file The file for the identified JAR. + * @param isWebapp Indicates if the JAR was found within a web application. + * If <code>false</code> the JAR should be treated as + * being provided by the container */ - public void scan(File file) throws IOException; + public void scan(File file, boolean isWebapp) throws IOException; /** * A directory structure was found within the web application at Modified: tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java?rev=1492975&r1=1492974&r2=1492975&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java Fri Jun 14 07:39:32 2013 @@ -174,7 +174,7 @@ public class StandardJarScanner implemen } else { url = (new File(realPath)).toURI().toURL(); } - process(callback, url); + process(callback, url, true); } catch (IOException e) { log.warn(sm.getString("jarScan.webinflibFail", url), e); } @@ -234,7 +234,7 @@ public class StandardJarScanner implemen log.debug(sm.getString("jarScan.classloaderJarScan", urls[i])); } try { - process(callback, urls[i]); + process(callback, urls[i], false); } catch (IOException ioe) { log.warn(sm.getString( "jarScan.classloaderFail",urls[i]), ioe); @@ -255,7 +255,7 @@ public class StandardJarScanner implemen * Scan a URL for JARs with the optional extensions to look at all files * and all directories. */ - private void process(JarScannerCallback callback, URL url) + private void process(JarScannerCallback callback, URL url, boolean isWebapp) throws IOException { if (log.isTraceEnabled()) { @@ -264,13 +264,14 @@ public class StandardJarScanner implemen URLConnection conn = url.openConnection(); if (conn instanceof JarURLConnection) { - callback.scan((JarURLConnection) conn); + callback.scan((JarURLConnection) conn, isWebapp); } else { String urlStr = url.toString(); if (urlStr.startsWith("file:") || urlStr.startsWith("jndi:")) { if (urlStr.endsWith(Constants.JAR_EXT)) { URL jarURL = new URL("jar:" + urlStr + "!/"); - callback.scan((JarURLConnection) jarURL.openConnection()); + callback.scan((JarURLConnection) jarURL.openConnection(), + isWebapp); } else { File f; try { @@ -278,12 +279,14 @@ public class StandardJarScanner implemen if (f.isFile() && scanAllFiles) { // Treat this file as a JAR URL jarURL = new URL("jar:" + urlStr + "!/"); - callback.scan((JarURLConnection) jarURL.openConnection()); + callback.scan( + (JarURLConnection) jarURL.openConnection(), + isWebapp); } else if (f.isDirectory() && scanAllDirectories) { File metainf = new File(f.getAbsoluteFile() + File.separator + "META-INF"); if (metainf.isDirectory()) { - callback.scan(f); + callback.scan(f, isWebapp); } } } catch (URISyntaxException e) { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org