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 2013/06/14 09:39:32 UTC

svn commit: r1492975 - in /tomcat/trunk/java/org/apache: catalina/startup/ContextConfig.java catalina/startup/TldConfig.java jasper/compiler/TldLocationsCache.java tomcat/JarScannerCallback.java tomcat/util/scan/StandardJarScanner.java

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org