public class org.apache.catalina.valves.JsonErrorReportValve extends org.apache.catalina.valves.ErrorReportValve
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.catalina.valves.JsonErrorReportValve
super_class: org.apache.catalina.valves.ErrorReportValve
{
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // org.apache.catalina.valves.JsonErrorReportValve this
0: .line 39
aload 0 /* this */
invokespecial org.apache.catalina.valves.ErrorReportValve.<init>:()V
1: .line 40
return
end local 0 // org.apache.catalina.valves.JsonErrorReportValve this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/catalina/valves/JsonErrorReportValve;
protected void report(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response, java.lang.Throwable);
descriptor: (Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;Ljava/lang/Throwable;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=12, args_size=4
start local 0 // org.apache.catalina.valves.JsonErrorReportValve this
start local 1 // org.apache.catalina.connector.Request request
start local 2 // org.apache.catalina.connector.Response response
start local 3 // java.lang.Throwable throwable
0: .line 45
aload 2 /* response */
invokevirtual org.apache.catalina.connector.Response.getStatus:()I
istore 4 /* statusCode */
start local 4 // int statusCode
1: .line 51
iload 4 /* statusCode */
sipush 400
if_icmplt 2
aload 2 /* response */
invokevirtual org.apache.catalina.connector.Response.getContentWritten:()J
lconst_0
lcmp
ifgt 2
aload 2 /* response */
invokevirtual org.apache.catalina.connector.Response.setErrorReported:()Z
ifne 3
2: .line 52
StackMap locals: int
StackMap stack:
return
3: .line 57
StackMap locals:
StackMap stack:
new java.util.concurrent.atomic.AtomicBoolean
dup
iconst_0
invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
astore 5 /* result */
start local 5 // java.util.concurrent.atomic.AtomicBoolean result
4: .line 58
aload 2 /* response */
invokevirtual org.apache.catalina.connector.Response.getCoyoteResponse:()Lorg/apache/coyote/Response;
getstatic org.apache.coyote.ActionCode.IS_IO_ALLOWED:Lorg/apache/coyote/ActionCode;
aload 5 /* result */
invokevirtual org.apache.coyote.Response.action:(Lorg/apache/coyote/ActionCode;Ljava/lang/Object;)V
5: .line 59
aload 5 /* result */
invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
ifne 7
6: .line 60
return
7: .line 63
StackMap locals: java.util.concurrent.atomic.AtomicBoolean
StackMap stack:
ldc "org.apache.catalina.valves"
aload 1 /* request */
invokevirtual org.apache.catalina.connector.Request.getLocales:()Ljava/util/Enumeration;
invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/String;Ljava/util/Enumeration;)Lorg/apache/tomcat/util/res/StringManager;
astore 6 /* smClient */
start local 6 // org.apache.tomcat.util.res.StringManager smClient
8: .line 64
aload 2 /* response */
aload 6 /* smClient */
invokevirtual org.apache.tomcat.util.res.StringManager.getLocale:()Ljava/util/Locale;
invokevirtual org.apache.catalina.connector.Response.setLocale:(Ljava/util/Locale;)V
9: .line 65
aconst_null
astore 7 /* type */
start local 7 // java.lang.String type
10: .line 66
aload 3 /* throwable */
ifnull 13
11: .line 67
aload 6 /* smClient */
ldc "errorReportValve.exceptionReport"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
astore 7 /* type */
12: .line 68
goto 14
13: .line 69
StackMap locals: org.apache.tomcat.util.res.StringManager java.lang.String
StackMap stack:
aload 6 /* smClient */
ldc "errorReportValve.statusReport"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
astore 7 /* type */
14: .line 71
StackMap locals:
StackMap stack:
aload 2 /* response */
invokevirtual org.apache.catalina.connector.Response.getMessage:()Ljava/lang/String;
astore 8 /* message */
start local 8 // java.lang.String message
15: .line 72
aload 8 /* message */
ifnonnull 17
aload 3 /* throwable */
ifnull 17
16: .line 73
aload 3 /* throwable */
invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
astore 8 /* message */
17: .line 75
StackMap locals: java.lang.String
StackMap stack:
aconst_null
astore 9 /* description */
start local 9 // java.lang.String description
18: .line 76
aload 6 /* smClient */
new java.lang.StringBuilder
dup
ldc "http."
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 4 /* statusCode */
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ".desc"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
astore 9 /* description */
19: .line 77
aload 9 /* description */
ifnonnull 23
20: .line 78
aload 8 /* message */
ifnull 21
aload 8 /* message */
invokevirtual java.lang.String.isEmpty:()Z
ifeq 22
21: .line 79
StackMap locals: java.lang.String
StackMap stack:
return
22: .line 81
StackMap locals:
StackMap stack:
aload 6 /* smClient */
ldc "errorReportValve.noDescription"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
astore 9 /* description */
23: .line 84
StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
ldc "{\n \"type\": \""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
24: .line 85
aload 7 /* type */
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "\",\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
25: .line 86
ldc " \"message\": \""
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 8 /* message */
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "\"\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
26: .line 87
ldc " \"description\": \""
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 9 /* description */
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "\"\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
27: .line 88
ldc "}"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
28: .line 84
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 10 /* jsonReport */
start local 10 // java.lang.String jsonReport
29: .line 91
aload 2 /* response */
ldc "application/json"
invokevirtual org.apache.catalina.connector.Response.setContentType:(Ljava/lang/String;)V
30: .line 92
aload 2 /* response */
ldc "utf-8"
invokevirtual org.apache.catalina.connector.Response.setCharacterEncoding:(Ljava/lang/String;)V
31: .line 93
goto 36
StackMap locals: org.apache.catalina.valves.JsonErrorReportValve org.apache.catalina.connector.Request org.apache.catalina.connector.Response java.lang.Throwable int java.util.concurrent.atomic.AtomicBoolean org.apache.tomcat.util.res.StringManager java.lang.String java.lang.String java.lang.String java.lang.String
StackMap stack: java.lang.Throwable
32: astore 11 /* t */
start local 11 // java.lang.Throwable t
33: .line 94
aload 11 /* t */
invokestatic org.apache.tomcat.util.ExceptionUtils.handleThrowable:(Ljava/lang/Throwable;)V
34: .line 95
aload 0 /* this */
getfield org.apache.catalina.valves.JsonErrorReportValve.container:Lorg/apache/catalina/Container;
invokeinterface org.apache.catalina.Container.getLogger:()Lorg/apache/juli/logging/Log;
invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
ifeq 36
35: .line 96
aload 0 /* this */
getfield org.apache.catalina.valves.JsonErrorReportValve.container:Lorg/apache/catalina/Container;
invokeinterface org.apache.catalina.Container.getLogger:()Lorg/apache/juli/logging/Log;
ldc "status.setContentType"
aload 11 /* t */
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
end local 11 // java.lang.Throwable t
36: .line 99
StackMap locals:
StackMap stack:
aload 2 /* response */
invokevirtual org.apache.catalina.connector.Response.getReporter:()Ljava/io/PrintWriter;
astore 11 /* writer */
start local 11 // java.io.Writer writer
37: .line 100
aload 11 /* writer */
ifnull 43
38: .line 101
aload 11 /* writer */
aload 10 /* jsonReport */
invokevirtual java.io.Writer.write:(Ljava/lang/String;)V
39: .line 102
aload 2 /* response */
invokevirtual org.apache.catalina.connector.Response.finishResponse:()V
40: .line 103
return
end local 11 // java.io.Writer writer
41: .line 105
StackMap locals:
StackMap stack: java.io.IOException
pop
goto 43
42: .line 107
StackMap locals:
StackMap stack: java.lang.IllegalStateException
pop
43: .line 110
StackMap locals:
StackMap stack:
return
end local 10 // java.lang.String jsonReport
end local 9 // java.lang.String description
end local 8 // java.lang.String message
end local 7 // java.lang.String type
end local 6 // org.apache.tomcat.util.res.StringManager smClient
end local 5 // java.util.concurrent.atomic.AtomicBoolean result
end local 4 // int statusCode
end local 3 // java.lang.Throwable throwable
end local 2 // org.apache.catalina.connector.Response response
end local 1 // org.apache.catalina.connector.Request request
end local 0 // org.apache.catalina.valves.JsonErrorReportValve this
LocalVariableTable:
Start End Slot Name Signature
0 44 0 this Lorg/apache/catalina/valves/JsonErrorReportValve;
0 44 1 request Lorg/apache/catalina/connector/Request;
0 44 2 response Lorg/apache/catalina/connector/Response;
0 44 3 throwable Ljava/lang/Throwable;
1 44 4 statusCode I
4 44 5 result Ljava/util/concurrent/atomic/AtomicBoolean;
8 44 6 smClient Lorg/apache/tomcat/util/res/StringManager;
10 44 7 type Ljava/lang/String;
15 44 8 message Ljava/lang/String;
18 44 9 description Ljava/lang/String;
29 44 10 jsonReport Ljava/lang/String;
33 36 11 t Ljava/lang/Throwable;
37 41 11 writer Ljava/io/Writer;
Exception table:
from to target type
29 31 32 Class java.lang.Throwable
29 40 41 Class java.io.IOException
29 40 42 Class java.lang.IllegalStateException
MethodParameters:
Name Flags
request
response
throwable
}
SourceFile: "JsonErrorReportValve.java"