public class com.netflix.concurrency.limits.servlet.ConcurrencyLimitServletFilter implements javax.servlet.Filter
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: com.netflix.concurrency.limits.servlet.ConcurrencyLimitServletFilter
super_class: java.lang.Object
{
private static final int STATUS_TOO_MANY_REQUESTS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 429
private final com.netflix.concurrency.limits.Limiter<javax.servlet.http.HttpServletRequest> limiter;
descriptor: Lcom/netflix/concurrency/limits/Limiter;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Lcom/netflix/concurrency/limits/Limiter<Ljavax/servlet/http/HttpServletRequest;>;
public void <init>(com.netflix.concurrency.limits.Limiter<javax.servlet.http.HttpServletRequest>);
descriptor: (Lcom/netflix/concurrency/limits/Limiter;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield com.netflix.concurrency.limits.servlet.ConcurrencyLimitServletFilter.limiter:Lcom/netflix/concurrency/limits/Limiter;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/netflix/concurrency/limits/servlet/ConcurrencyLimitServletFilter;
0 3 1 limiter Lcom/netflix/concurrency/limits/Limiter<Ljavax/servlet/http/HttpServletRequest;>;
Signature: (Lcom/netflix/concurrency/limits/Limiter<Ljavax/servlet/http/HttpServletRequest;>;)V
MethodParameters:
Name Flags
limiter
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 Lcom/netflix/concurrency/limits/servlet/ConcurrencyLimitServletFilter;
0 1 1 filterConfig Ljavax/servlet/FilterConfig;
Exceptions:
throws javax.servlet.ServletException
MethodParameters:
Name Flags
filterConfig
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=3, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield com.netflix.concurrency.limits.servlet.ConcurrencyLimitServletFilter.limiter:Lcom/netflix/concurrency/limits/Limiter;
aload 1
checkcast javax.servlet.http.HttpServletRequest
invokeinterface com.netflix.concurrency.limits.Limiter.acquire:(Ljava/lang/Object;)Ljava/util/Optional;
astore 4
start local 4 1: aload 4
invokevirtual java.util.Optional.isPresent:()Z
ifeq 8
2: aload 3
aload 1
aload 2
invokeinterface javax.servlet.FilterChain.doFilter:(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V
3: aload 4
invokevirtual java.util.Optional.get:()Ljava/lang/Object;
checkcast com.netflix.concurrency.limits.Limiter$Listener
invokeinterface com.netflix.concurrency.limits.Limiter$Listener.onSuccess:()V
4: goto 9
StackMap locals: com.netflix.concurrency.limits.servlet.ConcurrencyLimitServletFilter javax.servlet.ServletRequest javax.servlet.ServletResponse javax.servlet.FilterChain java.util.Optional
StackMap stack: java.lang.Exception
5: astore 5
start local 5 6: aload 4
invokevirtual java.util.Optional.get:()Ljava/lang/Object;
checkcast com.netflix.concurrency.limits.Limiter$Listener
invokeinterface com.netflix.concurrency.limits.Limiter$Listener.onIgnore:()V
7: aload 5
athrow
end local 5 8: StackMap locals:
StackMap stack:
aload 0
aload 2
checkcast javax.servlet.http.HttpServletResponse
invokevirtual com.netflix.concurrency.limits.servlet.ConcurrencyLimitServletFilter.outputThrottleError:(Ljavax/servlet/http/HttpServletResponse;)V
9: 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 10 0 this Lcom/netflix/concurrency/limits/servlet/ConcurrencyLimitServletFilter;
0 10 1 request Ljavax/servlet/ServletRequest;
0 10 2 response Ljavax/servlet/ServletResponse;
0 10 3 chain Ljavax/servlet/FilterChain;
1 10 4 listener Ljava/util/Optional<Lcom/netflix/concurrency/limits/Limiter$Listener;>;
6 8 5 e Ljava/lang/Exception;
Exception table:
from to target type
2 4 5 Class java.lang.Exception
Exceptions:
throws java.io.IOException, javax.servlet.ServletException
MethodParameters:
Name Flags
request
response
chain
protected void outputThrottleError(javax.servlet.http.HttpServletResponse);
descriptor: (Ljavax/servlet/http/HttpServletResponse;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 1
sipush 429
invokeinterface javax.servlet.http.HttpServletResponse.setStatus:(I)V
1: aload 1
invokeinterface javax.servlet.http.HttpServletResponse.getWriter:()Ljava/io/PrintWriter;
ldc "Concurrency limit exceeded"
invokevirtual java.io.PrintWriter.print:(Ljava/lang/String;)V
2: goto 4
StackMap locals:
StackMap stack: java.io.IOException
3: pop
4: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/netflix/concurrency/limits/servlet/ConcurrencyLimitServletFilter;
0 5 1 response Ljavax/servlet/http/HttpServletResponse;
Exception table:
from to target type
0 2 3 Class java.io.IOException
MethodParameters:
Name Flags
response
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 Lcom/netflix/concurrency/limits/servlet/ConcurrencyLimitServletFilter;
}
SourceFile: "ConcurrencyLimitServletFilter.java"
InnerClasses:
public abstract Listener = com.netflix.concurrency.limits.Limiter$Listener of com.netflix.concurrency.limits.Limiter