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 2016/05/03 19:48:01 UTC
svn commit: r1742160 - in /tomcat/tc8.5.x/trunk: ./
java/org/apache/jasper/servlet/ java/org/apache/tomcat/
java/org/apache/tomcat/util/descriptor/web/
java/org/apache/tomcat/util/scan/ test/org/apache/tomcat/util/scan/
Author: markt
Date: Tue May 3 17:48:01 2016
New Revision: 1742160
URL: http://svn.apache.org/viewvc?rev=1742160&view=rev
Log:
Rather than do URL->URLConnection->URL, just pass the URL
Modified:
tomcat/tc8.5.x/trunk/ (props changed)
tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/TldScanner.java
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/JarScannerCallback.java
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java
tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java
tomcat/tc8.5.x/trunk/test/org/apache/tomcat/util/scan/TestStandardJarScanner.java
Propchange: tomcat/tc8.5.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue May 3 17:48:01 2016
@@ -1 +1 @@
-/tomcat/trunk:1734785,1734799,1734845,1734928,1735041,1735044,1735480,1735577,1735597,1735599-1735600,1735615,1736145,1736162,1736209,1736280,1736297,1736299,1736489,1736646,1736703,1736836,1736849,1737104-1737105,1737112,1737117,1737119-1737120,1737155,1737157,1737192,1737280,1737339,1737632,1737664,1737715,1737748,1737785,1737834,1737860,1737959,1738005,1738007,1738014-1738015,1738018,1738022,1738039,1738043,1738059-1738060,1738147,1738149,1738174-1738175,1738261,1738589,1738623-1738625,1738643,1738816,1738850,1738855,1738946-1738948,1738953-1738954,1738979,1738982,1739079-1739081,1739087,1739113,1739153,1739172,1739176,1739191,1739474,1739726,1739762,1739775,1739814,1739817-1739818,1739975,1740131,1740324,1740465,1740495,1740508-1740509,1740520,1740535,1740707,1740803,1740810,1740969,1740980,1740991,1740997,1741015,1741033,1741036,1741058,1741060,1741080,1741147,1741159,1741164,1741173,1741181,1741190,1741197,1741202,1741208,1741213,1741221,1741225,1741232,1741409,1741501,1741677
,1741892,1741896,1741984,1742023,1742042,1742071,1742090,1742093,1742101,1742105,1742111,1742139
+/tomcat/trunk:1734785,1734799,1734845,1734928,1735041,1735044,1735480,1735577,1735597,1735599-1735600,1735615,1736145,1736162,1736209,1736280,1736297,1736299,1736489,1736646,1736703,1736836,1736849,1737104-1737105,1737112,1737117,1737119-1737120,1737155,1737157,1737192,1737280,1737339,1737632,1737664,1737715,1737748,1737785,1737834,1737860,1737959,1738005,1738007,1738014-1738015,1738018,1738022,1738039,1738043,1738059-1738060,1738147,1738149,1738174-1738175,1738261,1738589,1738623-1738625,1738643,1738816,1738850,1738855,1738946-1738948,1738953-1738954,1738979,1738982,1739079-1739081,1739087,1739113,1739153,1739172,1739176,1739191,1739474,1739726,1739762,1739775,1739814,1739817-1739818,1739975,1740131,1740324,1740465,1740495,1740508-1740509,1740520,1740535,1740707,1740803,1740810,1740969,1740980,1740991,1740997,1741015,1741033,1741036,1741058,1741060,1741080,1741147,1741159,1741164,1741173,1741181,1741190,1741197,1741202,1741208,1741213,1741221,1741225,1741232,1741409,1741501,1741677
,1741892,1741896,1741984,1742023,1742042,1742071,1742090,1742093,1742101,1742105,1742111,1742139,1742146
Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/TldScanner.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/TldScanner.java?rev=1742160&r1=1742159&r2=1742160&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/TldScanner.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/TldScanner.java Tue May 3 17:48:01 2016
@@ -296,12 +296,18 @@ public class TldScanner {
private boolean foundFileWithoutTld = false;
@Override
- public void scan(JarURLConnection urlConn, String webappPath,
- boolean isWebapp) throws IOException {
+ public void scan(JarURLConnection jarConn, String webappPath, boolean isWebapp)
+ throws IOException {
+ scan(jarConn.getURL(), webappPath, isWebapp);
+ }
+
+
+ @Override
+ public void scan(URL jarUrl, String webappPath, boolean isWebapp) throws IOException {
boolean found = false;
- URL jarURL;
- try (Jar jar = JarFactory.newInstance(urlConn.getURL())) {
- jarURL = jar.getJarFileURL();
+ URL jarFileUrl;
+ try (Jar jar = JarFactory.newInstance(jarUrl)) {
+ jarFileUrl = jar.getJarFileURL();
jar.nextEntry();
for (String entryName = jar.getEntryName();
entryName != null;
@@ -312,7 +318,7 @@ public class TldScanner {
}
found = true;
TldResourcePath tldResourcePath =
- new TldResourcePath(jarURL, webappPath, entryName);
+ new TldResourcePath(jarFileUrl, webappPath, entryName);
try {
parseTld(tldResourcePath);
} catch (SAXException e) {
@@ -322,12 +328,13 @@ public class TldScanner {
}
if (found) {
if (log.isDebugEnabled()) {
- log.debug(Localizer.getMessage("jsp.tldCache.tldInJar", jarURL.toString()));
+ log.debug(Localizer.getMessage("jsp.tldCache.tldInJar", jarFileUrl.toString()));
}
} else {
foundJarWithoutTld = true;
if (log.isDebugEnabled()) {
- log.debug(Localizer.getMessage("jsp.tldCache.noTldInJar", jarURL.toString()));
+ log.debug(Localizer.getMessage(
+ "jsp.tldCache.noTldInJar", jarFileUrl.toString()));
}
}
}
Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/JarScannerCallback.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/JarScannerCallback.java?rev=1742160&r1=1742159&r2=1742160&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/JarScannerCallback.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/JarScannerCallback.java Tue May 3 17:48:01 2016
@@ -19,6 +19,7 @@ package org.apache.tomcat;
import java.io.File;
import java.io.IOException;
import java.net.JarURLConnection;
+import java.net.URL;
/**
* This interface is implemented by clients of the {@link JarScanner} to enable
@@ -37,11 +38,33 @@ public interface JarScannerCallback {
* be treated as being provided by the container
*
* @throws IOException if an I/O error occurs while scanning the JAR
+ *
+ * @deprecated Use {@link #scan(URL, String, boolean)} instead. Because the
+ * urlConn parameter could refer directly to a JAR or to a JAR
+ * as an entry in a WAR, it required further processing that
+ * included obtaining the original URL. It is simpler to provide
+ * the URL to start with..
*/
+ @Deprecated
public void scan(JarURLConnection urlConn, String webappPath, boolean isWebapp)
throws IOException;
/**
+ * A JAR was found and may be accessed for further processing via the
+ * provided URL connection.
+ *
+ * @param jarURL The URL for the identified JAR
+ * @param webappPath The path, if any, to the JAR within the web application
+ * @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
+ *
+ * @throws IOException if an I/O error occurs while scanning the JAR
+ */
+ public void scan(URL jarURL, String webappPath, boolean isWebapp)
+ throws IOException;
+
+ /**
* A directory was found that is to be treated as an unpacked JAR. The
* directory may be accessed for further processing via the provided file.
*
Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java?rev=1742160&r1=1742159&r2=1742160&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java Tue May 3 17:48:01 2016
@@ -53,8 +53,13 @@ public class FragmentJarScannerCallback
@Override
public void scan(JarURLConnection jarConn, String webappPath, boolean isWebapp)
throws IOException {
+ scan(jarConn.getURL(), webappPath, isWebapp);
+ }
+
+
+ @Override
+ public void scan(URL jarUrl, String webappPath, boolean isWebapp) throws IOException {
- URL url = jarConn.getURL();
Jar jar = null;
InputStream is = null;
WebXml fragment = new WebXml();
@@ -67,7 +72,7 @@ public class FragmentJarScannerCallback
// web-fragment.xml files don't need to be parsed if they are never
// going to be used.
if (isWebapp && parseRequired) {
- jar = JarFactory.newInstance(url);
+ jar = JarFactory.newInstance(jarUrl);
is = jar.getInputStream(FRAGMENT_LOCATION);
}
@@ -88,15 +93,16 @@ public class FragmentJarScannerCallback
if (jar != null) {
jar.close();
}
- fragment.setURL(url);
+ fragment.setURL(jarUrl);
if (fragment.getName() == null) {
fragment.setName(fragment.getURL().toString());
}
- fragment.setJarName(extractJarFileName(url));
+ fragment.setJarName(extractJarFileName(jarUrl));
fragments.put(fragment.getName(), fragment);
}
}
+
private String extractJarFileName(URL input) {
String url = input.toString();
if (url.endsWith("!/")) {
Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java?rev=1742160&r1=1742159&r2=1742160&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java Tue May 3 17:48:01 2016
@@ -18,11 +18,9 @@ package org.apache.tomcat.util.scan;
import java.io.File;
import java.io.IOException;
-import java.net.JarURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
-import java.net.URLConnection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
@@ -103,7 +101,7 @@ public class StandardJarScanner implemen
* Controls the testing all directories to see of they are exploded JAR
* files extension.
*/
- private boolean scanAllDirectories = false;
+ private boolean scanAllDirectories = true;
public boolean isScanAllDirectories() {
return scanAllDirectories;
}
@@ -307,48 +305,35 @@ public class StandardJarScanner implemen
log.trace(sm.getString("jarScan.jarUrlStart", url));
}
- URLConnection conn = url.openConnection();
- if (conn instanceof JarURLConnection) {
- callback.scan((JarURLConnection) conn, webappPath, isWebapp);
- } else {
- String urlStr = url.toString();
- if (urlStr.startsWith("file:") || urlStr.startsWith("http:") || urlStr.startsWith("https:")) {
- if (urlStr.endsWith(Constants.JAR_EXT)) {
- URL jarURL = UriUtil.buildJarUrl(urlStr);
- callback.scan((JarURLConnection) jarURL.openConnection(),
- webappPath, isWebapp);
- } else {
- File f;
- try {
- f = new File(url.toURI());
- if (f.isFile() && isScanAllFiles()) {
- // Treat this file as a JAR
- URL jarURL = UriUtil.buildJarUrl(f);
- callback.scan(
- (JarURLConnection) jarURL.openConnection(),
- webappPath, isWebapp);
- } else if (f.isDirectory()) {
- if (scanType == JarScanType.PLUGGABILITY) {
- callback.scan(f, webappPath, isWebapp);
- } else {
- File metainf = new File(f.getAbsoluteFile() +
- File.separator + "META-INF");
- if (metainf.isDirectory()) {
- callback.scan(f, webappPath, isWebapp);
- }
- }
+ String urlStr = url.toString();
+ if (urlStr.startsWith("jar:") || urlStr.endsWith(Constants.JAR_EXT)) {
+ callback.scan(url, webappPath, isWebapp);
+ } else if (urlStr.startsWith("file:")) {
+ File f;
+ try {
+ f = new File(url.toURI());
+ if (f.isFile() && isScanAllFiles()) {
+ // Treat this file as a JAR
+ URL jarURL = UriUtil.buildJarUrl(f);
+ callback.scan(jarURL, webappPath, isWebapp);
+ } else if (f.isDirectory()) {
+ if (scanType == JarScanType.PLUGGABILITY) {
+ callback.scan(f, webappPath, isWebapp);
+ } else {
+ File metainf = new File(f.getAbsoluteFile() + File.separator + "META-INF");
+ if (metainf.isDirectory()) {
+ callback.scan(f, webappPath, isWebapp);
}
- } catch (Throwable t) {
- ExceptionUtils.handleThrowable(t);
- // Wrap the exception and re-throw
- IOException ioe = new IOException();
- ioe.initCause(t);
- throw ioe;
}
}
+ } catch (Throwable t) {
+ ExceptionUtils.handleThrowable(t);
+ // Wrap the exception and re-throw
+ IOException ioe = new IOException();
+ ioe.initCause(t);
+ throw ioe;
}
}
-
}
Modified: tomcat/tc8.5.x/trunk/test/org/apache/tomcat/util/scan/TestStandardJarScanner.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/test/org/apache/tomcat/util/scan/TestStandardJarScanner.java?rev=1742160&r1=1742159&r2=1742160&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/test/org/apache/tomcat/util/scan/TestStandardJarScanner.java (original)
+++ tomcat/tc8.5.x/trunk/test/org/apache/tomcat/util/scan/TestStandardJarScanner.java Tue May 3 17:48:01 2016
@@ -99,6 +99,12 @@ public class TestStandardJarScanner {
List<String> callbacks = new ArrayList<>();
@Override
+ public void scan(URL jarUrl, String webappPath,
+ boolean isWebapp) throws IOException {
+ callbacks.add(jarUrl.toString() + "::" + webappPath + "::" + isWebapp);
+ }
+
+ @Override
public void scan(JarURLConnection urlConn, String webappPath,
boolean isWebapp) throws IOException {
callbacks.add(urlConn.toString() + "::" + webappPath + "::" + isWebapp);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org