abstract class org.jruby.util.JarResource implements org.jruby.util.FileResource, org.jruby.util.DummyResourceStat$FileResourceExt
minor version: 0
major version: 59
flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
this_class: org.jruby.util.JarResource
super_class: java.lang.Object
{
private static final org.jruby.util.JarCache jarCache;
descriptor: Lorg/jruby/util/JarCache;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.lang.CharSequence jarPrefix;
descriptor: Ljava/lang/CharSequence;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private transient java.lang.String absolutePath;
descriptor: Ljava/lang/String;
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
private transient jnr.posix.FileStat fileStat;
descriptor: Ljnr/posix/FileStat;
flags: (0x0082) ACC_PRIVATE, ACC_TRANSIENT
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new org.jruby.util.JarCache
dup
invokespecial org.jruby.util.JarCache.<init>:()V
putstatic org.jruby.util.JarResource.jarCache:Lorg/jruby/util/JarCache;
return
LocalVariableTable:
Start End Slot Name Signature
public static org.jruby.util.JarResource create(java.lang.String);
descriptor: (Ljava/lang/String;)Lorg/jruby/util/JarResource;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=5, args_size=1
start local 0 0: aload 0
bipush 33
invokevirtual java.lang.String.indexOf:(I)I
istore 1
start local 1 1: iload 1
iconst_m1
if_icmpne 2
aconst_null
areturn
2: StackMap locals: int
StackMap stack:
aload 0
ldc "jar:"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 8
3: aload 0
ldc "file:"
iconst_4
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;I)Z
ifeq 6
4: aload 0
bipush 9
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 0
iinc 1 -9
5: goto 10
6: StackMap locals:
StackMap stack:
aload 0
iconst_4
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 0
iinc 1 -4
7: goto 10
8: StackMap locals:
StackMap stack:
aload 0
ldc "file:"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 10
9: aload 0
iconst_5
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 0
iinc 1 -5
10: StackMap locals:
StackMap stack:
aload 0
iconst_0
iload 1
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
astore 2
start local 2 11: aload 0
iload 1
iconst_1
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 3
start local 3 12: aload 3
bipush 47
bipush 47
invokestatic org.jruby.util.StringSupport.startsWith:(Ljava/lang/CharSequence;CC)Z
ifeq 13
aload 3
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 3
13: StackMap locals: java.lang.String java.lang.String
StackMap stack:
aload 2
aload 3
iconst_0
invokestatic org.jruby.util.JarResource.createJarResource:(Ljava/lang/String;Ljava/lang/String;Z)Lorg/jruby/util/JarResource;
astore 4
start local 4 14: aload 4
ifnonnull 16
aload 3
bipush 47
invokestatic org.jruby.util.StringSupport.startsWith:(Ljava/lang/CharSequence;C)Z
ifeq 16
15: aload 2
aload 3
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
iconst_1
invokestatic org.jruby.util.JarResource.createJarResource:(Ljava/lang/String;Ljava/lang/String;Z)Lorg/jruby/util/JarResource;
astore 4
16: StackMap locals: org.jruby.util.JarResource
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 pathname Ljava/lang/String;
1 17 1 bang I
11 17 2 jarPath Ljava/lang/String;
12 17 3 entryPath Ljava/lang/String;
14 17 4 resource Lorg/jruby/util/JarResource;
MethodParameters:
Name Flags
pathname
private static org.jruby.util.JarResource createJarResource(java.lang.String, java.lang.String, boolean);
descriptor: (Ljava/lang/String;Ljava/lang/String;Z)Lorg/jruby/util/JarResource;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=6, args_size=3
start local 0 start local 1 start local 2 0: getstatic org.jruby.util.JarResource.jarCache:Lorg/jruby/util/JarCache;
aload 0
invokevirtual org.jruby.util.JarCache.getIndex:(Ljava/lang/String;)Lorg/jruby/util/JarCache$JarIndex;
astore 3
start local 3 1: aload 3
ifnonnull 11
2: aload 0
ldc "UTF-8"
invokestatic java.net.URLDecoder.decode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 0
3: aload 1
ldc "UTF-8"
invokestatic java.net.URLDecoder.decode:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
astore 1
4: goto 9
5: StackMap locals: java.lang.String java.lang.String int org.jruby.util.JarCache$JarIndex
StackMap stack: java.lang.IllegalArgumentException
pop
6: aconst_null
areturn
7: StackMap locals:
StackMap stack: java.io.UnsupportedEncodingException
astore 4
start local 4 8: new java.lang.AssertionError
dup
aload 4
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
end local 4 9: StackMap locals:
StackMap stack:
getstatic org.jruby.util.JarResource.jarCache:Lorg/jruby/util/JarCache;
aload 0
invokevirtual org.jruby.util.JarCache.getIndex:(Ljava/lang/String;)Lorg/jruby/util/JarCache$JarIndex;
astore 3
10: aload 3
ifnonnull 11
aconst_null
areturn
11: StackMap locals:
StackMap stack:
aload 3
aload 1
invokevirtual org.jruby.util.JarCache$JarIndex.getDirEntries:(Ljava/lang/String;)[Ljava/lang/String;
astore 4
start local 4 12: aload 4
ifnull 14
13: new org.jruby.util.JarDirectoryResource
dup
aload 0
iload 2
aload 1
aload 4
invokespecial org.jruby.util.JarDirectoryResource.<init>:(Ljava/lang/String;ZLjava/lang/String;[Ljava/lang/String;)V
areturn
14: StackMap locals: java.lang.String[]
StackMap stack:
aload 1
invokevirtual java.lang.String.length:()I
iconst_1
if_icmple 18
aload 1
ldc "/"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 18
15: aload 3
aload 1
iconst_0
aload 1
invokevirtual java.lang.String.length:()I
iconst_1
isub
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
invokevirtual org.jruby.util.JarCache$JarIndex.getDirEntries:(Ljava/lang/String;)[Ljava/lang/String;
astore 4
16: aload 4
ifnull 18
17: new org.jruby.util.JarDirectoryResource
dup
aload 0
iload 2
aload 1
aload 4
invokespecial org.jruby.util.JarDirectoryResource.<init>:(Ljava/lang/String;ZLjava/lang/String;[Ljava/lang/String;)V
areturn
18: StackMap locals:
StackMap stack:
aload 3
aload 1
invokevirtual org.jruby.util.JarCache$JarIndex.getJarEntry:(Ljava/lang/String;)Ljava/util/jar/JarEntry;
astore 5
start local 5 19: aload 5
ifnull 21
20: new org.jruby.util.JarFileResource
dup
aload 0
iload 2
aload 3
aload 5
invokespecial org.jruby.util.JarFileResource.<init>:(Ljava/lang/String;ZLorg/jruby/util/JarCache$JarIndex;Ljava/util/jar/JarEntry;)V
areturn
21: StackMap locals: java.util.jar.JarEntry
StackMap stack:
aconst_null
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 jarPath Ljava/lang/String;
0 22 1 entryPath Ljava/lang/String;
0 22 2 rootSlashPrefix Z
1 22 3 index Lorg/jruby/util/JarCache$JarIndex;
8 9 4 e Ljava/io/UnsupportedEncodingException;
12 22 4 entries [Ljava/lang/String;
19 22 5 jarEntry Ljava/util/jar/JarEntry;
Exception table:
from to target type
2 4 5 Class java.lang.IllegalArgumentException
2 4 7 Class java.io.UnsupportedEncodingException
MethodParameters:
Name Flags
jarPath
entryPath
rootSlashPrefix
public static boolean removeJarResource(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic org.jruby.util.JarResource.jarCache:Lorg/jruby/util/JarCache;
aload 0
invokevirtual org.jruby.util.JarCache.remove:(Ljava/lang/String;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 jarPath Ljava/lang/String;
MethodParameters:
Name Flags
jarPath
void <init>(java.lang.String, boolean);
descriptor: (Ljava/lang/String;Z)V
flags: (0x0000)
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: new java.lang.StringBuilder
dup
aload 1
invokevirtual java.lang.String.length:()I
iconst_2
iadd
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 3
start local 3 2: aload 3
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
bipush 33
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
3: aload 0
iload 2
ifeq 4
aload 3
bipush 47
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
goto 5
StackMap locals: org.jruby.util.JarResource java.lang.String int java.lang.StringBuilder
StackMap stack: org.jruby.util.JarResource
4: aload 3
StackMap locals: org.jruby.util.JarResource java.lang.String int java.lang.StringBuilder
StackMap stack: org.jruby.util.JarResource java.lang.StringBuilder
5: putfield org.jruby.util.JarResource.jarPrefix:Ljava/lang/CharSequence;
6: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/util/JarResource;
0 7 1 jarPath Ljava/lang/String;
0 7 2 rootSlashPrefix Z
2 7 3 prefix Ljava/lang/StringBuilder;
MethodParameters:
Name Flags
jarPath
rootSlashPrefix
public final java.lang.String absolutePath();
descriptor: ()Ljava/lang/String;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.JarResource.absolutePath:Ljava/lang/String;
astore 1
start local 1 1: aload 1
ifnull 2
aload 1
areturn
2: StackMap locals: java.lang.String
StackMap stack:
aload 0
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
aload 0
getfield org.jruby.util.JarResource.jarPrefix:Ljava/lang/CharSequence;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.jruby.util.JarResource.entryName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
dup_x1
putfield org.jruby.util.JarResource.absolutePath:Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/util/JarResource;
1 3 1 path Ljava/lang/String;
public java.lang.String canonicalPath();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.util.JarResource.absolutePath:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
public boolean exists();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
public boolean canRead();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
public boolean canWrite();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
public boolean canExecute();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
public boolean isSymLink();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
public jnr.posix.FileStat stat();
descriptor: ()Ljnr/posix/FileStat;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield org.jruby.util.JarResource.fileStat:Ljnr/posix/FileStat;
astore 1
start local 1 1: aload 1
ifnull 2
aload 1
areturn
2: StackMap locals: jnr.posix.FileStat
StackMap stack:
aload 0
new org.jruby.util.DummyResourceStat
dup
aload 0
invokespecial org.jruby.util.DummyResourceStat.<init>:(Lorg/jruby/util/DummyResourceStat$FileResourceExt;)V
dup_x1
putfield org.jruby.util.JarResource.fileStat:Ljnr/posix/FileStat;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/jruby/util/JarResource;
1 3 1 fileStat Ljnr/posix/FileStat;
public jnr.posix.FileStat lstat();
descriptor: ()Ljnr/posix/FileStat;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual org.jruby.util.JarResource.stat:()Ljnr/posix/FileStat;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
public int errno();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
public boolean isNull();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
public abstract java.nio.file.attribute.FileTime creationTime();
descriptor: ()Ljava/nio/file/attribute/FileTime;
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
Exceptions:
throws java.io.IOException
public abstract java.nio.file.attribute.FileTime lastAccessTime();
descriptor: ()Ljava/nio/file/attribute/FileTime;
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
Exceptions:
throws java.io.IOException
public abstract java.nio.file.attribute.FileTime lastModifiedTime();
descriptor: ()Ljava/nio/file/attribute/FileTime;
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
Exceptions:
throws java.io.IOException
public long lastModified();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aload 0
invokevirtual org.jruby.util.JarResource.lastModifiedTime:()Ljava/nio/file/attribute/FileTime;
astore 1
2: goto 4
3: StackMap locals: org.jruby.util.JarResource java.nio.file.attribute.FileTime
StackMap stack: java.io.IOException
pop
4: StackMap locals:
StackMap stack:
aload 1
ifnonnull 5
lconst_0
goto 6
StackMap locals:
StackMap stack:
5: aload 1
invokevirtual java.nio.file.attribute.FileTime.toMillis:()J
StackMap locals:
StackMap stack: long
6: lreturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/jruby/util/JarResource;
1 7 1 mod Ljava/nio/file/attribute/FileTime;
Exception table:
from to target type
1 2 3 Class java.io.IOException
abstract java.lang.String entryName();
descriptor: ()Ljava/lang/String;
flags: (0x0400) ACC_ABSTRACT
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
bipush 123
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
aload 0
invokevirtual org.jruby.util.JarResource.absolutePath:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
bipush 125
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
public boolean equals(java.lang.Object);
descriptor: (Ljava/lang/Object;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
instanceof org.jruby.util.JarResource
ifeq 3
1: aload 1
checkcast org.jruby.util.JarResource
astore 2
start local 2 2: aload 0
invokevirtual org.jruby.util.JarResource.absolutePath:()Ljava/lang/String;
aload 2
invokevirtual org.jruby.util.JarResource.absolutePath:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ireturn
end local 2 3: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/jruby/util/JarResource;
0 4 1 obj Ljava/lang/Object;
2 3 2 that Lorg/jruby/util/JarResource;
MethodParameters:
Name Flags
obj
public int hashCode();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: bipush 11
aload 0
invokevirtual org.jruby.util.JarResource.entryName:()Ljava/lang/String;
invokevirtual java.lang.String.hashCode:()I
imul
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jruby/util/JarResource;
}
SourceFile: "JarResource.java"
InnerClasses:
abstract FileResourceExt = org.jruby.util.DummyResourceStat$FileResourceExt of org.jruby.util.DummyResourceStat
JarIndex = org.jruby.util.JarCache$JarIndex of org.jruby.util.JarCache