Author: markt
Date: Mon Nov  4 23:52:45 2013
New Revision: 1538806

URL: http://svn.apache.org/r1538806
Log:
Enable the JAR implementation for JARs in packed WARs to correctly handle 
multiple calls to methods

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/scan/FileUrlNestedJar.java

Modified: tomcat/trunk/java/org/apache/tomcat/util/scan/FileUrlNestedJar.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/scan/FileUrlNestedJar.java?rev=1538806&r1=1538805&r2=1538806&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/scan/FileUrlNestedJar.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/util/scan/FileUrlNestedJar.java Mon Nov 
 4 23:52:45 2013
@@ -47,8 +47,6 @@ public class FileUrlNestedJar implements
         int pathStart = urlAsString.indexOf("!/") + 2;
         String jarPath = urlAsString.substring(pathStart);
         jarEntry = warFile.getJarEntry(jarPath);
-
-        jarInputStream = createJarInputStream();
     }
 
 
@@ -61,6 +59,7 @@ public class FileUrlNestedJar implements
 
     @Override
     public boolean entryExists(String name) throws IOException {
+        reset();
         JarEntry entry = jarInputStream.getNextJarEntry();
         while (entry != null) {
             if (name.equals(entry.getName())) {
@@ -75,6 +74,7 @@ public class FileUrlNestedJar implements
 
     @Override
     public InputStream getInputStream(String name) throws IOException {
+        reset();
         JarEntry entry = jarInputStream.getNextJarEntry();
         while (entry != null) {
             if (name.equals(entry.getName())) {
@@ -148,6 +148,14 @@ public class FileUrlNestedJar implements
 
     @Override
     public void nextEntry() {
+        if (jarInputStream == null) {
+            try {
+                jarInputStream = createJarInputStream();
+            } catch (IOException e) {
+                entry = null;
+                return;
+            }
+        }
         try {
             entry = jarInputStream.getNextJarEntry();
         } catch (IOException ioe) {
@@ -168,6 +176,9 @@ public class FileUrlNestedJar implements
 
     @Override
     public InputStream getEntryInputStream() throws IOException {
+        if (jarInputStream == null) {
+            createJarInputStream();
+        }
         return jarInputStream;
     }
 



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

Reply via email to