public class org.glassfish.grizzly.http.server.CLStaticHttpHandler extends org.glassfish.grizzly.http.server.StaticHttpHandlerBase
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.glassfish.grizzly.http.server.CLStaticHttpHandler
super_class: org.glassfish.grizzly.http.server.StaticHttpHandlerBase
{
private static final java.util.logging.Logger LOGGER;
descriptor: Ljava/util/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
protected static final java.lang.String CHECK_NON_SLASH_TERMINATED_FOLDERS_PROP;
descriptor: Ljava/lang/String;
flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
private static final boolean CHECK_NON_SLASH_TERMINATED_FOLDERS;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.String SLASH_STR;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "/"
private static final java.lang.String EMPTY_STR;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: ""
private final java.lang.ClassLoader classLoader;
descriptor: Ljava/lang/ClassLoader;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.glassfish.grizzly.utils.ArraySet<java.lang.String> docRoots;
descriptor: Lorg/glassfish/grizzly/utils/ArraySet;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lorg/glassfish/grizzly/utils/ArraySet<Ljava/lang/String;>;
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: ldc Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.$assertionsDisabled:Z
3: ldc Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
invokestatic org.glassfish.grizzly.Grizzly.logger:(Ljava/lang/Class;)Ljava/util/logging/Logger;
putstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.LOGGER:Ljava/util/logging/Logger;
4: new java.lang.StringBuilder
dup
ldc Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
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
ldc ".check-non-slash-terminated-folders"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
putstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.CHECK_NON_SLASH_TERMINATED_FOLDERS_PROP:Ljava/lang/String;
5: getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.CHECK_NON_SLASH_TERMINATED_FOLDERS_PROP:Ljava/lang/String;
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
ifnull 8
6: getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.CHECK_NON_SLASH_TERMINATED_FOLDERS_PROP:Ljava/lang/String;
invokestatic java.lang.Boolean.getBoolean:(Ljava/lang/String;)Z
ifne 8
7: iconst_0
goto 9
StackMap locals:
StackMap stack:
8: iconst_1
StackMap locals:
StackMap stack: int
9: putstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.CHECK_NON_SLASH_TERMINATED_FOLDERS:Z
10: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(java.lang.ClassLoader, java.lang.String[]);
descriptor: (Ljava/lang/ClassLoader;[Ljava/lang/String;)V
flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
Code:
stack=4, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial org.glassfish.grizzly.http.server.StaticHttpHandlerBase.<init>:()V
1: aload 0
new org.glassfish.grizzly.utils.ArraySet
dup
ldc Ljava/lang/String;
invokespecial org.glassfish.grizzly.utils.ArraySet.<init>:(Ljava/lang/Class;)V
putfield org.glassfish.grizzly.http.server.CLStaticHttpHandler.docRoots:Lorg/glassfish/grizzly/utils/ArraySet;
2: aload 1
ifnonnull 4
3: new java.lang.IllegalArgumentException
dup
ldc "ClassLoader can not be null"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.ClassLoader java.lang.String[]
StackMap stack:
aload 0
aload 1
putfield org.glassfish.grizzly.http.server.CLStaticHttpHandler.classLoader:Ljava/lang/ClassLoader;
5: aload 2
arraylength
ifle 14
6: aload 2
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 11
StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.ClassLoader java.lang.String[] top int int java.lang.String[]
StackMap stack:
7: aload 6
iload 4
aaload
astore 3
start local 3 8: aload 3
ldc "/"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 10
9: new java.lang.IllegalArgumentException
dup
ldc "Doc root should end with slash ('/')"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 3 10: StackMap locals:
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
11: iload 4
iload 5
if_icmplt 7
12: aload 0
getfield org.glassfish.grizzly.http.server.CLStaticHttpHandler.docRoots:Lorg/glassfish/grizzly/utils/ArraySet;
aload 2
invokevirtual org.glassfish.grizzly.utils.ArraySet.addAll:([Ljava/lang/Object;)Z
pop
13: goto 15
14: StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.ClassLoader java.lang.String[]
StackMap stack:
aload 0
getfield org.glassfish.grizzly.http.server.CLStaticHttpHandler.docRoots:Lorg/glassfish/grizzly/utils/ArraySet;
ldc "/"
invokevirtual org.glassfish.grizzly.utils.ArraySet.add:(Ljava/lang/Object;)Z
pop
15: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
0 16 1 classLoader Ljava/lang/ClassLoader;
0 16 2 docRoots [Ljava/lang/String;
8 10 3 docRoot Ljava/lang/String;
MethodParameters:
Name Flags
classLoader final
docRoots final
public boolean addDocRoot(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ldc "/"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 2
1: new java.lang.IllegalArgumentException
dup
ldc "Doc root should end with slash ('/')"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.glassfish.grizzly.http.server.CLStaticHttpHandler.docRoots:Lorg/glassfish/grizzly/utils/ArraySet;
aload 1
invokevirtual org.glassfish.grizzly.utils.ArraySet.add:(Ljava/lang/Object;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
0 3 1 docRoot Ljava/lang/String;
MethodParameters:
Name Flags
docRoot final
public boolean removeDocRoot(java.lang.String);
descriptor: (Ljava/lang/String;)Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.glassfish.grizzly.http.server.CLStaticHttpHandler.docRoots:Lorg/glassfish/grizzly/utils/ArraySet;
aload 1
invokevirtual org.glassfish.grizzly.utils.ArraySet.remove:(Ljava/lang/Object;)Z
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
0 1 1 docRoot Ljava/lang/String;
MethodParameters:
Name Flags
docRoot final
public java.lang.ClassLoader getClassLoader();
descriptor: ()Ljava/lang/ClassLoader;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.glassfish.grizzly.http.server.CLStaticHttpHandler.classLoader:Ljava/lang/ClassLoader;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
protected boolean handle(java.lang.String, org.glassfish.grizzly.http.server.Request, org.glassfish.grizzly.http.server.Response);
descriptor: (Ljava/lang/String;Lorg/glassfish/grizzly/http/server/Request;Lorg/glassfish/grizzly/http/server/Response;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=16, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aconst_null
astore 4
start local 4 1: aconst_null
astore 5
start local 5 2: aload 1
ldc "/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 4
3: aload 1
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 1
4: StackMap locals: java.net.URLConnection java.io.InputStream
StackMap stack:
iconst_1
istore 6
start local 6 5: aload 1
invokevirtual java.lang.String.length:()I
ifeq 6
aload 1
ldc "/"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 8
6: StackMap locals: int
StackMap stack:
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "index.html"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 1
7: iconst_0
istore 6
8: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual org.glassfish.grizzly.http.server.CLStaticHttpHandler.lookupResource:(Ljava/lang/String;)Ljava/net/URL;
astore 7
start local 7 9: aload 7
ifnonnull 12
iload 6
ifeq 12
getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.CHECK_NON_SLASH_TERMINATED_FOLDERS:Z
ifeq 12
10: aload 0
new java.lang.StringBuilder
dup
aload 1
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "/index.html"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual org.glassfish.grizzly.http.server.CLStaticHttpHandler.lookupResource:(Ljava/lang/String;)Ljava/net/URL;
astore 7
11: iconst_0
istore 6
12: StackMap locals: java.net.URL
StackMap stack:
aconst_null
astore 8
start local 8 13: aconst_null
astore 9
start local 9 14: iconst_0
istore 10
start local 10 15: aload 7
ifnull 60
16: ldc "file"
aload 7
invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 30
17: new java.io.File
dup
aload 7
invokevirtual java.net.URL.toURI:()Ljava/net/URI;
invokespecial java.io.File.<init>:(Ljava/net/URI;)V
astore 11
start local 11 18: aload 11
invokevirtual java.io.File.exists:()Z
ifeq 60
19: aload 11
invokevirtual java.io.File.isDirectory:()Z
ifeq 26
20: new java.io.File
dup
aload 11
ldc "/index.html"
invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 12
start local 12 21: aload 12
invokevirtual java.io.File.exists:()Z
ifeq 60
aload 12
invokevirtual java.io.File.isFile:()Z
ifeq 60
22: aload 12
astore 8
23: aload 12
invokevirtual java.io.File.getPath:()Ljava/lang/String;
astore 9
24: iconst_1
istore 10
end local 12 25: goto 60
26: StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.String org.glassfish.grizzly.http.server.Request org.glassfish.grizzly.http.server.Response java.net.URLConnection java.io.InputStream int java.net.URL java.io.File java.lang.String int java.io.File
StackMap stack:
aload 11
astore 8
27: aload 11
invokevirtual java.io.File.getPath:()Ljava/lang/String;
astore 9
28: iconst_1
istore 10
end local 11 29: goto 60
30: StackMap locals:
StackMap stack:
aload 7
invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
astore 4
31: ldc "jar"
aload 7
invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 51
32: aload 4
checkcast java.net.JarURLConnection
astore 11
start local 11 33: aload 11
invokevirtual java.net.JarURLConnection.getJarEntry:()Ljava/util/jar/JarEntry;
astore 12
start local 12 34: aload 11
invokevirtual java.net.JarURLConnection.getJarFile:()Ljava/util/jar/JarFile;
astore 13
start local 13 35: aconst_null
astore 14
start local 14 36: aload 12
invokevirtual java.util.jar.JarEntry.isDirectory:()Z
ifne 37
aload 13
aload 12
invokevirtual java.util.jar.JarFile.getInputStream:(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
dup
astore 14
ifnonnull 43
37: StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.String org.glassfish.grizzly.http.server.Request org.glassfish.grizzly.http.server.Response java.net.URLConnection java.io.InputStream int java.net.URL java.io.File java.lang.String int java.net.JarURLConnection java.util.jar.JarEntry java.util.jar.JarFile java.io.InputStream
StackMap stack:
aload 12
invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
ldc "/"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 38
new java.lang.StringBuilder
dup
aload 12
invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "index.html"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
goto 39
38: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 12
invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "/index.html"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
39: StackMap locals:
StackMap stack: java.lang.String
astore 15
start local 15 40: aload 13
aload 15
invokevirtual java.util.jar.JarFile.getJarEntry:(Ljava/lang/String;)Ljava/util/jar/JarEntry;
astore 12
41: aload 12
ifnull 43
42: aload 13
aload 12
invokevirtual java.util.jar.JarFile.getInputStream:(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
astore 14
end local 15 43: StackMap locals:
StackMap stack:
aload 14
ifnull 49
44: new org.glassfish.grizzly.http.server.CLStaticHttpHandler$JarURLInputStream
dup
aload 11
aload 13
aload 14
invokespecial org.glassfish.grizzly.http.server.CLStaticHttpHandler$JarURLInputStream.<init>:(Ljava/net/JarURLConnection;Ljava/util/jar/JarFile;Ljava/io/InputStream;)V
astore 5
45: getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.$assertionsDisabled:Z
ifne 46
aload 12
ifnonnull 46
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
46: StackMap locals:
StackMap stack:
aload 12
invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
astore 9
47: iconst_1
istore 10
48: goto 60
49: StackMap locals:
StackMap stack:
aload 11
aload 13
invokestatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.closeJarFileIfNeeded:(Ljava/net/JarURLConnection;Ljava/util/jar/JarFile;)V
end local 14 end local 13 end local 12 end local 11 50: goto 60
StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.String org.glassfish.grizzly.http.server.Request org.glassfish.grizzly.http.server.Response java.net.URLConnection java.io.InputStream int java.net.URL java.io.File java.lang.String int
StackMap stack:
51: ldc "bundle"
aload 7
invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 59
52: iload 6
ifeq 57
aload 4
invokevirtual java.net.URLConnection.getContentLength:()I
ifgt 57
53: aload 0
getfield org.glassfish.grizzly.http.server.CLStaticHttpHandler.classLoader:Ljava/lang/ClassLoader;
new java.lang.StringBuilder
dup
aload 7
invokevirtual java.net.URL.getPath:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "/index.html"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.ClassLoader.getResource:(Ljava/lang/String;)Ljava/net/URL;
astore 11
start local 11 54: aload 11
ifnull 57
55: aload 11
astore 7
56: aload 11
invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
astore 4
end local 11 57: StackMap locals:
StackMap stack:
iconst_1
istore 10
58: goto 60
59: StackMap locals:
StackMap stack:
iconst_1
istore 10
60: StackMap locals:
StackMap stack:
iload 10
ifne 64
61: getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 63
62: getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "Resource not found {0}"
aload 1
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
63: StackMap locals:
StackMap stack:
iconst_0
ireturn
64: StackMap locals:
StackMap stack:
getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.$assertionsDisabled:Z
ifne 65
aload 7
ifnonnull 65
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
65: StackMap locals:
StackMap stack:
getstatic org.glassfish.grizzly.http.Method.GET:Lorg/glassfish/grizzly/http/Method;
aload 2
invokevirtual org.glassfish.grizzly.http.server.Request.getMethod:()Lorg/glassfish/grizzly/http/Method;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 71
66: getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 68
67: getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "Resource found {0}, but HTTP method {1} is not allowed"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 1
aastore
dup
iconst_1
aload 2
invokevirtual org.glassfish.grizzly.http.server.Request.getMethod:()Lorg/glassfish/grizzly/http/Method;
aastore
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
68: StackMap locals:
StackMap stack:
aload 3
getstatic org.glassfish.grizzly.http.util.HttpStatus.METHOD_NOT_ALLOWED_405:Lorg/glassfish/grizzly/http/util/HttpStatus;
invokevirtual org.glassfish.grizzly.http.server.Response.setStatus:(Lorg/glassfish/grizzly/http/util/HttpStatus;)V
69: aload 3
getstatic org.glassfish.grizzly.http.util.Header.Allow:Lorg/glassfish/grizzly/http/util/Header;
ldc "GET"
invokevirtual org.glassfish.grizzly.http.server.Response.setHeader:(Lorg/glassfish/grizzly/http/util/Header;Ljava/lang/String;)V
70: iconst_1
ireturn
71: StackMap locals:
StackMap stack:
aload 3
aload 9
ifnull 72
aload 9
goto 73
StackMap locals:
StackMap stack: org.glassfish.grizzly.http.server.Response
72: aload 7
invokevirtual java.net.URL.getPath:()Ljava/lang/String;
StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.String org.glassfish.grizzly.http.server.Request org.glassfish.grizzly.http.server.Response java.net.URLConnection java.io.InputStream int java.net.URL java.io.File java.lang.String int
StackMap stack: org.glassfish.grizzly.http.server.Response java.lang.String
73: invokestatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.pickupContentType:(Lorg/glassfish/grizzly/http/server/Response;Ljava/lang/String;)V
74: aload 8
ifnull 78
75: aload 0
aload 2
aload 3
aload 8
invokevirtual org.glassfish.grizzly.http.server.CLStaticHttpHandler.addToFileCache:(Lorg/glassfish/grizzly/http/server/Request;Lorg/glassfish/grizzly/http/server/Response;Ljava/io/File;)Z
pop
76: aload 3
aload 8
invokestatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.sendFile:(Lorg/glassfish/grizzly/http/server/Response;Ljava/io/File;)V
77: goto 87
78: StackMap locals:
StackMap stack:
getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.$assertionsDisabled:Z
ifne 79
aload 4
ifnonnull 79
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
79: StackMap locals:
StackMap stack:
ldc "jar"
aload 7
invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 84
80: aload 0
81: new java.net.URI
dup
aload 7
invokevirtual java.net.URL.getPath:()Ljava/lang/String;
invokespecial java.net.URI.<init>:(Ljava/lang/String;)V
invokevirtual java.net.URI.getPath:()Ljava/lang/String;
82: invokevirtual org.glassfish.grizzly.http.server.CLStaticHttpHandler.getJarFile:(Ljava/lang/String;)Ljava/io/File;
astore 11
start local 11 83: aload 0
aload 2
aload 3
aload 11
invokevirtual org.glassfish.grizzly.http.server.CLStaticHttpHandler.addTimeStampEntryToFileCache:(Lorg/glassfish/grizzly/http/server/Request;Lorg/glassfish/grizzly/http/server/Response;Ljava/io/File;)Z
pop
end local 11 84: StackMap locals:
StackMap stack:
aload 3
aload 5
ifnull 85
aload 5
goto 86
StackMap locals:
StackMap stack: org.glassfish.grizzly.http.server.Response
85: aload 4
invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.String org.glassfish.grizzly.http.server.Request org.glassfish.grizzly.http.server.Response java.net.URLConnection java.io.InputStream int java.net.URL java.io.File java.lang.String int
StackMap stack: org.glassfish.grizzly.http.server.Response java.io.InputStream
86: invokestatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.sendResource:(Lorg/glassfish/grizzly/http/server/Response;Ljava/io/InputStream;)V
87: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 10 end local 9 end local 8 end local 7 end local 6 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 88 0 this Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
0 88 1 resourcePath Ljava/lang/String;
0 88 2 request Lorg/glassfish/grizzly/http/server/Request;
0 88 3 response Lorg/glassfish/grizzly/http/server/Response;
1 88 4 urlConnection Ljava/net/URLConnection;
2 88 5 urlInputStream Ljava/io/InputStream;
5 88 6 mayBeFolder Z
9 88 7 url Ljava/net/URL;
13 88 8 fileResource Ljava/io/File;
14 88 9 filePath Ljava/lang/String;
15 88 10 found Z
18 29 11 file Ljava/io/File;
21 25 12 welcomeFile Ljava/io/File;
33 50 11 jarUrlConnection Ljava/net/JarURLConnection;
34 50 12 jarEntry Ljava/util/jar/JarEntry;
35 50 13 jarFile Ljava/util/jar/JarFile;
36 50 14 is Ljava/io/InputStream;
40 43 15 welcomeResource Ljava/lang/String;
54 57 11 welcomeUrl Ljava/net/URL;
83 84 11 jarFile Ljava/io/File;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
resourcePath
request final
response final
private java.net.URL lookupResource(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/net/URL;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=2
start local 0 start local 1 0: aload 0
getfield org.glassfish.grizzly.http.server.CLStaticHttpHandler.docRoots:Lorg/glassfish/grizzly/utils/ArraySet;
invokevirtual org.glassfish.grizzly.utils.ArraySet.getArray:()[Ljava/lang/Object;
checkcast java.lang.String[]
astore 2
start local 2 1: aload 2
ifnull 2
aload 2
arraylength
ifne 5
2: StackMap locals: java.lang.String[]
StackMap stack:
getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
invokevirtual java.util.logging.Logger.isLoggable:(Ljava/util/logging/Level;)Z
ifeq 4
3: getstatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.LOGGER:Ljava/util/logging/Logger;
getstatic java.util.logging.Level.FINE:Ljava/util/logging/Level;
ldc "No doc roots registered -> resource {0} is not found "
aload 1
invokevirtual java.util.logging.Logger.log:(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
4: StackMap locals:
StackMap stack:
aconst_null
areturn
5: StackMap locals:
StackMap stack:
aload 2
dup
astore 6
arraylength
istore 5
iconst_0
istore 4
goto 17
StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.String java.lang.String[] top int int java.lang.String[]
StackMap stack:
6: aload 6
iload 4
aaload
astore 3
start local 3 7: ldc "/"
aload 3
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 10
8: ldc ""
astore 3
9: goto 12
StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.String java.lang.String[] java.lang.String int int java.lang.String[]
StackMap stack:
10: aload 3
ldc "/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 12
11: aload 3
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 3
12: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 3
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 7
start local 7 13: aload 0
getfield org.glassfish.grizzly.http.server.CLStaticHttpHandler.classLoader:Ljava/lang/ClassLoader;
aload 7
invokevirtual java.lang.ClassLoader.getResource:(Ljava/lang/String;)Ljava/net/URL;
astore 8
start local 8 14: aload 8
ifnull 16
15: aload 8
areturn
end local 8 end local 7 end local 3 16: StackMap locals: org.glassfish.grizzly.http.server.CLStaticHttpHandler java.lang.String java.lang.String[] top int int java.lang.String[]
StackMap stack:
iinc 4 1
StackMap locals:
StackMap stack:
17: iload 4
iload 5
if_icmplt 6
18: aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
0 19 1 resourcePath Ljava/lang/String;
1 19 2 docRootsLocal [Ljava/lang/String;
7 16 3 docRoot Ljava/lang/String;
13 16 7 fullPath Ljava/lang/String;
14 16 8 url Ljava/net/URL;
MethodParameters:
Name Flags
resourcePath
private static void sendResource(org.glassfish.grizzly.http.server.Response, java.io.InputStream);
descriptor: (Lorg/glassfish/grizzly/http/server/Response;Ljava/io/InputStream;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=7, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getstatic org.glassfish.grizzly.http.util.HttpStatus.OK_200:Lorg/glassfish/grizzly/http/util/HttpStatus;
invokevirtual org.glassfish.grizzly.http.server.Response.setStatus:(Lorg/glassfish/grizzly/http/util/HttpStatus;)V
1: aload 0
getstatic org.glassfish.grizzly.http.util.Header.Date:Lorg/glassfish/grizzly/http/util/Header;
invokestatic java.lang.System.currentTimeMillis:()J
invokevirtual org.glassfish.grizzly.http.server.Response.addDateHeader:(Lorg/glassfish/grizzly/http/util/Header;J)V
2: aload 0
invokevirtual org.glassfish.grizzly.http.server.Response.suspend:()V
3: aload 0
invokevirtual org.glassfish.grizzly.http.server.Response.getNIOOutputStream:()Lorg/glassfish/grizzly/http/io/NIOOutputStream;
astore 2
start local 2 4: aload 2
new org.glassfish.grizzly.http.server.CLStaticHttpHandler$NonBlockingDownloadHandler
dup
aload 0
aload 2
aload 1
sipush 8192
invokespecial org.glassfish.grizzly.http.server.CLStaticHttpHandler$NonBlockingDownloadHandler.<init>:(Lorg/glassfish/grizzly/http/server/Response;Lorg/glassfish/grizzly/http/io/NIOOutputStream;Ljava/io/InputStream;I)V
invokevirtual org.glassfish.grizzly.http.io.NIOOutputStream.notifyCanWrite:(Lorg/glassfish/grizzly/WriteHandler;)V
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 response Lorg/glassfish/grizzly/http/server/Response;
0 6 1 input Ljava/io/InputStream;
4 6 2 outputStream Lorg/glassfish/grizzly/http/io/NIOOutputStream;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
response final
input final
private boolean addTimeStampEntryToFileCache(org.glassfish.grizzly.http.server.Request, org.glassfish.grizzly.http.server.Response, java.io.File);
descriptor: (Lorg/glassfish/grizzly/http/server/Request;Lorg/glassfish/grizzly/http/server/Response;Ljava/io/File;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual org.glassfish.grizzly.http.server.CLStaticHttpHandler.isFileCacheEnabled:()Z
ifeq 10
1: aload 1
invokevirtual org.glassfish.grizzly.http.server.Request.getContext:()Lorg/glassfish/grizzly/filterchain/FilterChainContext;
astore 4
start local 4 2: aload 0
aload 4
invokevirtual org.glassfish.grizzly.http.server.CLStaticHttpHandler.lookupFileCache:(Lorg/glassfish/grizzly/filterchain/FilterChainContext;)Lorg/glassfish/grizzly/http/server/FileCacheFilter;
astore 5
start local 5 3: aload 5
ifnull 10
4: aload 5
invokevirtual org.glassfish.grizzly.http.server.FileCacheFilter.getFileCache:()Lorg/glassfish/grizzly/http/server/filecache/FileCache;
astore 6
start local 6 5: aload 6
invokevirtual org.glassfish.grizzly.http.server.filecache.FileCache.isEnabled:()Z
ifeq 10
6: aload 2
ifnull 8
7: aload 2
aload 3
invokestatic org.glassfish.grizzly.http.server.CLStaticHttpHandler.addCachingHeaders:(Lorg/glassfish/grizzly/http/server/Response;Ljava/io/File;)V
8: StackMap locals: org.glassfish.grizzly.filterchain.FilterChainContext org.glassfish.grizzly.http.server.FileCacheFilter org.glassfish.grizzly.http.server.filecache.FileCache
StackMap stack:
aload 6
aload 1
invokevirtual org.glassfish.grizzly.http.server.Request.getRequest:()Lorg/glassfish/grizzly/http/HttpRequestPacket;
aload 3
invokevirtual java.io.File.lastModified:()J
invokevirtual org.glassfish.grizzly.http.server.filecache.FileCache.add:(Lorg/glassfish/grizzly/http/HttpRequestPacket;J)Lorg/glassfish/grizzly/http/server/filecache/FileCache$CacheResult;
pop
9: iconst_1
ireturn
end local 6 end local 5 end local 4 10: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
0 11 1 req Lorg/glassfish/grizzly/http/server/Request;
0 11 2 res Lorg/glassfish/grizzly/http/server/Response;
0 11 3 archive Ljava/io/File;
2 10 4 fcContext Lorg/glassfish/grizzly/filterchain/FilterChainContext;
3 10 5 fileCacheFilter Lorg/glassfish/grizzly/http/server/FileCacheFilter;
5 10 6 fileCache Lorg/glassfish/grizzly/http/server/filecache/FileCache;
MethodParameters:
Name Flags
req final
res final
archive final
private java.io.File getJarFile(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/io/File;
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=2
start local 0 start local 1 0: aload 1
ldc "!/"
invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
istore 2
start local 2 1: iload 2
iconst_m1
if_icmpne 3
2: new java.net.MalformedURLException
dup
ldc "The jar file delimeter were not found"
invokespecial java.net.MalformedURLException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals: int
StackMap stack:
new java.io.File
dup
aload 1
iconst_0
iload 2
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
astore 3
start local 3 4: aload 3
invokevirtual java.io.File.exists:()Z
ifeq 5
aload 3
invokevirtual java.io.File.isFile:()Z
ifne 6
5: StackMap locals: java.io.File
StackMap stack:
new java.io.FileNotFoundException
dup
ldc "The jar file was not found"
invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/glassfish/grizzly/http/server/CLStaticHttpHandler;
0 7 1 path Ljava/lang/String;
1 7 2 jarDelimIdx I
4 7 3 file Ljava/io/File;
Exceptions:
throws java.net.MalformedURLException, java.io.FileNotFoundException
MethodParameters:
Name Flags
path final
private static void closeJarFileIfNeeded(java.net.JarURLConnection, java.util.jar.JarFile);
descriptor: (Ljava/net/JarURLConnection;Ljava/util/jar/JarFile;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.net.JarURLConnection.getUseCaches:()Z
ifne 2
1: aload 1
invokevirtual java.util.jar.JarFile.close:()V
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 jarConnection Ljava/net/JarURLConnection;
0 3 1 jarFile Ljava/util/jar/JarFile;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
jarConnection final
jarFile final
}
SourceFile: "CLStaticHttpHandler.java"
NestMembers:
org.glassfish.grizzly.http.server.CLStaticHttpHandler$JarURLInputStream org.glassfish.grizzly.http.server.CLStaticHttpHandler$NonBlockingDownloadHandler
InnerClasses:
JarURLInputStream = org.glassfish.grizzly.http.server.CLStaticHttpHandler$JarURLInputStream of org.glassfish.grizzly.http.server.CLStaticHttpHandler
private NonBlockingDownloadHandler = org.glassfish.grizzly.http.server.CLStaticHttpHandler$NonBlockingDownloadHandler of org.glassfish.grizzly.http.server.CLStaticHttpHandler
public final CacheResult = org.glassfish.grizzly.http.server.filecache.FileCache$CacheResult of org.glassfish.grizzly.http.server.filecache.FileCache