class org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction implements java.util.function.Function<org.springframework.core.io.buffer.DataBuffer, java.lang.Iterable<? extends com.google.protobuf.Message>>
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction
super_class: java.lang.Object
{
private final org.springframework.core.ResolvableType elementType;
descriptor: Lorg/springframework/core/ResolvableType;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int maxMessageSize;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private org.springframework.core.io.buffer.DataBuffer output;
descriptor: Lorg/springframework/core/io/buffer/DataBuffer;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
private int messageBytesToRead;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int offset;
descriptor: I
flags: (0x0002) ACC_PRIVATE
final org.springframework.http.codec.protobuf.ProtobufDecoder this$0;
descriptor: Lorg/springframework/http/codec/protobuf/ProtobufDecoder;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
public void <init>(org.springframework.http.codec.protobuf.ProtobufDecoder, org.springframework.core.ResolvableType, int);
descriptor: (Lorg/springframework/http/codec/protobuf/ProtobufDecoder;Lorg/springframework/core/ResolvableType;I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=4
start local 0 start local 2 start local 3 0: aload 0
aload 1
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.this$0:Lorg/springframework/http/codec/protobuf/ProtobufDecoder;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 2
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.elementType:Lorg/springframework/core/ResolvableType;
2: aload 0
iload 3
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.maxMessageSize:I
3: return
end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/http/codec/protobuf/ProtobufDecoder$MessageDecoderFunction;
0 4 2 elementType Lorg/springframework/core/ResolvableType;
0 4 3 maxMessageSize I
MethodParameters:
Name Flags
this$0 final
elementType
maxMessageSize
public java.lang.Iterable<? extends com.google.protobuf.Message> apply(org.springframework.core.io.buffer.DataBuffer);
descriptor: (Lorg/springframework/core/io/buffer/DataBuffer;)Ljava/lang/Iterable;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=10, args_size=2
start local 0 start local 1 0: new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 2
start local 2 1: StackMap locals: java.util.List
StackMap stack:
aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.output:Lorg/springframework/core/io/buffer/DataBuffer;
ifnonnull 14
2: aload 0
aload 1
invokevirtual org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.readMessageSize:(Lorg/springframework/core/io/buffer/DataBuffer;)Z
ifne 6
3: aload 2
astore 9
4: aload 1
invokestatic org.springframework.core.io.buffer.DataBufferUtils.release:(Lorg/springframework/core/io/buffer/DataBuffer;)Z
pop
5: aload 9
areturn
6: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.maxMessageSize:I
if_icmple 13
7: new org.springframework.core.codec.DecodingException
dup
8: new java.lang.StringBuilder
dup
ldc "The number of bytes to read from the incoming stream ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
9: aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ") exceeds "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
10: ldc "the configured limit ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.maxMessageSize:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
11: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
12: invokespecial org.springframework.core.codec.DecodingException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals:
StackMap stack:
aload 0
aload 1
invokeinterface org.springframework.core.io.buffer.DataBuffer.factory:()Lorg/springframework/core/io/buffer/DataBufferFactory;
aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
invokeinterface org.springframework.core.io.buffer.DataBufferFactory.allocateBuffer:(I)Lorg/springframework/core/io/buffer/DataBuffer;
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.output:Lorg/springframework/core/io/buffer/DataBuffer;
14: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
aload 1
invokeinterface org.springframework.core.io.buffer.DataBuffer.readableByteCount:()I
if_icmplt 16
15: aload 1
invokeinterface org.springframework.core.io.buffer.DataBuffer.readableByteCount:()I
goto 17
StackMap locals:
StackMap stack:
16: aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
17: StackMap locals:
StackMap stack: int
istore 4
start local 4 18: aload 1
invokeinterface org.springframework.core.io.buffer.DataBuffer.readableByteCount:()I
iload 4
isub
istore 3
start local 3 19: iload 4
newarray 8
astore 5
start local 5 20: aload 1
aload 5
iconst_0
iload 4
invokeinterface org.springframework.core.io.buffer.DataBuffer.read:([BII)Lorg/springframework/core/io/buffer/DataBuffer;
pop
21: aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.output:Lorg/springframework/core/io/buffer/DataBuffer;
aload 5
invokeinterface org.springframework.core.io.buffer.DataBuffer.write:([B)Lorg/springframework/core/io/buffer/DataBuffer;
pop
22: aload 0
dup
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
iload 4
isub
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
23: aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
ifne 30
24: aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.elementType:Lorg/springframework/core/ResolvableType;
invokevirtual org.springframework.core.ResolvableType.toClass:()Ljava/lang/Class;
invokestatic org.springframework.http.codec.protobuf.ProtobufDecoder.getMessageBuilder:(Ljava/lang/Class;)Lcom/google/protobuf/Message$Builder;
astore 6
start local 6 25: aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.output:Lorg/springframework/core/io/buffer/DataBuffer;
invokeinterface org.springframework.core.io.buffer.DataBuffer.asByteBuffer:()Ljava/nio/ByteBuffer;
astore 7
start local 7 26: aload 6
aload 7
invokestatic com.google.protobuf.CodedInputStream.newInstance:(Ljava/nio/ByteBuffer;)Lcom/google/protobuf/CodedInputStream;
aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.this$0:Lorg/springframework/http/codec/protobuf/ProtobufDecoder;
getfield org.springframework.http.codec.protobuf.ProtobufDecoder.extensionRegistry:Lcom/google/protobuf/ExtensionRegistry;
invokeinterface com.google.protobuf.Message$Builder.mergeFrom:(Lcom/google/protobuf/CodedInputStream;Lcom/google/protobuf/ExtensionRegistryLite;)Lcom/google/protobuf/Message$Builder;
pop
27: aload 2
aload 6
invokeinterface com.google.protobuf.Message$Builder.build:()Lcom/google/protobuf/Message;
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
28: aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.output:Lorg/springframework/core/io/buffer/DataBuffer;
invokestatic org.springframework.core.io.buffer.DataBufferUtils.release:(Lorg/springframework/core/io/buffer/DataBuffer;)Z
pop
29: aload 0
aconst_null
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.output:Lorg/springframework/core/io/buffer/DataBuffer;
end local 7 end local 6 end local 5 30: StackMap locals: int int
StackMap stack:
iload 3
31: ifgt 1
32: aload 2
astore 9
33: aload 1
invokestatic org.springframework.core.io.buffer.DataBufferUtils.release:(Lorg/springframework/core/io/buffer/DataBuffer;)Z
pop
34: aload 9
areturn
end local 4 end local 3 end local 2 35: StackMap locals: org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction org.springframework.core.io.buffer.DataBuffer
StackMap stack: org.springframework.core.codec.DecodingException
astore 2
start local 2 36: aload 2
athrow
end local 2 37: StackMap locals:
StackMap stack: java.io.IOException
astore 2
start local 2 38: new org.springframework.core.codec.DecodingException
dup
ldc "I/O error while parsing input stream"
aload 2
invokespecial org.springframework.core.codec.DecodingException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 39: StackMap locals:
StackMap stack: java.lang.Exception
astore 2
start local 2 40: new org.springframework.core.codec.DecodingException
dup
new java.lang.StringBuilder
dup
ldc "Could not read Protobuf message: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 2
invokespecial org.springframework.core.codec.DecodingException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 2 41: StackMap locals:
StackMap stack: java.lang.Throwable
astore 8
42: aload 1
invokestatic org.springframework.core.io.buffer.DataBufferUtils.release:(Lorg/springframework/core/io/buffer/DataBuffer;)Z
pop
43: aload 8
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 44 0 this Lorg/springframework/http/codec/protobuf/ProtobufDecoder$MessageDecoderFunction;
0 44 1 input Lorg/springframework/core/io/buffer/DataBuffer;
1 35 2 messages Ljava/util/List<Lcom/google/protobuf/Message;>;
19 35 3 remainingBytesToRead I
18 35 4 chunkBytesToRead I
20 30 5 bytesToWrite [B
25 30 6 builder Lcom/google/protobuf/Message$Builder;
26 30 7 buffer Ljava/nio/ByteBuffer;
36 37 2 ex Lorg/springframework/core/codec/DecodingException;
38 39 2 ex Ljava/io/IOException;
40 41 2 ex Ljava/lang/Exception;
Exception table:
from to target type
0 4 35 Class org.springframework.core.codec.DecodingException
6 33 35 Class org.springframework.core.codec.DecodingException
0 4 37 Class java.io.IOException
6 33 37 Class java.io.IOException
0 4 39 Class java.lang.Exception
6 33 39 Class java.lang.Exception
0 4 41 any
6 33 41 any
35 41 41 any
Signature: (Lorg/springframework/core/io/buffer/DataBuffer;)Ljava/lang/Iterable<+Lcom/google/protobuf/Message;>;
MethodParameters:
Name Flags
input
private boolean readMessageSize(org.springframework.core.io.buffer.DataBuffer);
descriptor: (Lorg/springframework/core/io/buffer/DataBuffer;)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
ifne 9
1: aload 1
invokeinterface org.springframework.core.io.buffer.DataBuffer.readableByteCount:()I
ifne 3
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
aload 1
invokeinterface org.springframework.core.io.buffer.DataBuffer.read:()B
istore 2
start local 2 4: iload 2
sipush 128
iand
ifne 7
5: aload 0
iload 2
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
6: iconst_1
ireturn
7: StackMap locals: int
StackMap stack:
aload 0
iload 2
bipush 127
iand
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
8: aload 0
bipush 7
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
end local 2 9: StackMap locals:
StackMap stack:
aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
bipush 32
if_icmpge 28
10: goto 19
11: StackMap locals:
StackMap stack:
aload 1
invokeinterface org.springframework.core.io.buffer.DataBuffer.readableByteCount:()I
ifne 13
12: iconst_0
ireturn
13: StackMap locals:
StackMap stack:
aload 1
invokeinterface org.springframework.core.io.buffer.DataBuffer.read:()B
istore 2
start local 2 14: aload 0
dup
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
iload 2
bipush 127
iand
aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
ishl
ior
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.messageBytesToRead:I
15: iload 2
sipush 128
iand
ifne 18
16: aload 0
iconst_0
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
17: iconst_1
ireturn
end local 2 18: StackMap locals:
StackMap stack:
aload 0
dup
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
bipush 7
iadd
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
StackMap locals:
StackMap stack:
19: aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
bipush 32
if_icmplt 11
20: goto 28
21: StackMap locals:
StackMap stack:
aload 1
invokeinterface org.springframework.core.io.buffer.DataBuffer.readableByteCount:()I
ifne 23
22: iconst_0
ireturn
23: StackMap locals:
StackMap stack:
aload 1
invokeinterface org.springframework.core.io.buffer.DataBuffer.read:()B
istore 2
start local 2 24: iload 2
sipush 128
iand
ifne 27
25: aload 0
iconst_0
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
26: iconst_1
ireturn
end local 2 27: StackMap locals:
StackMap stack:
aload 0
dup
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
bipush 7
iadd
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
StackMap locals:
StackMap stack:
28: aload 0
getfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
bipush 64
if_icmplt 21
29: aload 0
iconst_0
putfield org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.offset:I
30: new org.springframework.core.codec.DecodingException
dup
ldc "Cannot parse message size: malformed varint"
invokespecial org.springframework.core.codec.DecodingException.<init>:(Ljava/lang/String;)V
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 31 0 this Lorg/springframework/http/codec/protobuf/ProtobufDecoder$MessageDecoderFunction;
0 31 1 input Lorg/springframework/core/io/buffer/DataBuffer;
4 9 2 firstByte I
14 18 2 b I
24 27 2 b I
MethodParameters:
Name Flags
input
public java.lang.Object apply(java.lang.Object);
descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
0: aload 0
aload 1
checkcast org.springframework.core.io.buffer.DataBuffer
invokevirtual org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction.apply:(Lorg/springframework/core/io/buffer/DataBuffer;)Ljava/lang/Iterable;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Ljava/lang/Object;Ljava/util/function/Function<Lorg/springframework/core/io/buffer/DataBuffer;Ljava/lang/Iterable<+Lcom/google/protobuf/Message;>;>;
SourceFile: "ProtobufDecoder.java"
NestHost: org.springframework.http.codec.protobuf.ProtobufDecoder
InnerClasses:
public abstract Builder = com.google.protobuf.Message$Builder of com.google.protobuf.Message
private MessageDecoderFunction = org.springframework.http.codec.protobuf.ProtobufDecoder$MessageDecoderFunction of org.springframework.http.codec.protobuf.ProtobufDecoder