public class org.apache.catalina.webresources.JarResourceRoot extends org.apache.catalina.webresources.AbstractResource
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.webresources.JarResourceRoot
  super_class: org.apache.catalina.webresources.AbstractResource
{
  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.io.File base;
    descriptor: Ljava/io/File;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final java.lang.String name;
    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 32
            ldc Lorg/apache/catalina/webresources/JarResourceRoot;
            invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
            putstatic org.apache.catalina.webresources.JarResourceRoot.log:Lorg/apache/juli/logging/Log;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.catalina.WebResourceRoot, java.io.File, java.lang.String, java.lang.String);
    descriptor: (Lorg/apache/catalina/WebResourceRoot;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=5
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
        start local 1 // org.apache.catalina.WebResourceRoot root
        start local 2 // java.io.File base
        start local 3 // java.lang.String baseUrl
        start local 4 // java.lang.String webAppPath
         0: .line 40
            aload 0 /* this */
            aload 1 /* root */
            aload 4 /* webAppPath */
            invokespecial org.apache.catalina.webresources.AbstractResource.<init>:(Lorg/apache/catalina/WebResourceRoot;Ljava/lang/String;)V
         1: .line 42
            aload 4 /* webAppPath */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 5
         2: .line 43
            new java.lang.IllegalArgumentException
            dup
            getstatic org.apache.catalina.webresources.JarResourceRoot.sm:Lorg/apache/tomcat/util/res/StringManager;
         3: .line 44
            ldc "jarResourceRoot.invalidWebAppPath"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* webAppPath */
            aastore
         4: .line 43
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 46
      StackMap locals: org.apache.catalina.webresources.JarResourceRoot org.apache.catalina.WebResourceRoot java.io.File java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 2 /* base */
            putfield org.apache.catalina.webresources.JarResourceRoot.base:Ljava/io/File;
         6: .line 47
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "jar:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* baseUrl */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield org.apache.catalina.webresources.JarResourceRoot.baseUrl:Ljava/lang/String;
         7: .line 50
            aload 4 /* webAppPath */
            iconst_0
            aload 4 /* webAppPath */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 5 /* resourceName */
        start local 5 // java.lang.String resourceName
         8: .line 51
            aload 5 /* resourceName */
            bipush 47
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 6 /* i */
        start local 6 // int i
         9: .line 52
            iload 6 /* i */
            iconst_m1
            if_icmple 11
        10: .line 53
            aload 5 /* resourceName */
            iload 6 /* i */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 5 /* resourceName */
        11: .line 55
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 0 /* this */
            aload 5 /* resourceName */
            putfield org.apache.catalina.webresources.JarResourceRoot.name:Ljava/lang/String;
        12: .line 56
            return
        end local 6 // int i
        end local 5 // java.lang.String resourceName
        end local 4 // java.lang.String webAppPath
        end local 3 // java.lang.String baseUrl
        end local 2 // java.io.File base
        end local 1 // org.apache.catalina.WebResourceRoot root
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   13     0          this  Lorg/apache/catalina/webresources/JarResourceRoot;
            0   13     1          root  Lorg/apache/catalina/WebResourceRoot;
            0   13     2          base  Ljava/io/File;
            0   13     3       baseUrl  Ljava/lang/String;
            0   13     4    webAppPath  Ljava/lang/String;
            8   13     5  resourceName  Ljava/lang/String;
            9   13     6             i  I
    MethodParameters:
            Name  Flags
      root        
      base        
      baseUrl     
      webAppPath  

  public long getLastModified();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 60
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarResourceRoot.base:Ljava/io/File;
            invokevirtual java.io.File.lastModified:()J
            lreturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public boolean exists();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 65
            iconst_1
            ireturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public boolean isVirtual();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 70
            iconst_0
            ireturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public boolean isDirectory();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 75
            iconst_1
            ireturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public boolean isFile();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 80
            iconst_0
            ireturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public boolean delete();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 85
            iconst_0
            ireturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 90
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarResourceRoot.name:Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public long getContentLength();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 95
            ldc -1
            lreturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public java.lang.String getCanonicalPath();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 100
            aconst_null
            areturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public boolean canRead();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 105
            iconst_1
            ireturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  protected java.io.InputStream doGetInputStream();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 110
            aconst_null
            areturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public byte[] getContent();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 115
            aconst_null
            areturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public long getCreation();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 120
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarResourceRoot.base:Ljava/io/File;
            invokevirtual java.io.File.lastModified:()J
            lreturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public java.net.URL getURL();
    descriptor: ()Ljava/net/URL;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 125
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarResourceRoot.baseUrl:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "!/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* url */
        start local 1 // java.lang.String url
         1: .line 127
            new java.net.URL
            dup
            aload 1 /* url */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
         2: areturn
         3: .line 128
      StackMap locals: org.apache.catalina.webresources.JarResourceRoot java.lang.String
      StackMap stack: java.net.MalformedURLException
            astore 2 /* e */
        start local 2 // java.net.MalformedURLException e
         4: .line 129
            getstatic org.apache.catalina.webresources.JarResourceRoot.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 6
         5: .line 130
            getstatic org.apache.catalina.webresources.JarResourceRoot.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.webresources.JarResourceRoot.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "fileResource.getUrlFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* url */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 2 /* e */
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         6: .line 132
      StackMap locals: java.net.MalformedURLException
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.net.MalformedURLException e
        end local 1 // java.lang.String url
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;
            1    7     1   url  Ljava/lang/String;
            4    7     2     e  Ljava/net/MalformedURLException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.net.MalformedURLException

  public java.net.URL getCodeBase();
    descriptor: ()Ljava/net/URL;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 139
            new java.net.URL
            dup
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarResourceRoot.baseUrl:Ljava/lang/String;
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
         1: areturn
         2: .line 140
      StackMap locals:
      StackMap stack: java.net.MalformedURLException
            astore 1 /* e */
        start local 1 // java.net.MalformedURLException e
         3: .line 141
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.JarResourceRoot.getLog:()Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 5
         4: .line 142
            aload 0 /* this */
            invokevirtual org.apache.catalina.webresources.JarResourceRoot.getLog:()Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.webresources.JarResourceRoot.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "fileResource.getUrlFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarResourceRoot.baseUrl:Ljava/lang/String;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 1 /* e */
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
         5: .line 144
      StackMap locals: java.net.MalformedURLException
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.net.MalformedURLException e
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;
            3    6     1     e  Ljava/net/MalformedURLException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.net.MalformedURLException

  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.JarResourceRoot this
         0: .line 149
            getstatic org.apache.catalina.webresources.JarResourceRoot.log:Lorg/apache/juli/logging/Log;
            areturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public java.security.cert.Certificate[] getCertificates();
    descriptor: ()[Ljava/security/cert/Certificate;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 154
            aconst_null
            areturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;

  public java.util.jar.Manifest getManifest();
    descriptor: ()Ljava/util/jar/Manifest;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.webresources.JarResourceRoot this
         0: .line 159
            aconst_null
            areturn
        end local 0 // org.apache.catalina.webresources.JarResourceRoot this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/webresources/JarResourceRoot;
}
SourceFile: "JarResourceRoot.java"