public class io.vertx.ext.web.handler.impl.StaticHandlerImpl implements io.vertx.ext.web.handler.StaticHandler
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.vertx.ext.web.handler.impl.StaticHandlerImpl
super_class: java.lang.Object
{
private static final io.vertx.core.logging.Logger log;
descriptor: Lio/vertx/core/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final java.text.DateFormat dateTimeFormatter;
descriptor: Ljava/text/DateFormat;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.Map<java.lang.String, io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry> propsCache;
descriptor: Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Map<Ljava/lang/String;Lio/vertx/ext/web/handler/impl/StaticHandlerImpl$CacheEntry;>;
private java.lang.String webRoot;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private long maxAgeSeconds;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private boolean directoryListing;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.lang.String directoryTemplateResource;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private java.lang.String directoryTemplate;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private boolean includeHidden;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean filesReadOnly;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean cachingEnabled;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private long cacheEntryTimeout;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private java.lang.String indexPage;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private java.util.List<io.vertx.ext.web.Http2PushMapping> http2PushMappings;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/List<Lio/vertx/ext/web/Http2PushMapping;>;
private int maxCacheSize;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean rangeSupport;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean allowRootFileSystemAccess;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private boolean sendVaryHeader;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.lang.String defaultContentEncoding;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
private static int NUM_SERVES_TUNING_FS_ACCESS;
descriptor: I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private boolean alwaysAsyncFS;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private long maxAvgServeTimeNanoSeconds;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private boolean tuning;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private long totalTime;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private long numServesBlocking;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private boolean useAsyncFS;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private long nextAvgCheck;
descriptor: J
flags: (0x0002) ACC_PRIVATE
private java.util.Set<java.lang.String> compressedMediaTypes;
descriptor: Ljava/util/Set;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Set<Ljava/lang/String;>;
private java.util.Set<java.lang.String> compressedFileSuffixes;
descriptor: Ljava/util/Set;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/Set<Ljava/lang/String;>;
private final java.lang.ClassLoader classLoader;
descriptor: Ljava/lang/ClassLoader;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final java.util.regex.Pattern RANGE;
descriptor: Ljava/util/regex/Pattern;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
invokestatic io.vertx.core.logging.LoggerFactory.getLogger:(Ljava/lang/Class;)Lio/vertx/core/logging/Logger;
putstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.log:Lio/vertx/core/logging/Logger;
1: sipush 1000
putstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.NUM_SERVES_TUNING_FS_ACCESS:I
2: ldc "^bytes=(\\d+)-(\\d*)$"
invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
putstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.RANGE:Ljava/util/regex/Pattern;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(java.lang.String, java.lang.ClassLoader);
descriptor: (Ljava/lang/String;Ljava/lang/ClassLoader;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
invokestatic io.vertx.ext.web.impl.Utils.createRFC1123DateTimeFormatter:()Ljava/text/DateFormat;
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.dateTimeFormatter:Ljava/text/DateFormat;
2: aload 0
ldc "webroot"
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.webRoot:Ljava/lang/String;
3: aload 0
ldc 86400
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.maxAgeSeconds:J
4: aload 0
iconst_0
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryListing:Z
5: aload 0
ldc "META-INF/vertx/web/vertx-web-directory.html"
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryTemplateResource:Ljava/lang/String;
6: aload 0
iconst_1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.includeHidden:Z
7: aload 0
iconst_1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.filesReadOnly:Z
8: aload 0
getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.DEFAULT_CACHING_ENABLED:Z
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.cachingEnabled:Z
9: aload 0
ldc 30000
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.cacheEntryTimeout:J
10: aload 0
ldc "/index.html"
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.indexPage:Ljava/lang/String;
11: aload 0
sipush 10000
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.maxCacheSize:I
12: aload 0
iconst_1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.rangeSupport:Z
13: aload 0
iconst_0
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.allowRootFileSystemAccess:Z
14: aload 0
iconst_1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendVaryHeader:Z
15: aload 0
invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.defaultContentEncoding:Ljava/lang/String;
16: aload 0
iconst_0
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.alwaysAsyncFS:Z
17: aload 0
ldc 1000000
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.maxAvgServeTimeNanoSeconds:J
18: aload 0
iconst_1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.tuning:Z
19: aload 0
getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.NUM_SERVES_TUNING_FS_ACCESS:I
i2l
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.nextAvgCheck:J
20: aload 0
invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.compressedMediaTypes:Ljava/util/Set;
21: aload 0
invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.compressedFileSuffixes:Ljava/util/Set;
22: aload 0
aload 2
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.classLoader:Ljava/lang/ClassLoader;
23: aload 1
ifnull 25
24: aload 0
aload 1
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.setRoot:(Ljava/lang/String;)V
25: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl java.lang.String java.lang.ClassLoader
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 26 1 root Ljava/lang/String;
0 26 2 classLoader Ljava/lang/ClassLoader;
MethodParameters:
Name Flags
root
classLoader
private java.lang.String directoryTemplate(io.vertx.core.Vertx);
descriptor: (Lio/vertx/core/Vertx;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryTemplate:Ljava/lang/String;
ifnonnull 2
1: aload 0
aload 1
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryTemplateResource:Ljava/lang/String;
invokestatic io.vertx.ext.web.impl.Utils.readFileToString:(Lio/vertx/core/Vertx;Ljava/lang/String;)Ljava/lang/String;
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryTemplate:Ljava/lang/String;
2: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryTemplate:Ljava/lang/String;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 3 1 vertx Lio/vertx/core/Vertx;
MethodParameters:
Name Flags
vertx
private void writeCacheHeaders(io.vertx.core.http.HttpServerRequest, io.vertx.core.file.FileProps);
descriptor: (Lio/vertx/core/http/HttpServerRequest;Lio/vertx/core/file/FileProps;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
invokeinterface io.vertx.core.http.HttpServerResponse.headers:()Lio/vertx/core/MultiMap;
astore 3
start local 3 1: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.cachingEnabled:Z
ifeq 6
2: aload 3
ldc "cache-control"
new java.lang.StringBuilder
dup
ldc "public, max-age="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.maxAgeSeconds:J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic io.vertx.ext.web.impl.Utils.addToMapIfAbsent:(Lio/vertx/core/MultiMap;Ljava/lang/String;Ljava/lang/String;)V
3: aload 3
ldc "last-modified"
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.dateTimeFormatter:Ljava/text/DateFormat;
aload 2
invokeinterface io.vertx.core.file.FileProps.lastModifiedTime:()J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
invokevirtual java.text.DateFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
invokestatic io.vertx.ext.web.impl.Utils.addToMapIfAbsent:(Lio/vertx/core/MultiMap;Ljava/lang/String;Ljava/lang/String;)V
4: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendVaryHeader:Z
ifeq 6
aload 1
invokeinterface io.vertx.core.http.HttpServerRequest.headers:()Lio/vertx/core/MultiMap;
ldc "accept-encoding"
invokeinterface io.vertx.core.MultiMap.contains:(Ljava/lang/String;)Z
ifeq 6
5: aload 3
ldc "vary"
ldc "accept-encoding"
invokestatic io.vertx.ext.web.impl.Utils.addToMapIfAbsent:(Lio/vertx/core/MultiMap;Ljava/lang/String;Ljava/lang/String;)V
6: StackMap locals: io.vertx.core.MultiMap
StackMap stack:
aload 3
ldc "date"
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.dateTimeFormatter:Ljava/text/DateFormat;
new java.util.Date
dup
invokespecial java.util.Date.<init>:()V
invokevirtual java.text.DateFormat.format:(Ljava/util/Date;)Ljava/lang/String;
invokeinterface io.vertx.core.MultiMap.set:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/MultiMap;
pop
7: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 8 1 request Lio/vertx/core/http/HttpServerRequest;
0 8 2 props Lio/vertx/core/file/FileProps;
1 8 3 headers Lio/vertx/core/MultiMap;
MethodParameters:
Name Flags
request
props
public void handle(io.vertx.ext.web.RoutingContext);
descriptor: (Lio/vertx/ext/web/RoutingContext;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
astore 2
start local 2 1: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.method:()Lio/vertx/core/http/HttpMethod;
getstatic io.vertx.core.http.HttpMethod.GET:Lio/vertx/core/http/HttpMethod;
if_acmpeq 5
aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.method:()Lio/vertx/core/http/HttpMethod;
getstatic io.vertx.core.http.HttpMethod.HEAD:Lio/vertx/core/http/HttpMethod;
if_acmpeq 5
2: getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.log:Lio/vertx/core/logging/Logger;
invokevirtual io.vertx.core.logging.Logger.isTraceEnabled:()Z
ifeq 3
getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.log:Lio/vertx/core/logging/Logger;
ldc "Not GET or HEAD so ignoring request"
invokevirtual io.vertx.core.logging.Logger.trace:(Ljava/lang/Object;)V
3: StackMap locals: io.vertx.core.http.HttpServerRequest
StackMap stack:
aload 1
invokeinterface io.vertx.ext.web.RoutingContext.next:()V
4: goto 13
5: StackMap locals:
StackMap stack:
aload 1
invokeinterface io.vertx.ext.web.RoutingContext.normalisedPath:()Ljava/lang/String;
iconst_0
invokestatic io.vertx.core.net.impl.URIDecoder.decodeURIComponent:(Ljava/lang/String;Z)Ljava/lang/String;
invokestatic io.vertx.core.http.impl.HttpUtils.removeDots:(Ljava/lang/CharSequence;)Ljava/lang/String;
astore 3
start local 3 6: aload 3
ifnonnull 10
7: getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.log:Lio/vertx/core/logging/Logger;
new java.lang.StringBuilder
dup
ldc "Invalid path: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
invokeinterface io.vertx.core.http.HttpServerRequest.path:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual io.vertx.core.logging.Logger.warn:(Ljava/lang/Object;)V
8: aload 1
invokeinterface io.vertx.ext.web.RoutingContext.next:()V
9: return
10: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryListing:Z
ifne 12
ldc "/"
aload 3
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 12
11: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.indexPage:Ljava/lang/String;
astore 3
12: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 3
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendStatic:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;)V
end local 3 13: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 14 1 context Lio/vertx/ext/web/RoutingContext;
1 14 2 request Lio/vertx/core/http/HttpServerRequest;
6 13 3 path Ljava/lang/String;
MethodParameters:
Name Flags
context
private void sendStatic(io.vertx.ext.web.RoutingContext, java.lang.String);
descriptor: (Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=8, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.includeHidden:Z
ifne 8
2: aload 0
aload 2
aload 1
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.getFile:(Ljava/lang/String;Lio/vertx/ext/web/RoutingContext;)Ljava/lang/String;
astore 3
3: aload 3
bipush 47
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 4
start local 4 4: aload 3
iload 4
iconst_1
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 5
start local 5 5: aload 5
invokevirtual java.lang.String.length:()I
ifle 8
aload 5
iconst_0
invokevirtual java.lang.String.charAt:(I)C
bipush 46
if_icmpne 8
6: aload 1
invokeinterface io.vertx.ext.web.RoutingContext.next:()V
7: return
end local 5 end local 4 8: StackMap locals: java.lang.String
StackMap stack:
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.cachingEnabled:Z
ifeq 9
aload 0
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.propsCache:()Ljava/util/Map;
aload 2
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry
goto 10
StackMap locals:
StackMap stack:
9: aconst_null
StackMap locals:
StackMap stack: io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry
10: astore 4
start local 4 11: aload 4
ifnull 15
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.filesReadOnly:Z
ifne 12
aload 4
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry.isOutOfDate:()Z
ifne 15
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry
StackMap stack:
12: aload 4
aload 1
invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry.shouldUseCached:(Lio/vertx/core/http/HttpServerRequest;)Z
ifeq 15
13: aload 1
invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
getstatic io.netty.handler.codec.http.HttpResponseStatus.NOT_MODIFIED:Lio/netty/handler/codec/http/HttpResponseStatus;
invokevirtual io.netty.handler.codec.http.HttpResponseStatus.code:()I
invokeinterface io.vertx.core.http.HttpServerResponse.setStatusCode:(I)Lio/vertx/core/http/HttpServerResponse;
invokeinterface io.vertx.core.http.HttpServerResponse.end:()V
14: return
15: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.cachingEnabled:Z
ifeq 16
aload 4
ifnull 16
iconst_1
goto 17
StackMap locals:
StackMap stack:
16: iconst_0
StackMap locals:
StackMap stack: int
17: istore 5
start local 5 18: aload 3
ifnonnull 19
aload 0
aload 2
aload 1
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.getFile:(Ljava/lang/String;Lio/vertx/ext/web/RoutingContext;)Ljava/lang/String;
goto 20
StackMap locals: int
StackMap stack:
19: aload 3
StackMap locals:
StackMap stack: java.lang.String
20: astore 6
start local 6 21: aload 0
aload 1
aload 6
aload 0
aload 1
iload 5
aload 2
aload 6
invokedynamic handle(Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;Lio/vertx/ext/web/RoutingContext;ZLjava/lang/String;Ljava/lang/String;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$0(Lio/vertx/ext/web/RoutingContext;ZLjava/lang/String;Ljava/lang/String;Lio/vertx/core/AsyncResult;)V (7)
(Lio/vertx/core/AsyncResult;)V
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.isFileExisting:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/Handler;)V
22: return
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 23 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 23 1 context Lio/vertx/ext/web/RoutingContext;
0 23 2 path Ljava/lang/String;
1 23 3 file Ljava/lang/String;
4 8 4 idx I
5 8 5 name Ljava/lang/String;
11 23 4 entry Lio/vertx/ext/web/handler/impl/StaticHandlerImpl$CacheEntry;
18 23 5 dirty Z
21 23 6 sfile Ljava/lang/String;
MethodParameters:
Name Flags
context
path
private void sendDirectory(io.vertx.ext.web.RoutingContext, java.lang.String, java.lang.String);
descriptor: (Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryListing:Z
ifeq 3
1: aload 0
aload 3
aload 1
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendDirectoryListing:(Ljava/lang/String;Lio/vertx/ext/web/RoutingContext;)V
2: goto 14
StackMap locals:
StackMap stack:
3: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.indexPage:Ljava/lang/String;
ifnull 13
4: aload 2
ldc "/"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 7
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.indexPage:Ljava/lang/String;
ldc "/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 7
5: new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.indexPage:Ljava/lang/String;
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
start local 4 6: goto 11
end local 4 StackMap locals:
StackMap stack:
7: aload 2
ldc "/"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 10
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.indexPage:Ljava/lang/String;
ldc "/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 10
8: new java.lang.StringBuilder
dup
aload 2
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;
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.indexPage:Ljava/lang/String;
iconst_1
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
start local 4 9: goto 11
end local 4 10: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.indexPage:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
start local 4 11: StackMap locals: java.lang.String
StackMap stack:
aload 0
aload 1
aload 4
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendStatic:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;)V
end local 4 12: goto 14
13: StackMap locals:
StackMap stack:
aload 1
getstatic io.netty.handler.codec.http.HttpResponseStatus.FORBIDDEN:Lio/netty/handler/codec/http/HttpResponseStatus;
invokevirtual io.netty.handler.codec.http.HttpResponseStatus.code:()I
invokeinterface io.vertx.ext.web.RoutingContext.fail:(I)V
14: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 15 1 context Lio/vertx/ext/web/RoutingContext;
0 15 2 path Ljava/lang/String;
0 15 3 file Ljava/lang/String;
6 7 4 indexPath Ljava/lang/String;
9 10 4 indexPath Ljava/lang/String;
11 12 4 indexPath Ljava/lang/String;
MethodParameters:
Name Flags
context
path
file
private <T> T wrapInTCCLSwitch(java.util.concurrent.Callable<T>);
descriptor: (Ljava/util/concurrent/Callable;)Ljava/lang/Object;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.classLoader:Ljava/lang/ClassLoader;
ifnonnull 3
1: aload 1
invokeinterface java.util.concurrent.Callable.call:()Ljava/lang/Object;
2: areturn
3: StackMap locals:
StackMap stack:
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getContextClassLoader:()Ljava/lang/ClassLoader;
astore 2
start local 2 4: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.classLoader:Ljava/lang/ClassLoader;
invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
5: aload 1
invokeinterface java.util.concurrent.Callable.call:()Ljava/lang/Object;
astore 4
6: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
aload 2
invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
7: aload 4
areturn
8: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl java.util.concurrent.Callable java.lang.ClassLoader
StackMap stack: java.lang.Throwable
astore 3
9: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
aload 2
invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
10: aload 3
athrow
end local 2 11: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl java.util.concurrent.Callable
StackMap stack: java.lang.Exception
astore 2
start local 2 12: new java.lang.RuntimeException
dup
aload 2
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 13 1 callable Ljava/util/concurrent/Callable<TT;>;
4 11 2 original Ljava/lang/ClassLoader;
12 13 2 e Ljava/lang/Exception;
Exception table:
from to target type
4 6 8 any
0 2 11 Class java.lang.Exception
3 7 11 Class java.lang.Exception
8 11 11 Class java.lang.Exception
Signature: <T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;)TT;
MethodParameters:
Name Flags
callable
private synchronized void isFileExisting(io.vertx.ext.web.RoutingContext, java.lang.String, io.vertx.core.Handler<io.vertx.core.AsyncResult<java.lang.Boolean>>);
descriptor: (Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/Handler;)V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=4, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokeinterface io.vertx.ext.web.RoutingContext.vertx:()Lio/vertx/core/Vertx;
invokeinterface io.vertx.core.Vertx.fileSystem:()Lio/vertx/core/file/FileSystem;
astore 4
start local 4 1: aload 0
aload 4
aload 2
aload 3
invokedynamic call(Lio/vertx/core/file/FileSystem;Ljava/lang/String;Lio/vertx/core/Handler;)Ljava/util/concurrent/Callable;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$2(Lio/vertx/core/file/FileSystem;Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/file/FileSystem; (6)
()Lio/vertx/core/file/FileSystem;
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.wrapInTCCLSwitch:(Ljava/util/concurrent/Callable;)Ljava/lang/Object;
pop
2: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 3 1 context Lio/vertx/ext/web/RoutingContext;
0 3 2 file Ljava/lang/String;
0 3 3 resultHandler Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Boolean;>;>;
1 3 4 fs Lio/vertx/core/file/FileSystem;
Signature: (Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Ljava/lang/Boolean;>;>;)V
MethodParameters:
Name Flags
context
file
resultHandler
private synchronized void getFileProps(io.vertx.ext.web.RoutingContext, java.lang.String, io.vertx.core.Handler<io.vertx.core.AsyncResult<io.vertx.core.file.FileProps>>);
descriptor: (Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/Handler;)V
flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
Code:
stack=5, locals=14, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokeinterface io.vertx.ext.web.RoutingContext.vertx:()Lio/vertx/core/Vertx;
invokeinterface io.vertx.core.Vertx.fileSystem:()Lio/vertx/core/file/FileSystem;
astore 4
start local 4 1: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.alwaysAsyncFS:Z
ifne 2
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.useAsyncFS:Z
ifeq 4
2: StackMap locals: io.vertx.core.file.FileSystem
StackMap stack:
aload 0
aload 4
aload 2
aload 3
invokedynamic call(Lio/vertx/core/file/FileSystem;Ljava/lang/String;Lio/vertx/core/Handler;)Ljava/util/concurrent/Callable;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$3(Lio/vertx/core/file/FileSystem;Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/file/FileSystem; (6)
()Lio/vertx/core/file/FileSystem;
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.wrapInTCCLSwitch:(Ljava/util/concurrent/Callable;)Ljava/lang/Object;
pop
3: goto 27
4: StackMap locals:
StackMap stack:
lconst_0
lstore 5
start local 5 5: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.tuning:Z
ifeq 7
6: invokestatic java.lang.System.nanoTime:()J
lstore 5
7: StackMap locals: long
StackMap stack:
aload 0
aload 4
aload 2
invokedynamic call(Lio/vertx/core/file/FileSystem;Ljava/lang/String;)Ljava/util/concurrent/Callable;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$4(Lio/vertx/core/file/FileSystem;Ljava/lang/String;)Lio/vertx/core/file/FileProps; (6)
()Lio/vertx/core/file/FileProps;
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.wrapInTCCLSwitch:(Ljava/util/concurrent/Callable;)Ljava/lang/Object;
checkcast io.vertx.core.file.FileProps
astore 7
start local 7 8: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.tuning:Z
ifeq 23
9: invokestatic java.lang.System.nanoTime:()J
lstore 8
start local 8 10: lload 8
lload 5
lsub
lstore 10
start local 10 11: aload 0
dup
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.totalTime:J
lload 10
ladd
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.totalTime:J
12: aload 0
dup
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.numServesBlocking:J
lconst_1
ladd
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.numServesBlocking:J
13: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.numServesBlocking:J
ldc 9223372036854775807
lcmp
ifne 16
14: aload 0
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.resetTuning:()V
15: goto 23
StackMap locals: io.vertx.core.file.FileProps long long
StackMap stack:
16: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.numServesBlocking:J
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.nextAvgCheck:J
lcmp
ifne 23
17: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.totalTime:J
l2d
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.numServesBlocking:J
l2d
ddiv
dstore 12
start local 12 18: dload 12
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.maxAvgServeTimeNanoSeconds:J
l2d
dcmpl
ifle 22
19: aload 0
iconst_1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.useAsyncFS:Z
20: getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.log:Lio/vertx/core/logging/Logger;
new java.lang.StringBuilder
dup
ldc "Switching to async file system access in static file server as fs access is slow! (Average access time of "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
dload 12
invokevirtual java.lang.StringBuilder.append:(D)Ljava/lang/StringBuilder;
ldc " ns)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual io.vertx.core.logging.Logger.info:(Ljava/lang/Object;)V
21: aload 0
iconst_0
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.tuning:Z
22: StackMap locals: double
StackMap stack:
aload 0
dup
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.nextAvgCheck:J
getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.NUM_SERVES_TUNING_FS_ACCESS:I
i2l
ladd
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.nextAvgCheck:J
end local 12 end local 10 end local 8 23: StackMap locals:
StackMap stack:
aload 3
aload 7
invokestatic io.vertx.core.Future.succeededFuture:(Ljava/lang/Object;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
end local 7 24: goto 27
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext java.lang.String io.vertx.core.Handler io.vertx.core.file.FileSystem long
StackMap stack: java.lang.RuntimeException
25: astore 7
start local 7 26: aload 3
aload 7
invokevirtual java.lang.RuntimeException.getCause:()Ljava/lang/Throwable;
invokestatic io.vertx.core.Future.failedFuture:(Ljava/lang/Throwable;)Lio/vertx/core/Future;
invokeinterface io.vertx.core.Handler.handle:(Ljava/lang/Object;)V
end local 7 end local 5 27: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 28 1 context Lio/vertx/ext/web/RoutingContext;
0 28 2 file Ljava/lang/String;
0 28 3 resultHandler Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/core/file/FileProps;>;>;
1 28 4 fs Lio/vertx/core/file/FileSystem;
5 27 5 start J
8 24 7 props Lio/vertx/core/file/FileProps;
10 23 8 end J
11 23 10 dur J
18 23 12 avg D
26 27 7 e Ljava/lang/RuntimeException;
Exception table:
from to target type
7 24 25 Class java.lang.RuntimeException
Signature: (Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/Handler<Lio/vertx/core/AsyncResult<Lio/vertx/core/file/FileProps;>;>;)V
MethodParameters:
Name Flags
context
file
resultHandler
private void resetTuning();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.NUM_SERVES_TUNING_FS_ACCESS:I
i2l
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.nextAvgCheck:J
1: aload 0
lconst_0
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.totalTime:J
2: aload 0
lconst_0
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.numServesBlocking:J
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
private void sendFile(io.vertx.ext.web.RoutingContext, java.lang.String, io.vertx.core.file.FileProps);
descriptor: (Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/file/FileProps;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=9, locals=13, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
astore 4
start local 4 1: aconst_null
astore 5
start local 5 2: lconst_0
lstore 6
start local 6 3: aconst_null
astore 8
start local 8 4: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.rangeSupport:Z
ifeq 28
5: aload 4
ldc "Range"
invokeinterface io.vertx.core.http.HttpServerRequest.getHeader:(Ljava/lang/String;)Ljava/lang/String;
astore 9
start local 9 6: aload 3
invokeinterface io.vertx.core.file.FileProps.size:()J
lconst_1
lsub
lstore 6
7: aload 9
ifnull 23
8: getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.RANGE:Ljava/util/regex/Pattern;
aload 9
invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
astore 10
start local 10 9: aload 10
invokevirtual java.util.regex.Matcher.matches:()Z
ifeq 23
10: aload 10
iconst_1
invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
astore 11
start local 11 11: aload 11
invokestatic java.lang.Long.parseLong:(Ljava/lang/String;)J
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
astore 5
12: aload 5
invokevirtual java.lang.Long.longValue:()J
lconst_0
lcmp
iflt 13
aload 5
invokevirtual java.lang.Long.longValue:()J
aload 3
invokeinterface io.vertx.core.file.FileProps.size:()J
lcmp
iflt 14
13: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext java.lang.String io.vertx.core.file.FileProps io.vertx.core.http.HttpServerRequest java.lang.Long long io.vertx.core.MultiMap java.lang.String java.util.regex.Matcher java.lang.String
StackMap stack:
new java.lang.IndexOutOfBoundsException
dup
invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
athrow
14: StackMap locals:
StackMap stack:
aload 10
iconst_2
invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
astore 11
15: aload 11
ifnull 23
aload 11
invokevirtual java.lang.String.length:()I
ifle 23
16: lload 6
aload 11
invokestatic java.lang.Long.parseLong:(Ljava/lang/String;)J
invokestatic java.lang.Math.min:(JJ)J
lstore 6
17: lload 6
aload 5
invokevirtual java.lang.Long.longValue:()J
lcmp
ifge 23
18: new java.lang.IndexOutOfBoundsException
dup
invokespecial java.lang.IndexOutOfBoundsException.<init>:()V
athrow
end local 11 19: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext java.lang.String io.vertx.core.file.FileProps io.vertx.core.http.HttpServerRequest java.lang.Long long io.vertx.core.MultiMap java.lang.String java.util.regex.Matcher
StackMap stack: java.lang.RuntimeException
pop
20: aload 1
invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
ldc "Content-Range"
new java.lang.StringBuilder
dup
ldc "bytes */"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokeinterface io.vertx.core.file.FileProps.size:()J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
21: aload 1
getstatic io.netty.handler.codec.http.HttpResponseStatus.REQUESTED_RANGE_NOT_SATISFIABLE:Lio/netty/handler/codec/http/HttpResponseStatus;
invokevirtual io.netty.handler.codec.http.HttpResponseStatus.code:()I
invokeinterface io.vertx.ext.web.RoutingContext.fail:(I)V
22: return
end local 10 23: StackMap locals:
StackMap stack:
aload 4
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
invokeinterface io.vertx.core.http.HttpServerResponse.headers:()Lio/vertx/core/MultiMap;
astore 8
24: aload 8
ldc "Accept-Ranges"
ldc "bytes"
invokeinterface io.vertx.core.MultiMap.set:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/MultiMap;
pop
25: aload 8
ldc "Content-Length"
lload 6
lconst_1
ladd
aload 5
ifnonnull 26
lconst_0
goto 27
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext java.lang.String io.vertx.core.file.FileProps io.vertx.core.http.HttpServerRequest java.lang.Long long io.vertx.core.MultiMap java.lang.String
StackMap stack: io.vertx.core.MultiMap java.lang.String long
26: aload 5
invokevirtual java.lang.Long.longValue:()J
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext java.lang.String io.vertx.core.file.FileProps io.vertx.core.http.HttpServerRequest java.lang.Long long io.vertx.core.MultiMap java.lang.String
StackMap stack: io.vertx.core.MultiMap java.lang.String long long
27: lsub
invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
invokeinterface io.vertx.core.MultiMap.set:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/MultiMap;
pop
end local 9 28: StackMap locals:
StackMap stack:
aload 0
aload 4
aload 3
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.writeCacheHeaders:(Lio/vertx/core/http/HttpServerRequest;Lio/vertx/core/file/FileProps;)V
29: aload 4
invokeinterface io.vertx.core.http.HttpServerRequest.method:()Lio/vertx/core/http/HttpMethod;
getstatic io.vertx.core.http.HttpMethod.HEAD:Lio/vertx/core/http/HttpMethod;
if_acmpne 32
30: aload 4
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
invokeinterface io.vertx.core.http.HttpServerResponse.end:()V
31: goto 40
32: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.rangeSupport:Z
ifeq 39
aload 5
ifnull 39
33: aload 8
ldc "Content-Range"
new java.lang.StringBuilder
dup
ldc "bytes "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc "-"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
lload 6
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
ldc "/"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokeinterface io.vertx.core.file.FileProps.size:()J
invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface io.vertx.core.MultiMap.set:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/MultiMap;
pop
34: aload 4
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
getstatic io.netty.handler.codec.http.HttpResponseStatus.PARTIAL_CONTENT:Lio/netty/handler/codec/http/HttpResponseStatus;
invokevirtual io.netty.handler.codec.http.HttpResponseStatus.code:()I
invokeinterface io.vertx.core.http.HttpServerResponse.setStatusCode:(I)Lio/vertx/core/http/HttpServerResponse;
pop
35: aload 5
invokevirtual java.lang.Long.longValue:()J
lstore 9
start local 9 36: lload 6
lconst_1
ladd
aload 5
invokevirtual java.lang.Long.longValue:()J
lsub
lstore 11
start local 11 37: aload 0
aload 0
aload 2
aload 4
lload 9
lload 11
aload 1
invokedynamic call(Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;Ljava/lang/String;Lio/vertx/core/http/HttpServerRequest;JJLio/vertx/ext/web/RoutingContext;)Ljava/util/concurrent/Callable;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$5(Ljava/lang/String;Lio/vertx/core/http/HttpServerRequest;JJLio/vertx/ext/web/RoutingContext;)Lio/vertx/core/http/HttpServerResponse; (7)
()Lio/vertx/core/http/HttpServerResponse;
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.wrapInTCCLSwitch:(Ljava/util/concurrent/Callable;)Ljava/lang/Object;
pop
end local 11 end local 9 38: goto 40
39: StackMap locals:
StackMap stack:
aload 0
aload 0
aload 2
aload 4
aload 1
invokedynamic call(Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;Ljava/lang/String;Lio/vertx/core/http/HttpServerRequest;Lio/vertx/ext/web/RoutingContext;)Ljava/util/concurrent/Callable;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
()Ljava/lang/Object;
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$7(Ljava/lang/String;Lio/vertx/core/http/HttpServerRequest;Lio/vertx/ext/web/RoutingContext;)Lio/vertx/core/http/HttpServerResponse; (7)
()Lio/vertx/core/http/HttpServerResponse;
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.wrapInTCCLSwitch:(Ljava/util/concurrent/Callable;)Ljava/lang/Object;
pop
40: StackMap locals:
StackMap stack:
return
end local 8 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 41 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 41 1 context Lio/vertx/ext/web/RoutingContext;
0 41 2 file Ljava/lang/String;
0 41 3 fileProps Lio/vertx/core/file/FileProps;
1 41 4 request Lio/vertx/core/http/HttpServerRequest;
2 41 5 offset Ljava/lang/Long;
3 41 6 end J
4 41 8 headers Lio/vertx/core/MultiMap;
6 28 9 range Ljava/lang/String;
9 23 10 m Ljava/util/regex/Matcher;
11 19 11 part Ljava/lang/String;
36 38 9 finalOffset J
37 38 11 finalLength J
Exception table:
from to target type
10 19 19 Class java.lang.NumberFormatException
10 19 19 Class java.lang.IndexOutOfBoundsException
MethodParameters:
Name Flags
context
file
fileProps
public io.vertx.ext.web.handler.StaticHandler setAllowRootFileSystemAccess(boolean);
descriptor: (Z)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.allowRootFileSystemAccess:Z
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 allowRootFileSystemAccess Z
MethodParameters:
Name Flags
allowRootFileSystemAccess
public io.vertx.ext.web.handler.StaticHandler setWebRoot(java.lang.String);
descriptor: (Ljava/lang/String;)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.setRoot:(Ljava/lang/String;)V
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 webRoot Ljava/lang/String;
MethodParameters:
Name Flags
webRoot
public io.vertx.ext.web.handler.StaticHandler setFilesReadOnly(boolean);
descriptor: (Z)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.filesReadOnly:Z
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 readOnly Z
MethodParameters:
Name Flags
readOnly
public io.vertx.ext.web.handler.StaticHandler setMaxAgeSeconds(long);
descriptor: (J)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: lload 1
lconst_0
lcmp
ifge 2
1: new java.lang.IllegalArgumentException
dup
ldc "timeout must be >= 0"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
lload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.maxAgeSeconds:J
3: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 4 1 maxAgeSeconds J
MethodParameters:
Name Flags
maxAgeSeconds
public io.vertx.ext.web.handler.StaticHandler setMaxCacheSize(int);
descriptor: (I)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: iload 1
iconst_1
if_icmpge 2
1: new java.lang.IllegalArgumentException
dup
ldc "maxCacheSize must be >= 1"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.maxCacheSize:I
3: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 4 1 maxCacheSize I
MethodParameters:
Name Flags
maxCacheSize
public io.vertx.ext.web.handler.StaticHandler setCachingEnabled(boolean);
descriptor: (Z)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.cachingEnabled:Z
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 enabled Z
MethodParameters:
Name Flags
enabled
public io.vertx.ext.web.handler.StaticHandler setDirectoryListing(boolean);
descriptor: (Z)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryListing:Z
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 directoryListing Z
MethodParameters:
Name Flags
directoryListing
public io.vertx.ext.web.handler.StaticHandler setDirectoryTemplate(java.lang.String);
descriptor: (Ljava/lang/String;)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryTemplateResource:Ljava/lang/String;
1: aload 0
aconst_null
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryTemplate:Ljava/lang/String;
2: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 3 1 directoryTemplate Ljava/lang/String;
MethodParameters:
Name Flags
directoryTemplate
public io.vertx.ext.web.handler.StaticHandler setEnableRangeSupport(boolean);
descriptor: (Z)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.rangeSupport:Z
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 enableRangeSupport Z
MethodParameters:
Name Flags
enableRangeSupport
public io.vertx.ext.web.handler.StaticHandler setIncludeHidden(boolean);
descriptor: (Z)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.includeHidden:Z
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 includeHidden Z
MethodParameters:
Name Flags
includeHidden
public io.vertx.ext.web.handler.StaticHandler setCacheEntryTimeout(long);
descriptor: (J)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: lload 1
lconst_1
lcmp
ifge 2
1: new java.lang.IllegalArgumentException
dup
ldc "timeout must be >= 1"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
lload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.cacheEntryTimeout:J
3: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 4 1 timeout J
MethodParameters:
Name Flags
timeout
public io.vertx.ext.web.handler.StaticHandler setIndexPage(java.lang.String);
descriptor: (Ljava/lang/String;)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 1
ldc "/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifne 3
2: new java.lang.StringBuilder
dup
ldc "/"
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 1
3: StackMap locals:
StackMap stack:
aload 0
aload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.indexPage:Ljava/lang/String;
4: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 5 1 indexPage Ljava/lang/String;
MethodParameters:
Name Flags
indexPage
public io.vertx.ext.web.handler.StaticHandler setAlwaysAsyncFS(boolean);
descriptor: (Z)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.alwaysAsyncFS:Z
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 alwaysAsyncFS Z
MethodParameters:
Name Flags
alwaysAsyncFS
public io.vertx.ext.web.handler.StaticHandler setHttp2PushMapping(java.util.List<io.vertx.ext.web.Http2PushMapping>);
descriptor: (Ljava/util/List;)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnull 2
1: aload 0
new java.util.ArrayList
dup
aload 1
invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.http2PushMappings:Ljava/util/List;
2: StackMap locals:
StackMap stack:
aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 3 1 http2PushMap Ljava/util/List<Lio/vertx/ext/web/Http2PushMapping;>;
Signature: (Ljava/util/List<Lio/vertx/ext/web/Http2PushMapping;>;)Lio/vertx/ext/web/handler/StaticHandler;
MethodParameters:
Name Flags
http2PushMap
public io.vertx.ext.web.handler.StaticHandler skipCompressionForMediaTypes(java.util.Set<java.lang.String>);
descriptor: (Ljava/util/Set;)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnull 2
1: aload 0
new java.util.HashSet
dup
aload 1
invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.compressedMediaTypes:Ljava/util/Set;
2: StackMap locals:
StackMap stack:
aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 3 1 mediaTypes Ljava/util/Set<Ljava/lang/String;>;
Signature: (Ljava/util/Set<Ljava/lang/String;>;)Lio/vertx/ext/web/handler/StaticHandler;
MethodParameters:
Name Flags
mediaTypes
public io.vertx.ext.web.handler.StaticHandler skipCompressionForSuffixes(java.util.Set<java.lang.String>);
descriptor: (Ljava/util/Set;)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnull 2
1: aload 0
new java.util.HashSet
dup
aload 1
invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.compressedFileSuffixes:Ljava/util/Set;
2: StackMap locals:
StackMap stack:
aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 3 1 fileSuffixes Ljava/util/Set<Ljava/lang/String;>;
Signature: (Ljava/util/Set<Ljava/lang/String;>;)Lio/vertx/ext/web/handler/StaticHandler;
MethodParameters:
Name Flags
fileSuffixes
public synchronized io.vertx.ext.web.handler.StaticHandler setEnableFSTuning(boolean);
descriptor: (Z)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.tuning:Z
1: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.tuning:Z
ifne 3
2: aload 0
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.resetTuning:()V
3: StackMap locals:
StackMap stack:
aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 4 1 enableFSTuning Z
MethodParameters:
Name Flags
enableFSTuning
public io.vertx.ext.web.handler.StaticHandler setMaxAvgServeTimeNs(long);
descriptor: (J)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
lload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.maxAvgServeTimeNanoSeconds:J
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 maxAvgServeTimeNanoSeconds J
MethodParameters:
Name Flags
maxAvgServeTimeNanoSeconds
public io.vertx.ext.web.handler.StaticHandler setSendVaryHeader(boolean);
descriptor: (Z)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendVaryHeader:Z
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 sendVaryHeader Z
MethodParameters:
Name Flags
sendVaryHeader
public io.vertx.ext.web.handler.StaticHandler setDefaultContentEncoding(java.lang.String);
descriptor: (Ljava/lang/String;)Lio/vertx/ext/web/handler/StaticHandler;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.defaultContentEncoding:Ljava/lang/String;
1: aload 0
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 2 1 contentEncoding Ljava/lang/String;
MethodParameters:
Name Flags
contentEncoding
private java.util.Map<java.lang.String, io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry> propsCache();
descriptor: ()Ljava/util/Map;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.propsCache:Ljava/util/Map;
ifnonnull 2
1: aload 0
new io.vertx.ext.web.impl.LRUCache
dup
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.maxCacheSize:I
invokespecial io.vertx.ext.web.impl.LRUCache.<init>:(I)V
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.propsCache:Ljava/util/Map;
2: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.propsCache:Ljava/util/Map;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
Signature: ()Ljava/util/Map<Ljava/lang/String;Lio/vertx/ext/web/handler/impl/StaticHandlerImpl$CacheEntry;>;
private void removeCache(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.propsCache:Ljava/util/Map;
ifnull 2
1: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.propsCache:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
2: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 3 1 path Ljava/lang/String;
MethodParameters:
Name Flags
path
private java.util.Date parseDate(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/util/Date;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.dateTimeFormatter:Ljava/text/DateFormat;
aload 1
invokevirtual java.text.DateFormat.parse:(Ljava/lang/String;)Ljava/util/Date;
1: areturn
2: StackMap locals:
StackMap stack: java.text.ParseException
astore 2
start local 2 3: new io.vertx.core.VertxException
dup
aload 2
invokespecial io.vertx.core.VertxException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 4 1 header Ljava/lang/String;
3 4 2 e Ljava/text/ParseException;
Exception table:
from to target type
0 1 2 Class java.text.ParseException
MethodParameters:
Name Flags
header
private java.lang.String getFile(java.lang.String, io.vertx.ext.web.RoutingContext);
descriptor: (Ljava/lang/String;Lio/vertx/ext/web/RoutingContext;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=3
start local 0 start local 1 start local 2 0: new java.lang.StringBuilder
dup
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.webRoot:Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
aload 2
invokestatic io.vertx.ext.web.impl.Utils.pathOffset:(Ljava/lang/String;Lio/vertx/ext/web/RoutingContext;)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 3
start local 3 1: getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.log:Lio/vertx/core/logging/Logger;
invokevirtual io.vertx.core.logging.Logger.isTraceEnabled:()Z
ifeq 2
getstatic io.vertx.ext.web.handler.impl.StaticHandlerImpl.log:Lio/vertx/core/logging/Logger;
new java.lang.StringBuilder
dup
ldc "File to serve is "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual io.vertx.core.logging.Logger.trace:(Ljava/lang/Object;)V
2: StackMap locals: java.lang.String
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 3 1 path Ljava/lang/String;
0 3 2 context Lio/vertx/ext/web/RoutingContext;
1 3 3 file Ljava/lang/String;
MethodParameters:
Name Flags
path
context
private void setRoot(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: aload 1
invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
pop
1: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.allowRootFileSystemAccess:Z
ifne 8
2: invokestatic java.io.File.listRoots:()[Ljava/io/File;
dup
astore 5
arraylength
istore 4
iconst_0
istore 3
goto 7
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl java.lang.String top int int java.io.File[]
StackMap stack:
3: aload 5
iload 3
aaload
astore 2
start local 2 4: aload 1
aload 2
invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 6
5: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "root cannot start with '"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
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;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 2 6: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
7: iload 3
iload 4
if_icmplt 3
8: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl java.lang.String
StackMap stack:
aload 0
aload 1
putfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.webRoot:Ljava/lang/String;
9: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 10 1 webRoot Ljava/lang/String;
4 6 2 root Ljava/io/File;
MethodParameters:
Name Flags
webRoot
private void sendDirectoryListing(java.lang.String, io.vertx.ext.web.RoutingContext);
descriptor: (Ljava/lang/String;Lio/vertx/ext/web/RoutingContext;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 2
invokeinterface io.vertx.ext.web.RoutingContext.vertx:()Lio/vertx/core/Vertx;
invokeinterface io.vertx.core.Vertx.fileSystem:()Lio/vertx/core/file/FileSystem;
astore 3
start local 3 1: aload 2
invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
astore 4
start local 4 2: aload 3
aload 1
aload 0
aload 2
aload 4
invokedynamic handle(Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/http/HttpServerRequest;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$12(Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/http/HttpServerRequest;Lio/vertx/core/AsyncResult;)V (7)
(Lio/vertx/core/AsyncResult;)V
invokeinterface io.vertx.core.file.FileSystem.readDir:(Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/file/FileSystem;
pop
3: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 4 1 dir Ljava/lang/String;
0 4 2 context Lio/vertx/ext/web/RoutingContext;
1 4 3 fileSystem Lio/vertx/core/file/FileSystem;
2 4 4 request Lio/vertx/core/http/HttpServerRequest;
MethodParameters:
Name Flags
dir
context
private java.lang.String getFileExtension(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 1
bipush 46
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 2
start local 2 1: iload 2
iconst_m1
if_icmpeq 3
iload 2
aload 1
invokevirtual java.lang.String.length:()I
iconst_1
isub
if_icmpeq 3
2: aload 1
iload 2
iconst_1
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
areturn
3: StackMap locals: int
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 4 1 file Ljava/lang/String;
1 4 2 li I
MethodParameters:
Name Flags
file
public void handle(java.lang.Object);
descriptor: (Ljava/lang/Object;)V
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: aload 0
aload 1
checkcast io.vertx.ext.web.RoutingContext
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.handle:(Lio/vertx/ext/web/RoutingContext;)V
return
LocalVariableTable:
Start End Slot Name Signature
private void lambda$0(io.vertx.ext.web.RoutingContext, boolean, java.lang.String, java.lang.String, io.vertx.core.AsyncResult);
descriptor: (Lio/vertx/ext/web/RoutingContext;ZLjava/lang/String;Ljava/lang/String;Lio/vertx/core/AsyncResult;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=8, locals=6, args_size=6
start local 0 start local 5 0: aload 5
invokeinterface io.vertx.core.AsyncResult.failed:()Z
ifeq 3
1: aload 1
aload 5
invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
invokeinterface io.vertx.ext.web.RoutingContext.fail:(Ljava/lang/Throwable;)V
2: return
3: StackMap locals:
StackMap stack:
aload 5
invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
checkcast java.lang.Boolean
invokevirtual java.lang.Boolean.booleanValue:()Z
ifne 8
4: iload 2
ifeq 6
5: aload 0
aload 3
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.removeCache:(Ljava/lang/String;)V
6: StackMap locals:
StackMap stack:
aload 1
invokeinterface io.vertx.ext.web.RoutingContext.next:()V
7: return
8: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 4
aload 0
iload 2
aload 3
aload 1
aload 4
invokedynamic handle(Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;ZLjava/lang/String;Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$1(ZLjava/lang/String;Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/AsyncResult;)V (7)
(Lio/vertx/core/AsyncResult;)V
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.getFileProps:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/Handler;)V
9: return
end local 5 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 10 5 exists Lio/vertx/core/AsyncResult<Ljava/lang/Boolean;>;
private static io.vertx.core.file.FileSystem lambda$2(io.vertx.core.file.FileSystem, java.lang.String, io.vertx.core.Handler);
descriptor: (Lio/vertx/core/file/FileSystem;Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/file/FileSystem;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
0: aload 0
aload 1
aload 2
invokeinterface io.vertx.core.file.FileSystem.exists:(Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/file/FileSystem;
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.Exception
private static io.vertx.core.file.FileSystem lambda$3(io.vertx.core.file.FileSystem, java.lang.String, io.vertx.core.Handler);
descriptor: (Lio/vertx/core/file/FileSystem;Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/file/FileSystem;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=3, args_size=3
0: aload 0
aload 1
aload 2
invokeinterface io.vertx.core.file.FileSystem.props:(Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/file/FileSystem;
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.Exception
private static io.vertx.core.file.FileProps lambda$4(io.vertx.core.file.FileSystem, java.lang.String);
descriptor: (Lio/vertx/core/file/FileSystem;Ljava/lang/String;)Lio/vertx/core/file/FileProps;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: aload 0
aload 1
invokeinterface io.vertx.core.file.FileSystem.propsBlocking:(Ljava/lang/String;)Lio/vertx/core/file/FileProps;
areturn
LocalVariableTable:
Start End Slot Name Signature
Exceptions:
throws java.lang.Exception
private io.vertx.core.http.HttpServerResponse lambda$5(java.lang.String, io.vertx.core.http.HttpServerRequest, long, long, io.vertx.ext.web.RoutingContext);
descriptor: (Ljava/lang/String;Lio/vertx/core/http/HttpServerRequest;JJLio/vertx/ext/web/RoutingContext;)Lio/vertx/core/http/HttpServerResponse;
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=7, locals=9, args_size=6
start local 0 0: aload 1
invokestatic io.vertx.core.http.impl.MimeMapping.getMimeTypeForFilename:(Ljava/lang/String;)Ljava/lang/String;
astore 8
start local 8 1: aload 8
ifnull 6
2: aload 8
ldc "text"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 5
3: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
ldc "Content-Type"
new java.lang.StringBuilder
dup
aload 8
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ";charset="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.defaultContentEncoding:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
4: goto 6
5: StackMap locals: java.lang.String
StackMap stack:
aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
ldc "Content-Type"
aload 8
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
6: StackMap locals:
StackMap stack:
aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
aload 1
lload 3
lload 5
aload 7
invokedynamic handle(Lio/vertx/ext/web/RoutingContext;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$6(Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/AsyncResult;)V (6)
(Lio/vertx/core/AsyncResult;)V
invokeinterface io.vertx.core.http.HttpServerResponse.sendFile:(Ljava/lang/String;JJLio/vertx/core/Handler;)Lio/vertx/core/http/HttpServerResponse;
areturn
end local 8 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
1 7 8 contentType Ljava/lang/String;
Exceptions:
throws java.lang.Exception
private io.vertx.core.http.HttpServerResponse lambda$7(java.lang.String, io.vertx.core.http.HttpServerRequest, io.vertx.ext.web.RoutingContext);
descriptor: (Ljava/lang/String;Lio/vertx/core/http/HttpServerRequest;Lio/vertx/ext/web/RoutingContext;)Lio/vertx/core/http/HttpServerResponse;
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=9, locals=11, args_size=4
start local 0 0: aload 0
aload 1
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.getFileExtension:(Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 1: aload 4
invokestatic io.vertx.core.http.impl.MimeMapping.getMimeTypeForExtension:(Ljava/lang/String;)Ljava/lang/String;
astore 5
start local 5 2: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.compressedMediaTypes:Ljava/util/Set;
aload 5
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifne 3
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.compressedFileSuffixes:Ljava/util/Set;
aload 4
invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
ifeq 4
3: StackMap locals: java.lang.String java.lang.String
StackMap stack:
aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
getstatic io.vertx.core.http.HttpHeaders.CONTENT_ENCODING:Ljava/lang/CharSequence;
getstatic io.vertx.core.http.HttpHeaders.IDENTITY:Ljava/lang/CharSequence;
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Lio/vertx/core/http/HttpServerResponse;
pop
4: StackMap locals:
StackMap stack:
aload 5
ifnull 9
5: aload 5
ldc "text"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 8
6: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
ldc "Content-Type"
new java.lang.StringBuilder
dup
aload 5
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ";charset="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.defaultContentEncoding:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
7: goto 9
8: StackMap locals:
StackMap stack:
aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
ldc "Content-Type"
aload 5
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
9: StackMap locals:
StackMap stack:
aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.version:()Lio/vertx/core/http/HttpVersion;
getstatic io.vertx.core.http.HttpVersion.HTTP_2:Lio/vertx/core/http/HttpVersion;
if_acmpne 18
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.http2PushMappings:Ljava/util/List;
ifnull 18
10: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.http2PushMappings:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 7
goto 16
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl java.lang.String io.vertx.core.http.HttpServerRequest io.vertx.ext.web.RoutingContext java.lang.String java.lang.String top java.util.Iterator
StackMap stack:
11: aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.vertx.ext.web.Http2PushMapping
astore 6
start local 6 12: aload 6
invokevirtual io.vertx.ext.web.Http2PushMapping.isNoPush:()Z
ifne 16
13: new java.lang.StringBuilder
dup
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.webRoot: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;
aload 6
invokevirtual io.vertx.ext.web.Http2PushMapping.getFilePath:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 8
start local 8 14: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
astore 9
start local 9 15: aload 0
aload 3
aload 8
aload 0
aload 2
aload 9
aload 6
aload 1
aload 5
invokedynamic handle(Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;Lio/vertx/core/http/HttpServerRequest;Lio/vertx/core/http/HttpServerResponse;Lio/vertx/ext/web/Http2PushMapping;Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$8(Lio/vertx/core/http/HttpServerRequest;Lio/vertx/core/http/HttpServerResponse;Lio/vertx/ext/web/Http2PushMapping;Ljava/lang/String;Ljava/lang/String;Lio/vertx/core/AsyncResult;)V (7)
(Lio/vertx/core/AsyncResult;)V
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.getFileProps:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/Handler;)V
end local 9 end local 8 end local 6 16: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 11
17: goto 27
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl java.lang.String io.vertx.core.http.HttpServerRequest io.vertx.ext.web.RoutingContext java.lang.String java.lang.String
StackMap stack:
18: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.http2PushMappings:Ljava/util/List;
ifnull 27
19: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
astore 6
start local 6 20: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 7
start local 7 21: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.http2PushMappings:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 9
goto 25
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl java.lang.String io.vertx.core.http.HttpServerRequest io.vertx.ext.web.RoutingContext java.lang.String java.lang.String io.vertx.core.http.HttpServerResponse java.util.List top java.util.Iterator
StackMap stack:
22: aload 9
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast io.vertx.ext.web.Http2PushMapping
astore 8
start local 8 23: new java.lang.StringBuilder
dup
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.webRoot: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;
aload 8
invokevirtual io.vertx.ext.web.Http2PushMapping.getFilePath:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 10
start local 10 24: aload 0
aload 3
aload 10
aload 0
aload 2
aload 7
aload 8
invokedynamic handle(Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;Lio/vertx/core/http/HttpServerRequest;Ljava/util/List;Lio/vertx/ext/web/Http2PushMapping;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$10(Lio/vertx/core/http/HttpServerRequest;Ljava/util/List;Lio/vertx/ext/web/Http2PushMapping;Lio/vertx/core/AsyncResult;)V (7)
(Lio/vertx/core/AsyncResult;)V
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.getFileProps:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/Handler;)V
end local 10 end local 8 25: StackMap locals:
StackMap stack:
aload 9
invokeinterface java.util.Iterator.hasNext:()Z
ifne 22
26: aload 6
ldc "Link"
aload 7
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/Iterable;)Lio/vertx/core/http/HttpServerResponse;
pop
end local 7 end local 6 27: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl java.lang.String io.vertx.core.http.HttpServerRequest io.vertx.ext.web.RoutingContext java.lang.String java.lang.String
StackMap stack:
aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
aload 1
aload 3
invokedynamic handle(Lio/vertx/ext/web/RoutingContext;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$11(Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/AsyncResult;)V (6)
(Lio/vertx/core/AsyncResult;)V
invokeinterface io.vertx.core.http.HttpServerResponse.sendFile:(Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/http/HttpServerResponse;
areturn
end local 5 end local 4 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
1 28 4 extension Ljava/lang/String;
2 28 5 contentType Ljava/lang/String;
12 16 6 dependency Lio/vertx/ext/web/Http2PushMapping;
14 16 8 dep Ljava/lang/String;
15 16 9 response Lio/vertx/core/http/HttpServerResponse;
20 27 6 response Lio/vertx/core/http/HttpServerResponse;
21 27 7 links Ljava/util/List<Ljava/lang/String;>;
23 25 8 dependency Lio/vertx/ext/web/Http2PushMapping;
24 25 10 dep Ljava/lang/String;
Exceptions:
throws java.lang.Exception
private void lambda$12(io.vertx.ext.web.RoutingContext, io.vertx.core.http.HttpServerRequest, io.vertx.core.AsyncResult);
descriptor: (Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/http/HttpServerRequest;Lio/vertx/core/AsyncResult;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=5, locals=11, args_size=4
start local 0 start local 3 0: aload 3
invokeinterface io.vertx.core.AsyncResult.failed:()Z
ifeq 3
1: aload 1
aload 3
invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
invokeinterface io.vertx.ext.web.RoutingContext.fail:(Ljava/lang/Throwable;)V
2: goto 67
3: StackMap locals:
StackMap stack:
aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.headers:()Lio/vertx/core/MultiMap;
ldc "accept"
invokeinterface io.vertx.core.MultiMap.get:(Ljava/lang/String;)Ljava/lang/String;
astore 4
start local 4 4: aload 4
ifnonnull 6
5: ldc "text/plain"
astore 4
6: StackMap locals: java.lang.String
StackMap stack:
aload 4
ldc "html"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 44
7: aload 1
invokeinterface io.vertx.ext.web.RoutingContext.normalisedPath:()Ljava/lang/String;
astore 5
start local 5 8: aload 5
ldc "/"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifne 10
9: new java.lang.StringBuilder
dup
aload 5
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 5
10: StackMap locals: java.lang.String
StackMap stack:
new java.lang.StringBuilder
dup
ldc "<ul id=\"files\">"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
astore 7
start local 7 11: aload 3
invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
checkcast java.util.List
astore 8
start local 8 12: aload 8
invokestatic java.util.Collections.sort:(Ljava/util/List;)V
13: aload 8
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 26
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String java.lang.String top java.lang.StringBuilder java.util.List top java.util.Iterator
StackMap stack:
14: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 9
start local 9 15: aload 9
aload 9
getstatic java.io.File.separatorChar:C
invokevirtual java.lang.String.lastIndexOf:(I)I
iconst_1
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 6
start local 6 16: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.includeHidden:Z
ifne 18
aload 6
iconst_0
invokevirtual java.lang.String.charAt:(I)C
bipush 46
if_icmpne 18
17: goto 26
18: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String java.lang.String java.lang.String java.lang.StringBuilder java.util.List java.lang.String java.util.Iterator
StackMap stack:
aload 7
ldc "<li><a href=\""
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
19: aload 7
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
20: aload 7
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
21: aload 7
ldc "\" title=\""
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
22: aload 7
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
23: aload 7
ldc "\">"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
24: aload 7
aload 6
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
25: aload 7
ldc "</a></li>"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 9 end local 6 26: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String java.lang.String top java.lang.StringBuilder java.util.List top java.util.Iterator
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
27: aload 7
ldc "</ul>"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
28: iconst_0
istore 9
start local 9 29: aload 5
invokevirtual java.lang.String.length:()I
iconst_2
isub
istore 10
start local 10 30: goto 35
31: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String java.lang.String top java.lang.StringBuilder java.util.List int int
StackMap stack:
aload 5
iload 10
invokevirtual java.lang.String.charAt:(I)C
bipush 47
if_icmpne 34
32: iload 10
istore 9
33: goto 36
34: StackMap locals:
StackMap stack:
iinc 10 -1
StackMap locals:
StackMap stack:
35: iload 10
ifgt 31
end local 10 36: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "<a href=\""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 5
iconst_0
iload 9
iconst_1
iadd
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "\">..</a>"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 10
start local 10 37: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
ldc "content-type"
ldc "text/html"
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
38: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
39: aload 0
aload 1
invokeinterface io.vertx.ext.web.RoutingContext.vertx:()Lio/vertx/core/Vertx;
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.directoryTemplate:(Lio/vertx/core/Vertx;)Ljava/lang/String;
ldc "{directory}"
aload 5
invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
40: ldc "{parent}"
aload 10
invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
41: ldc "{files}"
aload 7
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
42: invokeinterface io.vertx.core.http.HttpServerResponse.end:(Ljava/lang/String;)V
end local 10 end local 9 end local 8 end local 7 end local 5 43: goto 67
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String
StackMap stack:
44: aload 4
ldc "json"
invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
ifeq 56
45: new io.vertx.core.json.JsonArray
dup
invokespecial io.vertx.core.json.JsonArray.<init>:()V
astore 6
start local 6 46: aload 3
invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
checkcast java.util.List
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 52
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String top io.vertx.core.json.JsonArray top java.util.Iterator
StackMap stack:
47: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 7
start local 7 48: aload 7
aload 7
getstatic java.io.File.separatorChar:C
invokevirtual java.lang.String.lastIndexOf:(I)I
iconst_1
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 5
start local 5 49: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.includeHidden:Z
ifne 51
aload 5
iconst_0
invokevirtual java.lang.String.charAt:(I)C
bipush 46
if_icmpne 51
50: goto 52
51: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String java.lang.String io.vertx.core.json.JsonArray java.lang.String java.util.Iterator
StackMap stack:
aload 6
aload 5
invokevirtual io.vertx.core.json.JsonArray.add:(Ljava/lang/String;)Lio/vertx/core/json/JsonArray;
pop
end local 7 end local 5 52: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String top io.vertx.core.json.JsonArray top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 47
53: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
ldc "content-type"
ldc "application/json"
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
54: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
aload 6
invokevirtual io.vertx.core.json.JsonArray.encode:()Ljava/lang/String;
invokeinterface io.vertx.core.http.HttpServerResponse.end:(Ljava/lang/String;)V
end local 6 55: goto 67
56: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String
StackMap stack:
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 6
start local 6 57: aload 3
invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
checkcast java.util.List
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 64
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String top java.lang.StringBuilder top java.util.Iterator
StackMap stack:
58: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 7
start local 7 59: aload 7
aload 7
getstatic java.io.File.separatorChar:C
invokevirtual java.lang.String.lastIndexOf:(I)I
iconst_1
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
astore 5
start local 5 60: aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.includeHidden:Z
ifne 62
aload 5
iconst_0
invokevirtual java.lang.String.charAt:(I)C
bipush 46
if_icmpne 62
61: goto 64
62: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String java.lang.String java.lang.StringBuilder java.lang.String java.util.Iterator
StackMap stack:
aload 6
aload 5
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
63: aload 6
bipush 10
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
end local 7 end local 5 64: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult java.lang.String top java.lang.StringBuilder top java.util.Iterator
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 58
65: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
ldc "content-type"
ldc "text/plain"
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
66: aload 2
invokeinterface io.vertx.core.http.HttpServerRequest.response:()Lio/vertx/core/http/HttpServerResponse;
aload 6
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface io.vertx.core.http.HttpServerResponse.end:(Ljava/lang/String;)V
end local 6 end local 4 67: StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.ext.web.RoutingContext io.vertx.core.http.HttpServerRequest io.vertx.core.AsyncResult
StackMap stack:
return
end local 3 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 68 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 68 3 asyncResult Lio/vertx/core/AsyncResult<Ljava/util/List<Ljava/lang/String;>;>;
4 67 4 accept Ljava/lang/String;
8 43 5 normalizedDir Ljava/lang/String;
16 26 6 file Ljava/lang/String;
11 43 7 files Ljava/lang/StringBuilder;
12 43 8 list Ljava/util/List<Ljava/lang/String;>;
15 26 9 s Ljava/lang/String;
29 43 9 slashPos I
30 36 10 i I
37 43 10 parent Ljava/lang/String;
49 52 5 file Ljava/lang/String;
46 55 6 json Lio/vertx/core/json/JsonArray;
48 52 7 s Ljava/lang/String;
60 64 5 file Ljava/lang/String;
57 67 6 buffer Ljava/lang/StringBuilder;
59 64 7 s Ljava/lang/String;
private void lambda$1(boolean, java.lang.String, io.vertx.ext.web.RoutingContext, java.lang.String, io.vertx.core.AsyncResult);
descriptor: (ZLjava/lang/String;Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/AsyncResult;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=6, locals=8, args_size=6
start local 0 start local 5 0: aload 5
invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
ifeq 20
1: aload 5
invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
checkcast io.vertx.core.file.FileProps
astore 6
start local 6 2: aload 6
ifnonnull 7
3: iload 1
ifeq 5
4: aload 0
aload 2
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.removeCache:(Ljava/lang/String;)V
5: StackMap locals: io.vertx.core.file.FileProps
StackMap stack:
aload 3
invokeinterface io.vertx.ext.web.RoutingContext.next:()V
6: goto 21
StackMap locals:
StackMap stack:
7: aload 6
invokeinterface io.vertx.core.file.FileProps.isDirectory:()Z
ifeq 12
8: iload 1
ifeq 10
9: aload 0
aload 2
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.removeCache:(Ljava/lang/String;)V
10: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 2
aload 4
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendDirectory:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Ljava/lang/String;)V
11: goto 21
12: StackMap locals:
StackMap stack:
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.cachingEnabled:Z
ifeq 18
13: new io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry
dup
aload 0
aload 6
invokestatic java.lang.System.currentTimeMillis:()J
invokespecial io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry.<init>:(Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;Lio/vertx/core/file/FileProps;J)V
astore 7
start local 7 14: aload 0
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.propsCache:()Ljava/util/Map;
aload 2
aload 7
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
15: aload 7
aload 3
invokeinterface io.vertx.ext.web.RoutingContext.request:()Lio/vertx/core/http/HttpServerRequest;
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry.shouldUseCached:(Lio/vertx/core/http/HttpServerRequest;)Z
ifeq 18
16: aload 3
invokeinterface io.vertx.ext.web.RoutingContext.response:()Lio/vertx/core/http/HttpServerResponse;
getstatic io.netty.handler.codec.http.HttpResponseStatus.NOT_MODIFIED:Lio/netty/handler/codec/http/HttpResponseStatus;
invokevirtual io.netty.handler.codec.http.HttpResponseStatus.code:()I
invokeinterface io.vertx.core.http.HttpServerResponse.setStatusCode:(I)Lio/vertx/core/http/HttpServerResponse;
invokeinterface io.vertx.core.http.HttpServerResponse.end:()V
17: return
end local 7 18: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 4
aload 6
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.sendFile:(Lio/vertx/ext/web/RoutingContext;Ljava/lang/String;Lio/vertx/core/file/FileProps;)V
end local 6 19: goto 21
20: StackMap locals:
StackMap stack:
aload 3
aload 5
invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
invokeinterface io.vertx.ext.web.RoutingContext.fail:(Ljava/lang/Throwable;)V
21: StackMap locals:
StackMap stack:
return
end local 5 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 22 5 res Lio/vertx/core/AsyncResult<Lio/vertx/core/file/FileProps;>;
2 19 6 fprops Lio/vertx/core/file/FileProps;
14 18 7 now Lio/vertx/ext/web/handler/impl/StaticHandlerImpl$CacheEntry;
private static void lambda$6(io.vertx.ext.web.RoutingContext, io.vertx.core.AsyncResult);
descriptor: (Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/AsyncResult;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
start local 1 0: aload 1
invokeinterface io.vertx.core.AsyncResult.failed:()Z
ifeq 2
1: aload 0
aload 1
invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
invokeinterface io.vertx.ext.web.RoutingContext.fail:(Ljava/lang/Throwable;)V
2: StackMap locals:
StackMap stack:
return
end local 1 LocalVariableTable:
Start End Slot Name Signature
0 3 1 res2 Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;
private void lambda$8(io.vertx.core.http.HttpServerRequest, io.vertx.core.http.HttpServerResponse, io.vertx.ext.web.Http2PushMapping, java.lang.String, java.lang.String, io.vertx.core.AsyncResult);
descriptor: (Lio/vertx/core/http/HttpServerRequest;Lio/vertx/core/http/HttpServerResponse;Lio/vertx/ext/web/Http2PushMapping;Ljava/lang/String;Ljava/lang/String;Lio/vertx/core/AsyncResult;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=7, locals=7, args_size=7
start local 0 start local 6 0: aload 6
invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
ifeq 3
1: aload 0
aload 1
aload 6
invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
checkcast io.vertx.core.file.FileProps
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.writeCacheHeaders:(Lio/vertx/core/http/HttpServerRequest;Lio/vertx/core/file/FileProps;)V
2: aload 2
getstatic io.vertx.core.http.HttpMethod.GET:Lio/vertx/core/http/HttpMethod;
new java.lang.StringBuilder
dup
ldc "/"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual io.vertx.ext.web.Http2PushMapping.getFilePath:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 0
aload 4
aload 5
aload 3
invokedynamic handle(Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;Ljava/lang/String;Ljava/lang/String;Lio/vertx/ext/web/Http2PushMapping;)Lio/vertx/core/Handler;
Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
Method arguments:
(Ljava/lang/Object;)V
io/vertx/ext/web/handler/impl/StaticHandlerImpl.lambda$9(Ljava/lang/String;Ljava/lang/String;Lio/vertx/ext/web/Http2PushMapping;Lio/vertx/core/AsyncResult;)V (7)
(Lio/vertx/core/AsyncResult;)V
invokeinterface io.vertx.core.http.HttpServerResponse.push:(Lio/vertx/core/http/HttpMethod;Ljava/lang/String;Lio/vertx/core/Handler;)Lio/vertx/core/http/HttpServerResponse;
pop
3: StackMap locals:
StackMap stack:
return
end local 6 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 4 6 filePropsAsyncResult Lio/vertx/core/AsyncResult<Lio/vertx/core/file/FileProps;>;
private void lambda$10(io.vertx.core.http.HttpServerRequest, java.util.List, io.vertx.ext.web.Http2PushMapping, io.vertx.core.AsyncResult);
descriptor: (Lio/vertx/core/http/HttpServerRequest;Ljava/util/List;Lio/vertx/ext/web/Http2PushMapping;Lio/vertx/core/AsyncResult;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=4, locals=5, args_size=5
start local 0 start local 4 0: aload 4
invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
ifeq 7
1: aload 0
aload 1
aload 4
invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
checkcast io.vertx.core.file.FileProps
invokevirtual io.vertx.ext.web.handler.impl.StaticHandlerImpl.writeCacheHeaders:(Lio/vertx/core/http/HttpServerRequest;Lio/vertx/core/file/FileProps;)V
2: aload 2
new java.lang.StringBuilder
dup
ldc "<"
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual io.vertx.ext.web.Http2PushMapping.getFilePath:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ">; rel=preload; as="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
3: aload 3
invokevirtual io.vertx.ext.web.Http2PushMapping.getExtensionTarget:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 3
invokevirtual io.vertx.ext.web.Http2PushMapping.isNoPush:()Z
ifeq 4
ldc "; nopush"
goto 5
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.core.http.HttpServerRequest java.util.List io.vertx.ext.web.Http2PushMapping io.vertx.core.AsyncResult
StackMap stack: java.util.List java.lang.StringBuilder
4: ldc ""
StackMap locals: io.vertx.ext.web.handler.impl.StaticHandlerImpl io.vertx.core.http.HttpServerRequest java.util.List io.vertx.ext.web.Http2PushMapping io.vertx.core.AsyncResult
StackMap stack: java.util.List java.lang.StringBuilder java.lang.String
5: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
7: StackMap locals:
StackMap stack:
return
end local 4 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 8 4 filePropsAsyncResult Lio/vertx/core/AsyncResult<Lio/vertx/core/file/FileProps;>;
private static void lambda$11(io.vertx.ext.web.RoutingContext, io.vertx.core.AsyncResult);
descriptor: (Lio/vertx/ext/web/RoutingContext;Lio/vertx/core/AsyncResult;)V
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
start local 1 0: aload 1
invokeinterface io.vertx.core.AsyncResult.failed:()Z
ifeq 2
1: aload 0
aload 1
invokeinterface io.vertx.core.AsyncResult.cause:()Ljava/lang/Throwable;
invokeinterface io.vertx.ext.web.RoutingContext.fail:(Ljava/lang/Throwable;)V
2: StackMap locals:
StackMap stack:
return
end local 1 LocalVariableTable:
Start End Slot Name Signature
0 3 1 res2 Lio/vertx/core/AsyncResult<Ljava/lang/Void;>;
private void lambda$9(java.lang.String, java.lang.String, io.vertx.ext.web.Http2PushMapping, io.vertx.core.AsyncResult);
descriptor: (Ljava/lang/String;Ljava/lang/String;Lio/vertx/ext/web/Http2PushMapping;Lio/vertx/core/AsyncResult;)V
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=5, locals=7, args_size=5
start local 0 start local 4 0: aload 4
invokeinterface io.vertx.core.AsyncResult.succeeded:()Z
ifeq 9
1: aload 4
invokeinterface io.vertx.core.AsyncResult.result:()Ljava/lang/Object;
checkcast io.vertx.core.http.HttpServerResponse
astore 5
start local 5 2: aload 1
invokestatic io.vertx.core.http.impl.MimeMapping.getMimeTypeForExtension:(Ljava/lang/String;)Ljava/lang/String;
astore 6
start local 6 3: aload 6
ifnull 8
4: aload 6
ldc "text"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 7
5: aload 5
ldc "Content-Type"
new java.lang.StringBuilder
dup
aload 2
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc ";charset="
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.defaultContentEncoding:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
6: goto 8
7: StackMap locals: io.vertx.core.http.HttpServerResponse java.lang.String
StackMap stack:
aload 5
ldc "Content-Type"
aload 2
invokeinterface io.vertx.core.http.HttpServerResponse.putHeader:(Ljava/lang/String;Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
8: StackMap locals:
StackMap stack:
aload 5
new java.lang.StringBuilder
dup
aload 0
getfield io.vertx.ext.web.handler.impl.StaticHandlerImpl.webRoot: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;
aload 3
invokevirtual io.vertx.ext.web.Http2PushMapping.getFilePath:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokeinterface io.vertx.core.http.HttpServerResponse.sendFile:(Ljava/lang/String;)Lio/vertx/core/http/HttpServerResponse;
pop
end local 6 end local 5 9: StackMap locals:
StackMap stack:
return
end local 4 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lio/vertx/ext/web/handler/impl/StaticHandlerImpl;
0 10 4 pushAsyncResult Lio/vertx/core/AsyncResult<Lio/vertx/core/http/HttpServerResponse;>;
2 9 5 res Lio/vertx/core/http/HttpServerResponse;
3 9 6 depContentType Ljava/lang/String;
}
SourceFile: "StaticHandlerImpl.java"
NestMembers:
io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry
InnerClasses:
private final CacheEntry = io.vertx.ext.web.handler.impl.StaticHandlerImpl$CacheEntry of io.vertx.ext.web.handler.impl.StaticHandlerImpl
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles