public class org.apache.catalina.webresources.JarWarResource extends org.apache.catalina.webresources.AbstractArchiveResource
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.webresources.JarWarResource
  super_class: org.apache.catalina.webresources.AbstractArchiveResource
{
  private static final org.apache.juli.logging.Log log;
    descriptor: Lorg/apache/juli/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.lang.String archivePath;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 35
            ldc Lorg/apache/catalina/webresources/JarWarResource;
            invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
            putstatic org.apache.catalina.webresources.JarWarResource.log:Lorg/apache/juli/logging/Log;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.catalina.webresources.AbstractArchiveResourceSet, java.lang.String, java.lang.String, java.util.jar.JarEntry, java.lang.String);
    descriptor: (Lorg/apache/catalina/webresources/AbstractArchiveResourceSet;Ljava/lang/String;Ljava/lang/String;Ljava/util/jar/JarEntry;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=6, args_size=6
        start local 0 // org.apache.catalina.webresources.JarWarResource this
        start local 1 // org.apache.catalina.webresources.AbstractArchiveResourceSet archiveResourceSet
        start local 2 // java.lang.String webAppPath
        start local 3 // java.lang.String baseUrl
        start local 4 // java.util.jar.JarEntry jarEntry
        start local 5 // java.lang.String archivePath
         0: .line 42
            aload 0 /* this */
            aload 1 /* archiveResourceSet */
            aload 2 /* webAppPath */
         1: .line 43
            new java.lang.StringBuilder
            dup
            ldc "jar:war:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* baseUrl */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokestatic org.apache.tomcat.util.buf.UriUtil.getWarSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* archivePath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "!/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         2: .line 44
            aload 4 /* jarEntry */
            new java.lang.StringBuilder
            dup
            ldc "war:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* baseUrl */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokestatic org.apache.tomcat.util.buf.UriUtil.getWarSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* archivePath */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.apache.catalina.webresources.AbstractArchiveResource.<init>:(Lorg/apache/catalina/webresources/AbstractArchiveResourceSet;Ljava/lang/String;Ljava/lang/String;Ljava/util/jar/JarEntry;Ljava/lang/String;)V
         3: .line 45
            aload 0 /* this */
            aload 5 /* archivePath */
            putfield org.apache.catalina.webresources.JarWarResource.archivePath:Ljava/lang/String;
         4: .line 46
            return
        end local 5 // java.lang.String archivePath
        end local 4 // java.util.jar.JarEntry jarEntry
        end local 3 // java.lang.String baseUrl
        end local 2 // java.lang.String webAppPath
        end local 1 // org.apache.catalina.webresources.AbstractArchiveResourceSet archiveResourceSet
        end local 0 // org.apache.catalina.webresources.JarWarResource this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lorg/apache/catalina/webresources/JarWarResource;
            0    5     1  archiveResourceSet  Lorg/apache/catalina/webresources/AbstractArchiveResourceSet;
            0    5     2          webAppPath  Ljava/lang/String;
            0    5     3             baseUrl  Ljava/lang/String;
            0    5     4            jarEntry  Ljava/util/jar/JarEntry;
            0    5     5         archivePath  Ljava/lang/String;
    MethodParameters:
                    Name  Flags
      archiveResourceSet  
      webAppPath          
      baseUrl             
      jarEntry            
      archivePath         

  protected org.apache.catalina.webresources.AbstractArchiveResource$JarInputStreamWrapper getJarInputStreamWrapper();
    descriptor: ()Lorg/apache/catalina/webresources/AbstractArchiveResource$JarInputStreamWrapper;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=8, args_size=1
        start local 0 // org.apache.catalina.webresources.JarWarResource this
         0: .line 50
            aconst_null
            astore 1 /* warFile */
        start local 1 // java.util.jar.JarFile warFile
         1: .line 51
            aconst_null
            astore 2 /* jarIs */
        start local 2 // java.util.jar.JarInputStream jarIs
         2: .line 52
            aconst_null
            astore 3 /* entry */
        start local 3 // java.util.jar.JarEntry entry
         3: .line 54
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.JarWarResource.getArchiveResourceSet:()Lorg/apache/catalina/webresources/AbstractArchiveResourceSet;
            invokevirtual org.apache.catalina.webresources.AbstractArchiveResourceSet.openJarFile:()Ljava/util/jar/JarFile;
            astore 1 /* warFile */
         4: .line 55
            aload 1 /* warFile */
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarWarResource.archivePath:Ljava/lang/String;
            invokevirtual java.util.jar.JarFile.getJarEntry:(Ljava/lang/String;)Ljava/util/jar/JarEntry;
            astore 4 /* jarFileInWar */
        start local 4 // java.util.jar.JarEntry jarFileInWar
         5: .line 56
            aload 1 /* warFile */
            aload 4 /* jarFileInWar */
            invokevirtual java.util.jar.JarFile.getInputStream:(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
            astore 5 /* isInWar */
        start local 5 // java.io.InputStream isInWar
         6: .line 58
            new java.util.jar.JarInputStream
            dup
            aload 5 /* isInWar */
            invokespecial java.util.jar.JarInputStream.<init>:(Ljava/io/InputStream;)V
            astore 2 /* jarIs */
         7: .line 59
            aload 2 /* jarIs */
            invokevirtual java.util.jar.JarInputStream.getNextJarEntry:()Ljava/util/jar/JarEntry;
            astore 3 /* entry */
         8: .line 60
            goto 10
         9: .line 62
      StackMap locals: org.apache.catalina.webresources.JarWarResource java.util.jar.JarFile java.util.jar.JarInputStream java.util.jar.JarEntry java.util.jar.JarEntry java.io.InputStream
      StackMap stack:
            aload 2 /* jarIs */
            invokevirtual java.util.jar.JarInputStream.getNextJarEntry:()Ljava/util/jar/JarEntry;
            astore 3 /* entry */
        10: .line 60
      StackMap locals:
      StackMap stack:
            aload 3 /* entry */
            ifnull 12
        11: .line 61
            aload 3 /* entry */
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.JarWarResource.getResource:()Ljava/util/jar/JarEntry;
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
        12: .line 65
      StackMap locals:
      StackMap stack:
            aload 3 /* entry */
            ifnonnull 21
        13: .line 79
            aload 3 /* entry */
            ifnonnull 20
        14: .line 80
            aload 2 /* jarIs */
            ifnull 18
        15: .line 82
            aload 2 /* jarIs */
            invokevirtual java.util.jar.JarInputStream.close:()V
        16: .line 83
            goto 18
      StackMap locals:
      StackMap stack: java.io.IOException
        17: pop
        18: .line 87
      StackMap locals:
      StackMap stack:
            aload 1 /* warFile */
            ifnull 20
        19: .line 88
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.JarWarResource.getArchiveResourceSet:()Lorg/apache/catalina/webresources/AbstractArchiveResourceSet;
            invokevirtual org.apache.catalina.webresources.AbstractArchiveResourceSet.closeJarFile:()V
        20: .line 66
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        21: .line 69
      StackMap locals:
      StackMap stack:
            new org.apache.catalina.webresources.AbstractArchiveResource$JarInputStreamWrapper
            dup
            aload 0 /* this */
            aload 3 /* entry */
            aload 2 /* jarIs */
            invokespecial org.apache.catalina.webresources.AbstractArchiveResource$JarInputStreamWrapper.<init>:(Lorg/apache/catalina/webresources/AbstractArchiveResource;Ljava/util/jar/JarEntry;Ljava/io/InputStream;)V
            astore 7
        22: .line 79
            aload 3 /* entry */
            ifnonnull 29
        23: .line 80
            aload 2 /* jarIs */
            ifnull 27
        24: .line 82
            aload 2 /* jarIs */
            invokevirtual java.util.jar.JarInputStream.close:()V
        25: .line 83
            goto 27
      StackMap locals: org.apache.catalina.webresources.JarWarResource java.util.jar.JarFile java.util.jar.JarInputStream java.util.jar.JarEntry java.util.jar.JarEntry java.io.InputStream top org.apache.catalina.webresources.AbstractArchiveResource$JarInputStreamWrapper
      StackMap stack: java.io.IOException
        26: pop
        27: .line 87
      StackMap locals:
      StackMap stack:
            aload 1 /* warFile */
            ifnull 29
        28: .line 88
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.JarWarResource.getArchiveResourceSet:()Lorg/apache/catalina/webresources/AbstractArchiveResourceSet;
            invokevirtual org.apache.catalina.webresources.AbstractArchiveResourceSet.closeJarFile:()V
        29: .line 69
      StackMap locals:
      StackMap stack:
            aload 7
            areturn
        end local 5 // java.io.InputStream isInWar
        end local 4 // java.util.jar.JarEntry jarFileInWar
        30: .line 70
      StackMap locals: org.apache.catalina.webresources.JarWarResource java.util.jar.JarFile java.util.jar.JarInputStream java.util.jar.JarEntry
      StackMap stack: java.io.IOException
            astore 4 /* e */
        start local 4 // java.io.IOException e
        31: .line 71
            getstatic org.apache.catalina.webresources.JarWarResource.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 37
        32: .line 72
            getstatic org.apache.catalina.webresources.JarWarResource.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.webresources.JarWarResource.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "jarResource.getInputStreamFail"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        33: .line 73
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.JarWarResource.getResource:()Ljava/util/jar/JarEntry;
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.JarWarResource.getBaseUrl:()Ljava/lang/String;
            aastore
        34: .line 72
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        35: .line 73
            aload 4 /* e */
        36: .line 72
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        37: .line 76
      StackMap locals: java.io.IOException
      StackMap stack:
            aconst_null
            astore 3 /* entry */
        38: .line 79
            aload 3 /* entry */
            ifnonnull 45
        39: .line 80
            aload 2 /* jarIs */
            ifnull 43
        40: .line 82
            aload 2 /* jarIs */
            invokevirtual java.util.jar.JarInputStream.close:()V
        41: .line 83
            goto 43
      StackMap locals:
      StackMap stack: java.io.IOException
        42: pop
        43: .line 87
      StackMap locals:
      StackMap stack:
            aload 1 /* warFile */
            ifnull 45
        44: .line 88
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.JarWarResource.getArchiveResourceSet:()Lorg/apache/catalina/webresources/AbstractArchiveResourceSet;
            invokevirtual org.apache.catalina.webresources.AbstractArchiveResourceSet.closeJarFile:()V
        45: .line 77
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 4 // java.io.IOException e
        46: .line 78
      StackMap locals: org.apache.catalina.webresources.JarWarResource java.util.jar.JarFile java.util.jar.JarInputStream java.util.jar.JarEntry
      StackMap stack: java.lang.Throwable
            astore 6
        47: .line 79
            aload 3 /* entry */
            ifnonnull 54
        48: .line 80
            aload 2 /* jarIs */
            ifnull 52
        49: .line 82
            aload 2 /* jarIs */
            invokevirtual java.util.jar.JarInputStream.close:()V
        50: .line 83
            goto 52
      StackMap locals: org.apache.catalina.webresources.JarWarResource java.util.jar.JarFile java.util.jar.JarInputStream java.util.jar.JarEntry top top java.lang.Throwable
      StackMap stack: java.io.IOException
        51: pop
        52: .line 87
      StackMap locals:
      StackMap stack:
            aload 1 /* warFile */
            ifnull 54
        53: .line 88
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.JarWarResource.getArchiveResourceSet:()Lorg/apache/catalina/webresources/AbstractArchiveResourceSet;
            invokevirtual org.apache.catalina.webresources.AbstractArchiveResourceSet.closeJarFile:()V
        54: .line 91
      StackMap locals:
      StackMap stack:
            aload 6
            athrow
        end local 3 // java.util.jar.JarEntry entry
        end local 2 // java.util.jar.JarInputStream jarIs
        end local 1 // java.util.jar.JarFile warFile
        end local 0 // org.apache.catalina.webresources.JarWarResource this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   55     0          this  Lorg/apache/catalina/webresources/JarWarResource;
            1   55     1       warFile  Ljava/util/jar/JarFile;
            2   55     2         jarIs  Ljava/util/jar/JarInputStream;
            3   55     3         entry  Ljava/util/jar/JarEntry;
            5   30     4  jarFileInWar  Ljava/util/jar/JarEntry;
            6   30     5       isInWar  Ljava/io/InputStream;
           31   46     4             e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          15    16      17  Class java.io.IOException
          24    25      26  Class java.io.IOException
           3    13      30  Class java.io.IOException
          21    22      30  Class java.io.IOException
          40    41      42  Class java.io.IOException
           3    13      46  any
          21    22      46  any
          30    38      46  any
          49    50      51  Class java.io.IOException

  protected org.apache.juli.logging.Log getLog();
    descriptor: ()Lorg/apache/juli/logging/Log;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarWarResource this
         0: .line 96
            getstatic org.apache.catalina.webresources.JarWarResource.log:Lorg/apache/juli/logging/Log;
            areturn
        end local 0 // org.apache.catalina.webresources.JarWarResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarWarResource;
}
SourceFile: "JarWarResource.java"
InnerClasses:
  protected JarInputStreamWrapper = org.apache.catalina.webresources.AbstractArchiveResource$JarInputStreamWrapper of org.apache.catalina.webresources.AbstractArchiveResource