public class io.dropwizard.servlets.SlowRequestFilter implements javax.servlet.Filter
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: io.dropwizard.servlets.SlowRequestFilter
super_class: java.lang.Object
{
private final long threshold;
descriptor: J
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.util.function.Supplier<java.lang.Long> currentTimeProvider;
descriptor: Ljava/util/function/Supplier;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/function/Supplier<Ljava/lang/Long;>;
private org.slf4j.Logger logger;
descriptor: Lorg/slf4j/Logger;
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
lconst_1
invokestatic io.dropwizard.util.Duration.seconds:(J)Lio/dropwizard/util/Duration;
invokespecial io.dropwizard.servlets.SlowRequestFilter.<init>:(Lio/dropwizard/util/Duration;)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/dropwizard/servlets/SlowRequestFilter;
public void <init>(io.dropwizard.util.Duration);
descriptor: (Lio/dropwizard/util/Duration;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
invokedynamic get()Ljava/util/function/Supplier;
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;
java/lang/System.nanoTime()J (6)
()Ljava/lang/Long;
putfield io.dropwizard.servlets.SlowRequestFilter.currentTimeProvider:Ljava/util/function/Supplier;
2: aload 0
ldc Lio/dropwizard/servlets/SlowRequestFilter;
invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
putfield io.dropwizard.servlets.SlowRequestFilter.logger:Lorg/slf4j/Logger;
3: aload 0
aload 1
invokevirtual io.dropwizard.util.Duration.toNanoseconds:()J
putfield io.dropwizard.servlets.SlowRequestFilter.threshold:J
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lio/dropwizard/servlets/SlowRequestFilter;
0 5 1 threshold Lio/dropwizard/util/Duration;
MethodParameters:
Name Flags
threshold
void setCurrentTimeProvider(java.util.function.Supplier<java.lang.Long>);
descriptor: (Ljava/util/function/Supplier;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield io.dropwizard.servlets.SlowRequestFilter.currentTimeProvider:Ljava/util/function/Supplier;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/dropwizard/servlets/SlowRequestFilter;
0 2 1 currentTimeProvider Ljava/util/function/Supplier<Ljava/lang/Long;>;
Signature: (Ljava/util/function/Supplier<Ljava/lang/Long;>;)V
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
MethodParameters:
Name Flags
currentTimeProvider
void setLogger(org.slf4j.Logger);
descriptor: (Lorg/slf4j/Logger;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield io.dropwizard.servlets.SlowRequestFilter.logger:Lorg/slf4j/Logger;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lio/dropwizard/servlets/SlowRequestFilter;
0 2 1 logger Lorg/slf4j/Logger;
RuntimeInvisibleAnnotations:
com.google.common.annotations.VisibleForTesting()
MethodParameters:
Name Flags
logger
public void init(javax.servlet.FilterConfig);
descriptor: (Ljavax/servlet/FilterConfig;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=0, locals=2, args_size=2
start local 0 start local 1 0: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/dropwizard/servlets/SlowRequestFilter;
0 1 1 filterConfig Ljavax/servlet/FilterConfig;
Exceptions:
throws javax.servlet.ServletException
MethodParameters:
Name Flags
filterConfig
public void destroy();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=0, locals=1, args_size=1
start local 0 0: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lio/dropwizard/servlets/SlowRequestFilter;
public void doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain);
descriptor: (Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=12, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
checkcast javax.servlet.http.HttpServletRequest
astore 4
start local 4 1: aload 0
getfield io.dropwizard.servlets.SlowRequestFilter.currentTimeProvider:Ljava/util/function/Supplier;
invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
checkcast java.lang.Long
invokevirtual java.lang.Long.longValue:()J
lstore 5
start local 5 2: aload 3
aload 1
aload 2
invokeinterface javax.servlet.FilterChain.doFilter:(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V
3: goto 13
StackMap locals: io.dropwizard.servlets.SlowRequestFilter javax.servlet.ServletRequest javax.servlet.ServletResponse javax.servlet.FilterChain javax.servlet.http.HttpServletRequest long
StackMap stack: java.lang.Throwable
4: astore 7
5: aload 0
getfield io.dropwizard.servlets.SlowRequestFilter.currentTimeProvider:Ljava/util/function/Supplier;
invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
checkcast java.lang.Long
invokevirtual java.lang.Long.longValue:()J
lload 5
lsub
lstore 8
start local 8 6: getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
lload 8
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
lstore 10
start local 10 7: lload 8
aload 0
getfield io.dropwizard.servlets.SlowRequestFilter.threshold:J
lcmp
iflt 12
8: aload 0
getfield io.dropwizard.servlets.SlowRequestFilter.logger:Lorg/slf4j/Logger;
ldc "Slow request: {} {} ({}ms)"
iconst_3
anewarray java.lang.Object
dup
iconst_0
9: aload 4
invokeinterface javax.servlet.http.HttpServletRequest.getMethod:()Ljava/lang/String;
aastore
dup
iconst_1
10: aload 4
invokestatic io.dropwizard.servlets.Servlets.getFullUrl:(Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String;
aastore
dup
iconst_2
lload 10
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
11: invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 10 end local 8 12: StackMap locals: java.lang.Throwable
StackMap stack:
aload 7
athrow
13: StackMap locals:
StackMap stack:
aload 0
getfield io.dropwizard.servlets.SlowRequestFilter.currentTimeProvider:Ljava/util/function/Supplier;
invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
checkcast java.lang.Long
invokevirtual java.lang.Long.longValue:()J
lload 5
lsub
lstore 8
start local 8 14: getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
lload 8
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
lstore 10
start local 10 15: lload 8
aload 0
getfield io.dropwizard.servlets.SlowRequestFilter.threshold:J
lcmp
iflt 20
16: aload 0
getfield io.dropwizard.servlets.SlowRequestFilter.logger:Lorg/slf4j/Logger;
ldc "Slow request: {} {} ({}ms)"
iconst_3
anewarray java.lang.Object
dup
iconst_0
17: aload 4
invokeinterface javax.servlet.http.HttpServletRequest.getMethod:()Ljava/lang/String;
aastore
dup
iconst_1
18: aload 4
invokestatic io.dropwizard.servlets.Servlets.getFullUrl:(Ljavax/servlet/http/HttpServletRequest;)Ljava/lang/String;
aastore
dup
iconst_2
lload 10
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
aastore
19: invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 10 end local 8 20: StackMap locals:
StackMap stack:
return
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 21 0 this Lio/dropwizard/servlets/SlowRequestFilter;
0 21 1 request Ljavax/servlet/ServletRequest;
0 21 2 response Ljavax/servlet/ServletResponse;
0 21 3 chain Ljavax/servlet/FilterChain;
1 21 4 req Ljavax/servlet/http/HttpServletRequest;
2 21 5 startTime J
6 12 8 elapsedNS J
14 20 8 elapsedNS J
7 12 10 elapsedMS J
15 20 10 elapsedMS J
Exception table:
from to target type
2 4 4 any
Exceptions:
throws java.io.IOException, javax.servlet.ServletException
MethodParameters:
Name Flags
request
response
chain
}
SourceFile: "SlowRequestFilter.java"
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles