public final class org.apache.tomcat.util.buf.UDecoder
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.apache.tomcat.util.buf.UDecoder
super_class: java.lang.Object
{
private static final org.apache.tomcat.util.res.StringManager sm;
descriptor: Lorg/apache/tomcat/util/res/StringManager;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
public static final boolean ALLOW_ENCODED_SLASH;
descriptor: Z
flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
private static final java.io.IOException EXCEPTION_EOF;
descriptor: Ljava/io/IOException;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.io.IOException EXCEPTION_NOT_HEX_DIGIT;
descriptor: Ljava/io/IOException;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.io.IOException EXCEPTION_SLASH;
descriptor: Ljava/io/IOException;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=0, args_size=0
0: ldc Lorg/apache/tomcat/util/buf/UDecoder;
invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
putstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
1: ldc "org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH"
ldc "false"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
2: putstatic org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH:Z
3: new org.apache.tomcat.util.buf.UDecoder$DecodeException
dup
getstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "uDecoder.eof"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial org.apache.tomcat.util.buf.UDecoder$DecodeException.<init>:(Ljava/lang/String;)V
putstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_EOF:Ljava/io/IOException;
4: new org.apache.tomcat.util.buf.UDecoder$DecodeException
dup
5: ldc "isHexDigit"
6: invokespecial org.apache.tomcat.util.buf.UDecoder$DecodeException.<init>:(Ljava/lang/String;)V
putstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_NOT_HEX_DIGIT:Ljava/io/IOException;
7: new org.apache.tomcat.util.buf.UDecoder$DecodeException
dup
8: ldc "noSlash"
9: invokespecial org.apache.tomcat.util.buf.UDecoder$DecodeException.<init>:(Ljava/lang/String;)V
putstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_SLASH:Ljava/io/IOException;
10: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/apache/tomcat/util/buf/UDecoder;
public void convert(org.apache.tomcat.util.buf.ByteChunk, boolean);
descriptor: (Lorg/apache/tomcat/util/buf/ByteChunk;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=13, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.apache.tomcat.util.buf.ByteChunk.getOffset:()I
istore 3
start local 3 1: aload 1
invokevirtual org.apache.tomcat.util.buf.ByteChunk.getBytes:()[B
astore 4
start local 4 2: aload 1
invokevirtual org.apache.tomcat.util.buf.ByteChunk.getEnd:()I
istore 5
start local 5 3: aload 4
iload 3
iload 5
bipush 37
invokestatic org.apache.tomcat.util.buf.ByteChunk.findByte:([BIIB)I
istore 6
start local 6 4: iconst_m1
istore 7
start local 7 5: iload 2
ifeq 9
6: aload 4
iload 3
iload 6
iflt 7
iload 6
goto 8
StackMap locals: org.apache.tomcat.util.buf.UDecoder org.apache.tomcat.util.buf.ByteChunk int int byte[] int int int
StackMap stack: byte[] int
7: iload 5
StackMap locals: org.apache.tomcat.util.buf.UDecoder org.apache.tomcat.util.buf.ByteChunk int int byte[] int int int
StackMap stack: byte[] int int
8: bipush 43
invokestatic org.apache.tomcat.util.buf.ByteChunk.findByte:([BIIB)I
istore 7
9: StackMap locals:
StackMap stack:
iload 6
ifge 11
iload 7
ifge 11
10: return
11: StackMap locals:
StackMap stack:
iload 7
iflt 12
iload 7
iload 6
if_icmplt 13
StackMap locals:
StackMap stack:
12: iload 6
ifge 14
13: StackMap locals:
StackMap stack:
iload 7
istore 6
14: StackMap locals:
StackMap stack:
getstatic org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH:Z
ifne 15
iload 2
ifeq 16
StackMap locals:
StackMap stack:
15: iconst_0
goto 17
StackMap locals:
StackMap stack:
16: iconst_1
StackMap locals:
StackMap stack: int
17: istore 8
start local 8 18: iload 6
istore 9
start local 9 19: goto 38
20: StackMap locals: int int
StackMap stack:
aload 4
iload 9
baload
bipush 43
if_icmpne 23
iload 2
ifeq 23
21: aload 4
iload 6
bipush 32
bastore
22: goto 37
StackMap locals:
StackMap stack:
23: aload 4
iload 9
baload
bipush 37
if_icmpeq 26
24: aload 4
iload 6
aload 4
iload 9
baload
bastore
25: goto 37
26: StackMap locals:
StackMap stack:
iload 9
iconst_2
iadd
iload 5
if_icmplt 28
27: getstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_EOF:Ljava/io/IOException;
athrow
28: StackMap locals:
StackMap stack:
aload 4
iload 9
iconst_1
iadd
baload
istore 10
start local 10 29: aload 4
iload 9
iconst_2
iadd
baload
istore 11
start local 11 30: iload 10
invokestatic org.apache.tomcat.util.buf.UDecoder.isHexDigit:(I)Z
ifeq 31
iload 11
invokestatic org.apache.tomcat.util.buf.UDecoder.isHexDigit:(I)Z
ifne 32
31: StackMap locals: int int
StackMap stack:
getstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_NOT_HEX_DIGIT:Ljava/io/IOException;
athrow
32: StackMap locals:
StackMap stack:
iinc 9 2
33: iload 10
iload 11
invokestatic org.apache.tomcat.util.buf.UDecoder.x2c:(BB)I
istore 12
start local 12 34: iload 8
ifeq 36
iload 12
bipush 47
if_icmpne 36
35: getstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_SLASH:Ljava/io/IOException;
athrow
36: StackMap locals: int
StackMap stack:
aload 4
iload 6
iload 12
i2b
bastore
end local 12 end local 11 end local 10 37: StackMap locals:
StackMap stack:
iinc 9 1
iinc 6 1
StackMap locals:
StackMap stack:
38: iload 9
iload 5
if_icmplt 20
end local 9 39: aload 1
iload 6
invokevirtual org.apache.tomcat.util.buf.ByteChunk.setEnd:(I)V
40: return
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 41 0 this Lorg/apache/tomcat/util/buf/UDecoder;
0 41 1 mb Lorg/apache/tomcat/util/buf/ByteChunk;
0 41 2 query Z
1 41 3 start I
2 41 4 buff [B
3 41 5 end I
4 41 6 idx I
5 41 7 idx2 I
18 41 8 noSlash Z
19 39 9 j I
29 37 10 b1 B
30 37 11 b2 B
34 37 12 res I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
mb
query
public void convert(org.apache.tomcat.util.buf.CharChunk, boolean);
descriptor: (Lorg/apache/tomcat/util/buf/CharChunk;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=13, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.apache.tomcat.util.buf.CharChunk.getOffset:()I
istore 3
start local 3 1: aload 1
invokevirtual org.apache.tomcat.util.buf.CharChunk.getBuffer:()[C
astore 4
start local 4 2: aload 1
invokevirtual org.apache.tomcat.util.buf.CharChunk.getEnd:()I
istore 5
start local 5 3: aload 4
iload 3
iload 5
bipush 37
invokestatic org.apache.tomcat.util.buf.CharChunk.indexOf:([CIIC)I
istore 6
start local 6 4: iconst_m1
istore 7
start local 7 5: iload 2
ifeq 9
6: aload 4
iload 3
iload 6
iflt 7
iload 6
goto 8
StackMap locals: org.apache.tomcat.util.buf.UDecoder org.apache.tomcat.util.buf.CharChunk int int char[] int int int
StackMap stack: char[] int
7: iload 5
StackMap locals: org.apache.tomcat.util.buf.UDecoder org.apache.tomcat.util.buf.CharChunk int int char[] int int int
StackMap stack: char[] int int
8: bipush 43
invokestatic org.apache.tomcat.util.buf.CharChunk.indexOf:([CIIC)I
istore 7
9: StackMap locals:
StackMap stack:
iload 6
ifge 11
iload 7
ifge 11
10: return
11: StackMap locals:
StackMap stack:
iload 7
iflt 12
iload 7
iload 6
if_icmplt 13
StackMap locals:
StackMap stack:
12: iload 6
ifge 14
13: StackMap locals:
StackMap stack:
iload 7
istore 6
14: StackMap locals:
StackMap stack:
getstatic org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH:Z
ifne 15
iload 2
ifeq 16
StackMap locals:
StackMap stack:
15: iconst_0
goto 17
StackMap locals:
StackMap stack:
16: iconst_1
StackMap locals:
StackMap stack: int
17: istore 8
start local 8 18: iload 6
istore 9
start local 9 19: goto 38
20: StackMap locals: int int
StackMap stack:
aload 4
iload 9
caload
bipush 43
if_icmpne 23
iload 2
ifeq 23
21: aload 4
iload 6
bipush 32
castore
22: goto 37
StackMap locals:
StackMap stack:
23: aload 4
iload 9
caload
bipush 37
if_icmpeq 26
24: aload 4
iload 6
aload 4
iload 9
caload
castore
25: goto 37
26: StackMap locals:
StackMap stack:
iload 9
iconst_2
iadd
iload 5
if_icmplt 28
27: getstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_EOF:Ljava/io/IOException;
athrow
28: StackMap locals:
StackMap stack:
aload 4
iload 9
iconst_1
iadd
caload
istore 10
start local 10 29: aload 4
iload 9
iconst_2
iadd
caload
istore 11
start local 11 30: iload 10
invokestatic org.apache.tomcat.util.buf.UDecoder.isHexDigit:(I)Z
ifeq 31
iload 11
invokestatic org.apache.tomcat.util.buf.UDecoder.isHexDigit:(I)Z
ifne 32
31: StackMap locals: int int
StackMap stack:
getstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_NOT_HEX_DIGIT:Ljava/io/IOException;
athrow
32: StackMap locals:
StackMap stack:
iinc 9 2
33: iload 10
iload 11
invokestatic org.apache.tomcat.util.buf.UDecoder.x2c:(CC)I
istore 12
start local 12 34: iload 8
ifeq 36
iload 12
bipush 47
if_icmpne 36
35: getstatic org.apache.tomcat.util.buf.UDecoder.EXCEPTION_SLASH:Ljava/io/IOException;
athrow
36: StackMap locals: int
StackMap stack:
aload 4
iload 6
iload 12
i2c
castore
end local 12 end local 11 end local 10 37: StackMap locals:
StackMap stack:
iinc 9 1
iinc 6 1
StackMap locals:
StackMap stack:
38: iload 9
iload 5
if_icmplt 20
end local 9 39: aload 1
iload 6
invokevirtual org.apache.tomcat.util.buf.CharChunk.setEnd:(I)V
40: return
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 41 0 this Lorg/apache/tomcat/util/buf/UDecoder;
0 41 1 mb Lorg/apache/tomcat/util/buf/CharChunk;
0 41 2 query Z
1 41 3 start I
2 41 4 buff [C
3 41 5 cend I
4 41 6 idx I
5 41 7 idx2 I
18 41 8 noSlash Z
19 39 9 j I
29 37 10 b1 C
30 37 11 b2 C
34 37 12 res I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
mb
query
public void convert(org.apache.tomcat.util.buf.MessageBytes, boolean);
descriptor: (Lorg/apache/tomcat/util/buf/MessageBytes;Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual org.apache.tomcat.util.buf.MessageBytes.getType:()I
tableswitch { // 1 - 3
1: 1
2: 11
3: 8
default: 13
}
1: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.apache.tomcat.util.buf.MessageBytes.toString:()Ljava/lang/String;
astore 3
start local 3 2: aload 3
ifnonnull 4
3: return
4: StackMap locals: java.lang.String
StackMap stack:
aload 1
aload 0
aload 3
iload 2
invokevirtual org.apache.tomcat.util.buf.UDecoder.convert:(Ljava/lang/String;Z)Ljava/lang/String;
invokevirtual org.apache.tomcat.util.buf.MessageBytes.setString:(Ljava/lang/String;)V
5: goto 13
StackMap locals:
StackMap stack: java.lang.RuntimeException
6: astore 4
start local 4 7: new org.apache.tomcat.util.buf.UDecoder$DecodeException
dup
aload 4
invokevirtual java.lang.RuntimeException.getMessage:()Ljava/lang/String;
invokespecial org.apache.tomcat.util.buf.UDecoder$DecodeException.<init>:(Ljava/lang/String;)V
athrow
end local 4 end local 3 8: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.apache.tomcat.util.buf.MessageBytes.getCharChunk:()Lorg/apache/tomcat/util/buf/CharChunk;
astore 4
start local 4 9: aload 0
aload 4
iload 2
invokevirtual org.apache.tomcat.util.buf.UDecoder.convert:(Lorg/apache/tomcat/util/buf/CharChunk;Z)V
10: goto 13
end local 4 11: StackMap locals:
StackMap stack:
aload 1
invokevirtual org.apache.tomcat.util.buf.MessageBytes.getByteChunk:()Lorg/apache/tomcat/util/buf/ByteChunk;
astore 5
start local 5 12: aload 0
aload 5
iload 2
invokevirtual org.apache.tomcat.util.buf.UDecoder.convert:(Lorg/apache/tomcat/util/buf/ByteChunk;Z)V
end local 5 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 Lorg/apache/tomcat/util/buf/UDecoder;
0 14 1 mb Lorg/apache/tomcat/util/buf/MessageBytes;
0 14 2 query Z
2 8 3 strValue Ljava/lang/String;
7 8 4 ex Ljava/lang/RuntimeException;
9 11 4 charC Lorg/apache/tomcat/util/buf/CharChunk;
12 13 5 bytesC Lorg/apache/tomcat/util/buf/ByteChunk;
Exception table:
from to target type
4 5 6 Class java.lang.RuntimeException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
mb
query
public final java.lang.String convert(java.lang.String, boolean);
descriptor: (Ljava/lang/String;Z)Ljava/lang/String;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=4, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
iload 2
ifeq 3
aload 1
bipush 43
invokevirtual java.lang.String.indexOf:(I)I
ifge 5
StackMap locals:
StackMap stack:
3: aload 1
bipush 37
invokevirtual java.lang.String.indexOf:(I)I
ifge 5
4: aload 1
areturn
5: StackMap locals:
StackMap stack:
getstatic org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH:Z
ifne 6
iload 2
ifeq 7
StackMap locals:
StackMap stack:
6: iconst_0
goto 8
StackMap locals:
StackMap stack:
7: iconst_1
StackMap locals:
StackMap stack: int
8: istore 3
start local 3 9: new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 4
start local 4 10: iconst_0
istore 5
start local 5 11: aload 1
invokevirtual java.lang.String.length:()I
istore 6
start local 6 12: aload 4
aload 1
invokevirtual java.lang.String.length:()I
invokevirtual java.lang.StringBuilder.ensureCapacity:(I)V
13: goto 39
14: StackMap locals: org.apache.tomcat.util.buf.UDecoder java.lang.String int int java.lang.StringBuilder int int
StackMap stack:
iload 5
istore 7
start local 7 15: goto 21
16: StackMap locals: int
StackMap stack:
aload 1
iload 7
invokevirtual java.lang.String.charAt:(I)C
istore 8
start local 8 17: iload 8
bipush 43
if_icmpne 18
iload 2
ifne 22
StackMap locals: int
StackMap stack:
18: iload 8
bipush 37
if_icmpne 20
19: goto 22
end local 8 20: StackMap locals:
StackMap stack:
iinc 7 1
StackMap locals:
StackMap stack:
21: iload 7
iload 6
if_icmplt 16
22: StackMap locals:
StackMap stack:
iload 7
iload 5
if_icmple 25
23: aload 4
aload 1
iload 5
iload 7
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
24: iload 7
istore 5
25: StackMap locals:
StackMap stack:
iload 5
iload 6
if_icmplt 27
26: goto 40
27: StackMap locals:
StackMap stack:
aload 1
iload 5
invokevirtual java.lang.String.charAt:(I)C
istore 8
start local 8 28: iload 8
bipush 43
if_icmpne 32
29: aload 4
bipush 32
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
30: iinc 5 1
31: goto 39
32: StackMap locals: int
StackMap stack:
iload 8
bipush 37
if_icmpne 39
33: aload 1
iload 5
iconst_1
iadd
iload 5
iconst_3
iadd
invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
bipush 16
34: invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;I)I
i2c
istore 9
start local 9 35: iload 3
ifeq 37
iload 9
bipush 47
if_icmpne 37
36: new java.lang.IllegalArgumentException
dup
getstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "uDecoder.noSlash"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
37: StackMap locals: int
StackMap stack:
aload 4
iload 9
invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
pop
38: iinc 5 3
end local 9 end local 8 end local 7 39: StackMap locals:
StackMap stack:
iload 5
iload 6
if_icmplt 14
40: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
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 Lorg/apache/tomcat/util/buf/UDecoder;
0 41 1 str Ljava/lang/String;
0 41 2 query Z
9 41 3 noSlash Z
10 41 4 dec Ljava/lang/StringBuilder;
11 41 5 strPos I
12 41 6 strLen I
15 39 7 laPos I
17 20 8 laChar C
28 39 8 metaChar C
35 39 9 res C
MethodParameters:
Name Flags
str
query
public static java.lang.String URLDecode(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
invokestatic org.apache.tomcat.util.buf.UDecoder.URLDecode:(Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 str Ljava/lang/String;
MethodParameters:
Name Flags
str
public static java.lang.String URLDecode(java.lang.String, java.nio.charset.Charset);
descriptor: (Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=8, locals=10, args_size=2
start local 0 start local 1 0: aload 0
ifnonnull 2
1: aconst_null
areturn
2: StackMap locals:
StackMap stack:
aload 0
bipush 37
invokevirtual java.lang.String.indexOf:(I)I
iconst_m1
if_icmpne 4
3: aload 0
areturn
4: StackMap locals:
StackMap stack:
aload 1
ifnonnull 6
5: getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
astore 1
6: StackMap locals:
StackMap stack:
new java.io.ByteArrayOutputStream
dup
aload 0
invokevirtual java.lang.String.length:()I
iconst_2
imul
invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
astore 2
start local 2 7: new java.io.OutputStreamWriter
dup
aload 2
aload 1
invokespecial java.io.OutputStreamWriter.<init>:(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
astore 3
start local 3 8: aload 0
invokevirtual java.lang.String.toCharArray:()[C
astore 4
start local 4 9: aload 4
arraylength
istore 5
start local 5 10: iconst_0
istore 6
start local 6 11: goto 28
12: StackMap locals: java.lang.String java.nio.charset.Charset java.io.ByteArrayOutputStream java.io.OutputStreamWriter char[] int int
StackMap stack:
aload 4
iload 6
iinc 6 1
caload
istore 7
start local 7 13: iload 7
bipush 37
if_icmpne 27
14: aload 3
invokevirtual java.io.OutputStreamWriter.flush:()V
15: iload 6
iconst_2
iadd
iload 5
if_icmple 19
16: new java.lang.IllegalArgumentException
dup
17: getstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "uDecoder.urlDecode.missingDigit"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 0
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
18: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
19: StackMap locals: int
StackMap stack:
aload 4
iload 6
iinc 6 1
caload
istore 8
start local 8 20: aload 4
iload 6
iinc 6 1
caload
istore 9
start local 9 21: iload 8
invokestatic org.apache.tomcat.util.buf.UDecoder.isHexDigit:(I)Z
ifeq 24
iload 9
invokestatic org.apache.tomcat.util.buf.UDecoder.isHexDigit:(I)Z
ifeq 24
22: aload 2
iload 8
iload 9
invokestatic org.apache.tomcat.util.buf.UDecoder.x2c:(CC)I
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
23: goto 28
24: StackMap locals: int int
StackMap stack:
new java.lang.IllegalArgumentException
dup
25: getstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "uDecoder.urlDecode.missingDigit"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 0
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
26: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 9 end local 8 27: StackMap locals:
StackMap stack:
aload 3
iload 7
invokevirtual java.io.OutputStreamWriter.append:(C)Ljava/io/Writer;
pop
end local 7 28: StackMap locals:
StackMap stack:
iload 6
iload 5
if_icmplt 12
29: aload 3
invokevirtual java.io.OutputStreamWriter.flush:()V
30: aload 2
aload 1
invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
invokevirtual java.io.ByteArrayOutputStream.toString:(Ljava/lang/String;)Ljava/lang/String;
31: areturn
32: StackMap locals:
StackMap stack: java.io.IOException
astore 7
start local 7 33: new java.lang.IllegalArgumentException
dup
34: getstatic org.apache.tomcat.util.buf.UDecoder.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "uDecoder.urlDecode.conversionError"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 0
aastore
dup
iconst_1
aload 1
invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
aload 7
35: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 str Ljava/lang/String;
0 36 1 charset Ljava/nio/charset/Charset;
7 36 2 baos Ljava/io/ByteArrayOutputStream;
8 36 3 osw Ljava/io/OutputStreamWriter;
9 36 4 sourceChars [C
10 36 5 len I
11 36 6 ix I
13 28 7 c C
20 27 8 c1 C
21 27 9 c2 C
33 36 7 ioe Ljava/io/IOException;
Exception table:
from to target type
11 31 32 Class java.io.IOException
MethodParameters:
Name Flags
str
charset
private static boolean isHexDigit(int);
descriptor: (I)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: iload 0
bipush 48
if_icmplt 1
iload 0
bipush 57
if_icmple 5
1: StackMap locals:
StackMap stack:
iload 0
bipush 97
if_icmplt 2
iload 0
bipush 102
if_icmple 5
2: StackMap locals:
StackMap stack:
iload 0
bipush 65
if_icmplt 4
iload 0
bipush 70
3: if_icmple 5
StackMap locals:
StackMap stack:
4: iconst_0
ireturn
StackMap locals:
StackMap stack:
5: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 c I
MethodParameters:
Name Flags
c
private static int x2c(byte, byte);
descriptor: (BB)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: iload 0
bipush 65
if_icmplt 1
iload 0
sipush 223
iand
bipush 65
isub
bipush 10
iadd
goto 2
1: StackMap locals:
StackMap stack:
iload 0
bipush 48
isub
2: StackMap locals:
StackMap stack: int
istore 2
start local 2 3: iload 2
bipush 16
imul
istore 2
4: iload 2
iload 1
bipush 65
if_icmplt 5
iload 1
sipush 223
iand
bipush 65
isub
bipush 10
iadd
goto 6
5: StackMap locals: int int int
StackMap stack: int
iload 1
bipush 48
isub
StackMap locals: int int int
StackMap stack: int int
6: iadd
istore 2
7: iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 b1 B
0 8 1 b2 B
3 8 2 digit I
MethodParameters:
Name Flags
b1
b2
private static int x2c(char, char);
descriptor: (CC)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: iload 0
bipush 65
if_icmplt 1
iload 0
sipush 223
iand
bipush 65
isub
bipush 10
iadd
goto 2
1: StackMap locals:
StackMap stack:
iload 0
bipush 48
isub
2: StackMap locals:
StackMap stack: int
istore 2
start local 2 3: iload 2
bipush 16
imul
istore 2
4: iload 2
iload 1
bipush 65
if_icmplt 5
iload 1
sipush 223
iand
bipush 65
isub
bipush 10
iadd
goto 6
5: StackMap locals: int int int
StackMap stack: int
iload 1
bipush 48
isub
StackMap locals: int int int
StackMap stack: int int
6: iadd
istore 2
7: iload 2
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 b1 C
0 8 1 b2 C
3 8 2 digit I
MethodParameters:
Name Flags
b1
b2
}
SourceFile: "UDecoder.java"
NestMembers:
org.apache.tomcat.util.buf.UDecoder$DecodeException
InnerClasses:
private DecodeException = org.apache.tomcat.util.buf.UDecoder$DecodeException of org.apache.tomcat.util.buf.UDecoder