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/04 12:47:43 UTC

svn commit: r1742266 - in /tomcat/tc8.5.x/trunk: ./ java/org/apache/catalina/startup/ java/org/apache/jasper/ java/org/apache/jasper/compiler/ java/org/apache/jasper/servlet/ java/org/apache/jasper/xmlparser/ java/org/apache/tomcat/ java/org/apache/tom...

Author: markt
Date: Wed May  4 12:47:43 2016
New Revision: 1742266

URL: http://svn.apache.org/viewvc?rev=1742266&view=rev
Log:
Refactor JarScanning
- Move Jar interface
- Pass Jar rather than URL
- Reduce code duplication
- Clean-up

Added:
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/Jar.java
      - copied, changed from r1742248, tomcat/trunk/java/org/apache/tomcat/Jar.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
      - copied, changed from r1742246, tomcat/trunk/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java
Removed:
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/Jar.java
Modified:
    tomcat/tc8.5.x/trunk/   (props changed)
    tomcat/tc8.5.x/trunk/java/org/apache/catalina/startup/ContextConfig.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/JspCompilationContext.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Compiler.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspReader.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspUtil.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Parser.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/ParserController.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TldCache.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/TldScanner.java
    tomcat/tc8.5.x/trunk/java/org/apache/jasper/xmlparser/XMLEncodingDetector.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/JarScannerCallback.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/tld/TldResourcePath.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/JarFactory.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFileUrlJar.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFileUrlNestedJar.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/UrlJar.java
    tomcat/tc8.5.x/trunk/test/org/apache/jasper/servlet/TestTldScanner.java
    tomcat/tc8.5.x/trunk/test/org/apache/tomcat/util/bcel/TesterPerformance.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 Wed May  4 12:47:43 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,1742146,1742148,1742166
+/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,1742148,1742166,1742181,1742184,1742187,1742246,1742248-1742250,1742263-1742264

Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/startup/ContextConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/startup/ContextConfig.java Wed May  4 12:47:43 2016
@@ -67,6 +67,7 @@ import org.apache.catalina.util.ContextN
 import org.apache.catalina.util.Introspection;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.JarScanType;
 import org.apache.tomcat.JarScanner;
 import org.apache.tomcat.util.ExceptionUtils;
@@ -103,7 +104,6 @@ import org.apache.tomcat.util.descriptor
 import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomcat.util.digester.RuleSet;
 import org.apache.tomcat.util.res.StringManager;
-import org.apache.tomcat.util.scan.Jar;
 import org.apache.tomcat.util.scan.JarFactory;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXParseException;

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/JspCompilationContext.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/JspCompilationContext.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/JspCompilationContext.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/JspCompilationContext.java Wed May  4 12:47:43 2016
@@ -39,8 +39,8 @@ import org.apache.jasper.servlet.JasperL
 import org.apache.jasper.servlet.JspServletWrapper;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.util.descriptor.tld.TldResourcePath;
-import org.apache.tomcat.util.scan.Jar;
 
 /**
  * A place holder for various things that are used through out the JSP

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Compiler.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Compiler.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Compiler.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Compiler.java Wed May  4 12:47:43 2016
@@ -36,7 +36,7 @@ import org.apache.jasper.Options;
 import org.apache.jasper.servlet.JspServletWrapper;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.util.scan.Jar;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.util.scan.JarFactory;
 
 /**

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JavacErrorDetail.java Wed May  4 12:47:43 2016
@@ -26,7 +26,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.jasper.JspCompilationContext;
-import org.apache.tomcat.util.scan.Jar;
+import org.apache.tomcat.Jar;
 
 /**
  * Class providing details about a javac compilation error.

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java Wed May  4 12:47:43 2016
@@ -32,10 +32,10 @@ import javax.xml.parsers.SAXParserFactor
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.util.descriptor.DigesterFactory;
 import org.apache.tomcat.util.descriptor.LocalResolver;
 import org.apache.tomcat.util.descriptor.tld.TldResourcePath;
-import org.apache.tomcat.util.scan.Jar;
 import org.apache.tomcat.util.security.PrivilegedGetTccl;
 import org.apache.tomcat.util.security.PrivilegedSetTccl;
 import org.xml.sax.Attributes;

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspReader.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspReader.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspReader.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspReader.java Wed May  4 12:47:43 2016
@@ -26,7 +26,7 @@ import org.apache.jasper.JspCompilationC
 import org.apache.jasper.util.ExceptionUtils;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.util.scan.Jar;
+import org.apache.tomcat.Jar;
 
 /**
  * JspReader is an input buffer for the JSP parser. It should allow

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspUtil.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspUtil.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspUtil.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspUtil.java Wed May  4 12:47:43 2016
@@ -26,7 +26,7 @@ import java.util.Vector;
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
-import org.apache.tomcat.util.scan.Jar;
+import org.apache.tomcat.Jar;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
 

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Parser.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Parser.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Parser.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Parser.java Wed May  4 12:47:43 2016
@@ -29,8 +29,8 @@ import javax.servlet.jsp.tagext.TagLibra
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
 import org.apache.jasper.util.UniqueAttributesImpl;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.util.descriptor.tld.TldResourcePath;
-import org.apache.tomcat.util.scan.Jar;
 import org.xml.sax.Attributes;
 import org.xml.sax.helpers.AttributesImpl;
 

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/ParserController.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/ParserController.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/ParserController.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/ParserController.java Wed May  4 12:47:43 2016
@@ -24,7 +24,7 @@ import java.util.Stack;
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
 import org.apache.jasper.xmlparser.XMLEncodingDetector;
-import org.apache.tomcat.util.scan.Jar;
+import org.apache.tomcat.Jar;
 import org.xml.sax.Attributes;
 
 /**

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TagFileProcessor.java Wed May  4 12:47:43 2016
@@ -36,8 +36,8 @@ import org.apache.jasper.JasperException
 import org.apache.jasper.JspCompilationContext;
 import org.apache.jasper.runtime.JspSourceDependent;
 import org.apache.jasper.servlet.JspServletWrapper;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.util.descriptor.tld.TldResourcePath;
-import org.apache.tomcat.util.scan.Jar;
 
 /**
  * 1. Processes and extracts the directive info in a tag file. 2. Compiles and

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java Wed May  4 12:47:43 2016
@@ -44,12 +44,12 @@ import javax.servlet.jsp.tagext.Validati
 
 import org.apache.jasper.JasperException;
 import org.apache.jasper.JspCompilationContext;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.util.descriptor.tld.TagFileXml;
 import org.apache.tomcat.util.descriptor.tld.TagXml;
 import org.apache.tomcat.util.descriptor.tld.TaglibXml;
 import org.apache.tomcat.util.descriptor.tld.TldResourcePath;
 import org.apache.tomcat.util.descriptor.tld.ValidatorXml;
-import org.apache.tomcat.util.scan.Jar;
 
 /**
  * Implementation of the TagLibraryInfo class from the JSP spec.

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TldCache.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TldCache.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TldCache.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/TldCache.java Wed May  4 12:47:43 2016
@@ -27,10 +27,10 @@ import javax.servlet.ServletContext;
 
 import org.apache.jasper.Constants;
 import org.apache.jasper.JasperException;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.util.descriptor.tld.TaglibXml;
 import org.apache.tomcat.util.descriptor.tld.TldParser;
 import org.apache.tomcat.util.descriptor.tld.TldResourcePath;
-import org.apache.tomcat.util.scan.Jar;
 import org.xml.sax.SAXException;
 
 /**

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/JspServletWrapper.java Wed May  4 12:47:43 2016
@@ -47,7 +47,7 @@ import org.apache.jasper.util.FastRemova
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.InstanceManager;
-import org.apache.tomcat.util.scan.Jar;
+import org.apache.tomcat.Jar;
 
 /**
  * The JSP engine (a.k.a Jasper).

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=1742266&r1=1742265&r2=1742266&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 Wed May  4 12:47:43 2016
@@ -40,14 +40,13 @@ import org.apache.jasper.compiler.JarSca
 import org.apache.jasper.compiler.Localizer;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.JarScanType;
 import org.apache.tomcat.JarScanner;
 import org.apache.tomcat.JarScannerCallback;
 import org.apache.tomcat.util.descriptor.tld.TaglibXml;
 import org.apache.tomcat.util.descriptor.tld.TldParser;
 import org.apache.tomcat.util.descriptor.tld.TldResourcePath;
-import org.apache.tomcat.util.scan.Jar;
-import org.apache.tomcat.util.scan.JarFactory;
 import org.xml.sax.SAXException;
 
 /**
@@ -296,27 +295,24 @@ public class TldScanner {
 
 
         @Override
-        public void scan(URL jarUrl, String webappPath, boolean isWebapp) throws IOException {
+        public void scan(Jar jar, String webappPath, boolean isWebapp) throws IOException {
             boolean found = false;
-            URL jarFileUrl;
-            try (Jar jar = JarFactory.newInstance(jarUrl)) {
-                jarFileUrl = jar.getJarFileURL();
-                jar.nextEntry();
-                for (String entryName = jar.getEntryName();
-                    entryName != null;
-                    jar.nextEntry(), entryName = jar.getEntryName()) {
-                    if (!(entryName.startsWith("META-INF/") &&
-                            entryName.endsWith(TLD_EXT))) {
-                        continue;
-                    }
-                    found = true;
-                    TldResourcePath tldResourcePath =
-                            new TldResourcePath(jarFileUrl, webappPath, entryName);
-                    try {
-                        parseTld(tldResourcePath);
-                    } catch (SAXException e) {
-                        throw new IOException(e);
-                    }
+            URL jarFileUrl = jar.getJarFileURL();
+            jar.nextEntry();
+            for (String entryName = jar.getEntryName();
+                entryName != null;
+                jar.nextEntry(), entryName = jar.getEntryName()) {
+                if (!(entryName.startsWith("META-INF/") &&
+                        entryName.endsWith(TLD_EXT))) {
+                    continue;
+                }
+                found = true;
+                TldResourcePath tldResourcePath =
+                        new TldResourcePath(jarFileUrl, webappPath, entryName);
+                try {
+                    parseTld(tldResourcePath);
+                } catch (SAXException e) {
+                    throw new IOException(e);
                 }
             }
             if (found) {

Modified: tomcat/tc8.5.x/trunk/java/org/apache/jasper/xmlparser/XMLEncodingDetector.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/jasper/xmlparser/XMLEncodingDetector.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/jasper/xmlparser/XMLEncodingDetector.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/jasper/xmlparser/XMLEncodingDetector.java Wed May  4 12:47:43 2016
@@ -36,7 +36,7 @@ import org.apache.jasper.JspCompilationC
 import org.apache.jasper.compiler.ErrorDispatcher;
 import org.apache.jasper.compiler.JspUtil;
 import org.apache.jasper.compiler.Localizer;
-import org.apache.tomcat.util.scan.Jar;
+import org.apache.tomcat.Jar;
 
 public class XMLEncodingDetector {
 

Copied: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/Jar.java (from r1742248, tomcat/trunk/java/org/apache/tomcat/Jar.java)
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/Jar.java?p2=tomcat/tc8.5.x/trunk/java/org/apache/tomcat/Jar.java&p1=tomcat/trunk/java/org/apache/tomcat/Jar.java&r1=1742248&r2=1742266&rev=1742266&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/Jar.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/Jar.java Wed May  4 12:47:43 2016
@@ -19,17 +19,18 @@ package org.apache.tomcat;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
-
-import org.apache.tomcat.util.scan.JarFactory;
+import java.util.jar.Manifest;
 
 /**
  * Provides an abstraction for use by the various classes that need to scan
- * JARs. The classes provided by the JRE for accessing JARs ({@link java.util.jar.JarFile} and
- * {@link java.util.jar.JarInputStream}) have significantly different performance
- * characteristics depending on the form of the URL used to access the JAR.
- * For file based JAR {@link java.net.URL}s, {@link java.util.jar.JarFile} is faster but for non-file
- * based {@link java.net.URL}s, {@link java.util.jar.JarFile} creates a copy of the JAR in the
- * temporary directory so {@link java.util.jar.JarInputStream} is faster.
+ * JARs. The classes provided by the JRE for accessing JARs
+ * ({@link java.util.jar.JarFile} and {@link java.util.jar.JarInputStream}) have
+ * significantly different performance characteristics depending on the form of
+ * the URL used to access the JAR. For file based JAR {@link java.net.URL}s,
+ * {@link java.util.jar.JarFile} is faster but for non-file based
+ * {@link java.net.URL}s, {@link java.util.jar.JarFile} creates a copy of the
+ * JAR in the temporary directory so {@link java.util.jar.JarInputStream} is
+ * faster.
  */
 public interface Jar extends AutoCloseable {
 
@@ -108,7 +109,8 @@ public interface Jar extends AutoCloseab
      * be used, rather the jar:jar:file:... form (that the JRE does not
      * understand will be used). Note that this means that any code using these
      * URLs will need to understand the jar:jar:file:... form and use the
-     * {@link JarFactory} to ensure resources are accessed correctly.
+     * {@link org.apache.tomcat.util.scan.JarFactory} to ensure resources are
+     * accessed correctly.
      *
      * @param entry The entry to generate the URL for
      *
@@ -117,6 +119,15 @@ public interface Jar extends AutoCloseab
     String getURL(String entry);
 
     /**
+     * Obtain the manifest for the JAR file.
+     *
+     * @return The manifest for this JAR file.
+     *
+     * @throws IOException If an I/O error occurs trying to obtain the manifest
+     */
+    Manifest getManifest() throws IOException;
+
+    /**
      * Resets the internal pointer used to track JAR entries to the beginning of
      * the JAR.
      *

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=1742266&r1=1742265&r2=1742266&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 Wed May  4 12:47:43 2016
@@ -18,7 +18,6 @@ package org.apache.tomcat;
 
 import java.io.File;
 import java.io.IOException;
-import java.net.URL;
 
 /**
  * This interface is implemented by clients of the {@link JarScanner} to enable
@@ -28,9 +27,9 @@ public interface JarScannerCallback {
 
     /**
      * A JAR was found and may be accessed for further processing via the
-     * provided URL connection.
+     * provided URL connection. The caller is responsible for closing the JAR.
      *
-     * @param jarURL     The URL for the identified JAR
+     * @param jar        The JAR to process
      * @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
@@ -38,7 +37,7 @@ public interface JarScannerCallback {
      *
      * @throws IOException if an I/O error occurs while scanning the JAR
      */
-    public void scan(URL jarURL, String webappPath, boolean isWebapp)
+    public void scan(Jar jar, String webappPath, boolean isWebapp)
             throws IOException;
 
     /**

Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/tld/TldResourcePath.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/tld/TldResourcePath.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/tld/TldResourcePath.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/tld/TldResourcePath.java Wed May  4 12:47:43 2016
@@ -21,7 +21,7 @@ import java.io.InputStream;
 import java.net.URL;
 import java.util.Objects;
 
-import org.apache.tomcat.util.scan.Jar;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.util.scan.JarFactory;
 
 /**

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=1742266&r1=1742265&r2=1742266&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 Wed May  4 12:47:43 2016
@@ -24,9 +24,8 @@ import java.net.URL;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.JarScannerCallback;
-import org.apache.tomcat.util.scan.Jar;
-import org.apache.tomcat.util.scan.JarFactory;
 import org.xml.sax.InputSource;
 
 /**
@@ -51,9 +50,8 @@ public class FragmentJarScannerCallback
 
 
     @Override
-    public void scan(URL jarUrl, String webappPath, boolean isWebapp) throws IOException {
+    public void scan(Jar jar, String webappPath, boolean isWebapp) throws IOException {
 
-        Jar jar = null;
         InputStream is = null;
         WebXml fragment = new WebXml();
         fragment.setWebappJar(isWebapp);
@@ -65,7 +63,6 @@ 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(jarUrl);
                 is = jar.getInputStream(FRAGMENT_LOCATION);
             }
 
@@ -74,7 +71,6 @@ public class FragmentJarScannerCallback
                 // distributable
                 fragment.setDistributable(true);
             } else {
-                @SuppressWarnings("null") // Cannot be null here
                 String fragmentUrl = jar.getURL(FRAGMENT_LOCATION);
                 InputSource source = new InputSource(fragmentUrl);
                 source.setByteStream(is);
@@ -83,14 +79,11 @@ public class FragmentJarScannerCallback
                 }
             }
         } finally {
-            if (jar != null) {
-                jar.close();
-            }
-            fragment.setURL(jarUrl);
+            fragment.setURL(jar.getJarFileURL());
             if (fragment.getName() == null) {
                 fragment.setName(fragment.getURL().toString());
             }
-            fragment.setJarName(extractJarFileName(jarUrl));
+            fragment.setJarName(extractJarFileName(jar.getJarFileURL()));
             fragments.put(fragment.getName(), fragment);
         }
     }
@@ -107,6 +100,7 @@ public class FragmentJarScannerCallback
         return url.substring(url.lastIndexOf('/') + 1);
     }
 
+
     @Override
     public void scan(File file, String webappPath, boolean isWebapp) throws IOException {
 

Copied: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java (from r1742246, tomcat/trunk/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java)
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java?p2=tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java&p1=tomcat/trunk/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java&r1=1742246&r2=1742266&rev=1742266&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/AbstractInputStreamJar.java Wed May  4 12:47:43 2016
@@ -20,6 +20,9 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
 import java.util.jar.JarEntry;
+import java.util.jar.Manifest;
+
+import org.apache.tomcat.Jar;
 
 /**
  * Base implementation of Jar for implementations that use a JarInputStream to
@@ -117,6 +120,13 @@ public abstract class AbstractInputStrea
     }
 
 
+    @Override
+    public Manifest getManifest() throws IOException {
+        reset();
+        return jarInputStream.getManifest();
+    }
+
+
     @Override
     public void reset() throws IOException {
         closeStream();

Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFactory.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFactory.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFactory.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFactory.java Wed May  4 12:47:43 2016
@@ -20,6 +20,8 @@ import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
 
+import org.apache.tomcat.Jar;
+
 /**
  * Provide a mechanism to obtain objects that implement {@link Jar}.
  */

Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFileUrlJar.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFileUrlJar.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFileUrlJar.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFileUrlJar.java Wed May  4 12:47:43 2016
@@ -25,8 +25,11 @@ import java.net.URL;
 import java.util.Enumeration;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
+import java.util.jar.Manifest;
 import java.util.zip.ZipEntry;
 
+import org.apache.tomcat.Jar;
+
 /**
  * Implementation of {@link Jar} that is optimised for file based JAR URLs that
  * refer directly to a JAR file (e.g URLs of the form jar:file: ... .jar!/ or
@@ -144,6 +147,12 @@ public class JarFileUrlJar implements Ja
     }
 
     @Override
+    public Manifest getManifest() throws IOException {
+        return jarFile.getManifest();
+    }
+
+
+    @Override
     public void reset() throws IOException {
         entries = null;
         entry = null;

Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFileUrlNestedJar.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFileUrlNestedJar.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFileUrlNestedJar.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/JarFileUrlNestedJar.java Wed May  4 12:47:43 2016
@@ -17,28 +17,23 @@
 package org.apache.tomcat.util.scan;
 
 import java.io.IOException;
-import java.io.InputStream;
 import java.net.JarURLConnection;
 import java.net.URL;
 import java.util.jar.JarEntry;
 import java.util.jar.JarFile;
 
-
 /**
- * Implementation of {@link Jar} that is optimised for file based JAR URLs that
- * refer to a JAR file nested inside a WAR
+ * Implementation of {@link org.apache.tomcat.Jar} that is optimised for file
+ * based JAR URLs that refer to a JAR file nested inside a WAR
  * (e.g URLs of the form jar:file: ... .war!/ ... .jar).
  */
-public class JarFileUrlNestedJar implements Jar {
+public class JarFileUrlNestedJar extends AbstractInputStreamJar {
 
-    private final URL jarFileURL;
     private final JarFile warFile;
     private final JarEntry jarEntry;
-    private NonClosingJarInputStream jarInputStream = null;
-    private JarEntry entry = null;
 
     public JarFileUrlNestedJar(URL url) throws IOException {
-        jarFileURL = url;
+        super(url);
         JarURLConnection jarConn = (JarURLConnection) url.openConnection();
         jarConn.setUseCaches(false);
         warFile = jarConn.getJarFile();
@@ -51,77 +46,8 @@ public class JarFileUrlNestedJar impleme
 
 
     @Override
-    public URL getJarFileURL() {
-        return jarFileURL;
-    }
-
-
-
-    @Override
-    public boolean entryExists(String name) throws IOException {
-        reset();
-        JarEntry entry = jarInputStream.getNextJarEntry();
-        while (entry != null) {
-            if (name.equals(entry.getName())) {
-                break;
-            }
-            entry = jarInputStream.getNextJarEntry();
-        }
-
-        return entry != null;
-    }
-
-
-    @Override
-    public InputStream getInputStream(String name) throws IOException {
-        reset();
-        JarEntry entry = jarInputStream.getNextJarEntry();
-        while (entry != null) {
-            if (name.equals(entry.getName())) {
-                break;
-            }
-            entry = jarInputStream.getNextJarEntry();
-        }
-
-        if (entry == null) {
-            return null;
-        } else {
-            return jarInputStream;
-        }
-    }
-
-
-    @Override
-    public long getLastModified(String name) throws IOException {
-        reset();
-        JarEntry entry = jarInputStream.getNextJarEntry();
-        while (entry != null) {
-            if (name.equals(entry.getName())) {
-                break;
-            }
-            entry = jarInputStream.getNextJarEntry();
-        }
-
-        if (entry == null) {
-            return -1;
-        } else {
-            return entry.getTime();
-        }
-    }
-
-    @Override
-    public String getURL(String entry) {
-        StringBuilder result = new StringBuilder("jar:");
-        result.append(getJarFileURL().toExternalForm());
-        result.append("!/");
-        result.append(entry);
-
-        return result.toString();
-    }
-
-    @Override
     public void close() {
-        closeInner();
+        closeStream();
         if (warFile != null) {
             try {
                 warFile.close();
@@ -132,61 +58,8 @@ public class JarFileUrlNestedJar impleme
     }
 
 
-    private void closeInner() {
-        if (jarInputStream != null) {
-            try {
-                jarInputStream.reallyClose();
-            } catch (IOException ioe) {
-                // Ignore
-            }
-        }
-    }
-
-    private NonClosingJarInputStream createJarInputStream() throws IOException {
-        return new NonClosingJarInputStream(warFile.getInputStream(jarEntry));
-    }
-
-
     @Override
-    public void nextEntry() {
-        if (jarInputStream == null) {
-            try {
-                jarInputStream = createJarInputStream();
-            } catch (IOException e) {
-                entry = null;
-                return;
-            }
-        }
-        try {
-            entry = jarInputStream.getNextJarEntry();
-        } catch (IOException ioe) {
-            entry = null;
-        }
-    }
-
-
-    @Override
-    public String getEntryName() {
-        if (entry == null) {
-            return null;
-        } else {
-            return entry.getName();
-        }
-    }
-
-
-    @Override
-    public InputStream getEntryInputStream() throws IOException {
-        if (jarInputStream == null) {
-            jarInputStream = createJarInputStream();
-        }
-        return jarInputStream;
-    }
-
-
-    @Override
-    public void reset() throws IOException {
-        closeInner();
-        jarInputStream = createJarInputStream();
+    protected NonClosingJarInputStream createJarInputStream() throws IOException {
+        return new NonClosingJarInputStream(warFile.getInputStream(jarEntry));
     }
 }

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=1742266&r1=1742265&r2=1742266&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 Wed May  4 12:47:43 2016
@@ -30,6 +30,7 @@ import javax.servlet.ServletContext;
 
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.JarScanFilter;
 import org.apache.tomcat.JarScanType;
 import org.apache.tomcat.JarScanner;
@@ -305,17 +306,20 @@ public class StandardJarScanner implemen
             log.trace(sm.getString("jarScan.jarUrlStart", url));
         }
 
-        String urlStr = url.toString();
-        if (urlStr.startsWith("jar:") || urlStr.endsWith(Constants.JAR_EXT)) {
-            callback.scan(url, webappPath, isWebapp);
-        } else if (urlStr.startsWith("file:")) {
+        if ("jar".equals(url.getProtocol()) || url.getPath().endsWith(Constants.JAR_EXT)) {
+            try (Jar jar = JarFactory.newInstance(url)) {
+                callback.scan(jar, webappPath, isWebapp);
+            }
+        } else if ("file".equals(url.getProtocol())) {
             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);
+                    try (Jar jar = JarFactory.newInstance(jarURL)) {
+                        callback.scan(jar, webappPath, isWebapp);
+                    }
                 } else if (f.isDirectory()) {
                     if (scanType == JarScanType.PLUGGABILITY) {
                         callback.scan(f, webappPath, isWebapp);

Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/UrlJar.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/UrlJar.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/UrlJar.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/scan/UrlJar.java Wed May  4 12:47:43 2016
@@ -17,134 +17,33 @@
 package org.apache.tomcat.util.scan;
 
 import java.io.IOException;
-import java.io.InputStream;
 import java.net.JarURLConnection;
 import java.net.URL;
 import java.net.URLConnection;
-import java.util.jar.JarEntry;
 
 /**
- * Implementation of {@link Jar} that is optimised for non-file based JAR URLs
- * (e.g. JNDI based URLs of the form jar:jndi:...).
+ * Implementation of {@link org.apache.tomcat.Jar} that is optimised for
+ * non-file based JAR URLs (e.g. JNDI based URLs of the form jar:jndi:...).
  */
-public class UrlJar implements Jar {
+public class UrlJar extends AbstractInputStreamJar {
 
-    private NonClosingJarInputStream jarInputStream = null;
-    private final URL url;
-    private JarEntry entry = null;
-
-    public UrlJar(URL url) throws IOException {
-        this.url = url;
-        this.jarInputStream = createJarInputStream();
+    public UrlJar(URL jarFileURL) {
+        super(jarFileURL);
     }
 
-    @Override
-    public URL getJarFileURL() {
-        return url;
-    }
-
-    @Override
-    public boolean entryExists(String name) throws IOException {
-        JarEntry entry = jarInputStream.getNextJarEntry();
-        while (entry != null) {
-            if (name.equals(entry.getName())) {
-                break;
-            }
-            entry = jarInputStream.getNextJarEntry();
-        }
-
-        return entry != null;
-    }
-
-    @Override
-    public InputStream getInputStream(String name) throws IOException {
-        JarEntry entry = jarInputStream.getNextJarEntry();
-        while (entry != null) {
-            if (name.equals(entry.getName())) {
-                break;
-            }
-            entry = jarInputStream.getNextJarEntry();
-        }
-
-        if (entry == null) {
-            return null;
-        } else {
-            return jarInputStream;
-        }
-    }
 
     @Override
-    public long getLastModified(String name) throws IOException {
-        JarEntry entry = jarInputStream.getNextJarEntry();
-        while (entry != null) {
-            if (name.equals(entry.getName())) {
-                break;
-            }
-            entry = jarInputStream.getNextJarEntry();
-        }
-
-        if (entry == null) {
-            return -1;
-        } else {
-            return entry.getTime();
-        }
+    public void close() {
+        closeStream();
     }
 
-    @Override
-    public String getURL(String entry) {
-        StringBuilder result = new StringBuilder("jar:");
-        result.append(getJarFileURL().toExternalForm());
-        result.append("!/");
-        result.append(entry);
-
-        return result.toString();
-    }
 
     @Override
-    public void close() {
-        if (jarInputStream != null) {
-            try {
-                jarInputStream.reallyClose();
-            } catch (IOException ioe) {
-                // Ignore
-            }
-        }
-    }
-
-    private NonClosingJarInputStream createJarInputStream() throws IOException {
-        JarURLConnection jarConn = (JarURLConnection) url.openConnection();
+    protected NonClosingJarInputStream createJarInputStream() throws IOException {
+        JarURLConnection jarConn = (JarURLConnection) getJarFileURL().openConnection();
         URL resourceURL = jarConn.getJarFileURL();
         URLConnection resourceConn = resourceURL.openConnection();
         resourceConn.setUseCaches(false);
         return new NonClosingJarInputStream(resourceConn.getInputStream());
     }
-
-    @Override
-    public void nextEntry() {
-        try {
-            entry = jarInputStream.getNextJarEntry();
-        } catch (IOException ioe) {
-            entry = null;
-        }
-    }
-
-    @Override
-    public String getEntryName() {
-        if (entry == null) {
-            return null;
-        } else {
-            return entry.getName();
-        }
-    }
-
-    @Override
-    public InputStream getEntryInputStream() throws IOException {
-        return jarInputStream;
-    }
-
-    @Override
-    public void reset() throws IOException {
-        close();
-        jarInputStream = createJarInputStream();
-    }
 }

Modified: tomcat/tc8.5.x/trunk/test/org/apache/jasper/servlet/TestTldScanner.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/test/org/apache/jasper/servlet/TestTldScanner.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/test/org/apache/jasper/servlet/TestTldScanner.java (original)
+++ tomcat/tc8.5.x/trunk/test/org/apache/jasper/servlet/TestTldScanner.java Wed May  4 12:47:43 2016
@@ -29,7 +29,9 @@ import org.junit.Test;
 import org.apache.catalina.Context;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.scan.JarFactory;
 import org.apache.tomcat.util.scan.StandardJarScanner;
 import org.easymock.EasyMock;
 
@@ -109,7 +111,9 @@ public class TestTldScanner extends Tomc
             throws Exception {
         String fullPath = new File(webapp, path).toURI().toString();
         URL jarUrl = new URL("jar:" + fullPath + "!/");
-        callback.scan(jarUrl, path, true);
+        try (Jar jar = JarFactory.newInstance(jarUrl)) {
+            callback.scan(jar, path, true);
+        }
     }
 }
 

Modified: tomcat/tc8.5.x/trunk/test/org/apache/tomcat/util/bcel/TesterPerformance.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/test/org/apache/tomcat/util/bcel/TesterPerformance.java?rev=1742266&r1=1742265&r2=1742266&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/test/org/apache/tomcat/util/bcel/TesterPerformance.java (original)
+++ tomcat/tc8.5.x/trunk/test/org/apache/tomcat/util/bcel/TesterPerformance.java Wed May  4 12:47:43 2016
@@ -27,8 +27,8 @@ import java.util.Set;
 import org.junit.Assert;
 import org.junit.Test;
 
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.util.bcel.classfile.ClassParser;
-import org.apache.tomcat.util.scan.Jar;
 import org.apache.tomcat.util.scan.JarFactory;
 
 public class TesterPerformance {

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=1742266&r1=1742265&r2=1742266&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 Wed May  4 12:47:43 2016
@@ -27,6 +27,7 @@ import java.util.List;
 import org.junit.Assert;
 import org.junit.Test;
 
+import org.apache.tomcat.Jar;
 import org.apache.tomcat.JarScanType;
 import org.apache.tomcat.JarScannerCallback;
 import org.apache.tomcat.unittest.TesterServletContext;
@@ -98,9 +99,9 @@ public class TestStandardJarScanner {
         List<String> callbacks = new ArrayList<>();
 
         @Override
-        public void scan(URL jarUrl, String webappPath,
+        public void scan(Jar jar, String webappPath,
                 boolean isWebapp) throws IOException {
-            callbacks.add(jarUrl.toString() + "::" + webappPath + "::" + isWebapp);
+            callbacks.add(jar.getJarFileURL().toString() + "::" + webappPath + "::" + isWebapp);
         }
 
         @Override




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org