class org.springframework.http.server.reactive.UndertowServerHttpResponse extends org.springframework.http.server.reactive.AbstractListenerServerHttpResponse implements org.springframework.http.ZeroCopyHttpOutputMessage
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: org.springframework.http.server.reactive.UndertowServerHttpResponse
super_class: org.springframework.http.server.reactive.AbstractListenerServerHttpResponse
{
private final io.undertow.server.HttpServerExchange exchange;
descriptor: Lio/undertow/server/HttpServerExchange;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final org.springframework.http.server.reactive.UndertowServerHttpRequest request;
descriptor: Lorg/springframework/http/server/reactive/UndertowServerHttpRequest;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private org.xnio.channels.StreamSinkChannel responseChannel;
descriptor: Lorg/xnio/channels/StreamSinkChannel;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
org.springframework.lang.Nullable()
void <init>(io.undertow.server.HttpServerExchange, org.springframework.core.io.buffer.DataBufferFactory, org.springframework.http.server.reactive.UndertowServerHttpRequest);
descriptor: (Lio/undertow/server/HttpServerExchange;Lorg/springframework/core/io/buffer/DataBufferFactory;Lorg/springframework/http/server/reactive/UndertowServerHttpRequest;)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 2
aload 1
invokestatic org.springframework.http.server.reactive.UndertowServerHttpResponse.createHeaders:(Lio/undertow/server/HttpServerExchange;)Lorg/springframework/http/HttpHeaders;
invokespecial org.springframework.http.server.reactive.AbstractListenerServerHttpResponse.<init>:(Lorg/springframework/core/io/buffer/DataBufferFactory;Lorg/springframework/http/HttpHeaders;)V
1: aload 1
ldc "HttpServerExchange must not be null"
invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
2: aload 0
aload 1
putfield org.springframework.http.server.reactive.UndertowServerHttpResponse.exchange:Lio/undertow/server/HttpServerExchange;
3: aload 0
aload 3
putfield org.springframework.http.server.reactive.UndertowServerHttpResponse.request:Lorg/springframework/http/server/reactive/UndertowServerHttpRequest;
4: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
0 5 1 exchange Lio/undertow/server/HttpServerExchange;
0 5 2 bufferFactory Lorg/springframework/core/io/buffer/DataBufferFactory;
0 5 3 request Lorg/springframework/http/server/reactive/UndertowServerHttpRequest;
MethodParameters:
Name Flags
exchange
bufferFactory
request
private static org.springframework.http.HttpHeaders (io.undertow.server.HttpServerExchange);
descriptor: (Lio/undertow/server/HttpServerExchange;)Lorg/springframework/http/HttpHeaders;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: new org.springframework.http.server.reactive.UndertowHeadersAdapter
dup
aload 0
invokevirtual io.undertow.server.HttpServerExchange.getResponseHeaders:()Lio/undertow/util/HeaderMap;
invokespecial org.springframework.http.server.reactive.UndertowHeadersAdapter.<init>:(Lio/undertow/util/HeaderMap;)V
1: astore 1
start local 1 2: new org.springframework.http.HttpHeaders
dup
aload 1
invokespecial org.springframework.http.HttpHeaders.<init>:(Lorg/springframework/util/MultiValueMap;)V
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 exchange Lio/undertow/server/HttpServerExchange;
2 3 1 headersMap Lorg/springframework/http/server/reactive/UndertowHeadersAdapter;
MethodParameters:
Name Flags
exchange
public <T> T getNativeResponse();
descriptor: ()Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.http.server.reactive.UndertowServerHttpResponse.exchange:Lio/undertow/server/HttpServerExchange;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
Signature: <T:Ljava/lang/Object;>()TT;
public org.springframework.http.HttpStatus getStatusCode();
descriptor: ()Lorg/springframework/http/HttpStatus;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
invokespecial org.springframework.http.server.reactive.AbstractListenerServerHttpResponse.getStatusCode:()Lorg/springframework/http/HttpStatus;
astore 1
start local 1 1: aload 1
ifnull 2
aload 1
goto 3
StackMap locals: org.springframework.http.HttpStatus
StackMap stack:
2: aload 0
getfield org.springframework.http.server.reactive.UndertowServerHttpResponse.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getStatusCode:()I
invokestatic org.springframework.http.HttpStatus.resolve:(I)Lorg/springframework/http/HttpStatus;
StackMap locals:
StackMap stack: org.springframework.http.HttpStatus
3: areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
1 4 1 httpStatus Lorg/springframework/http/HttpStatus;
protected void applyStatusCode();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual org.springframework.http.server.reactive.UndertowServerHttpResponse.getStatusCodeValue:()Ljava/lang/Integer;
astore 1
start local 1 1: aload 1
ifnull 3
2: aload 0
getfield org.springframework.http.server.reactive.UndertowServerHttpResponse.exchange:Lio/undertow/server/HttpServerExchange;
aload 1
invokevirtual java.lang.Integer.intValue:()I
invokevirtual io.undertow.server.HttpServerExchange.setStatusCode:(I)Lio/undertow/server/HttpServerExchange;
pop
3: StackMap locals: java.lang.Integer
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
1 4 1 statusCode Ljava/lang/Integer;
protected void ();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
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 Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
protected void applyCookies();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=6, args_size=1
start local 0 0: aload 0
invokevirtual org.springframework.http.server.reactive.UndertowServerHttpResponse.getCookies:()Lorg/springframework/util/MultiValueMap;
invokeinterface org.springframework.util.MultiValueMap.keySet:()Ljava/util/Set;
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 2
goto 15
StackMap locals: org.springframework.http.server.reactive.UndertowServerHttpResponse top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 1
start local 1 2: aload 0
invokevirtual org.springframework.http.server.reactive.UndertowServerHttpResponse.getCookies:()Lorg/springframework/util/MultiValueMap;
aload 1
invokeinterface org.springframework.util.MultiValueMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.util.List
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 14
StackMap locals: org.springframework.http.server.reactive.UndertowServerHttpResponse java.lang.String java.util.Iterator top java.util.Iterator
StackMap stack:
3: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast org.springframework.http.ResponseCookie
astore 3
start local 3 4: new io.undertow.server.handlers.CookieImpl
dup
aload 1
aload 3
invokevirtual org.springframework.http.ResponseCookie.getValue:()Ljava/lang/String;
invokespecial io.undertow.server.handlers.CookieImpl.<init>:(Ljava/lang/String;Ljava/lang/String;)V
astore 5
start local 5 5: aload 3
invokevirtual org.springframework.http.ResponseCookie.getMaxAge:()Ljava/time/Duration;
invokevirtual java.time.Duration.isNegative:()Z
ifne 7
6: aload 5
aload 3
invokevirtual org.springframework.http.ResponseCookie.getMaxAge:()Ljava/time/Duration;
invokevirtual java.time.Duration.getSeconds:()J
l2i
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface io.undertow.server.handlers.Cookie.setMaxAge:(Ljava/lang/Integer;)Lio/undertow/server/handlers/Cookie;
pop
7: StackMap locals: org.springframework.http.server.reactive.UndertowServerHttpResponse java.lang.String java.util.Iterator org.springframework.http.ResponseCookie java.util.Iterator io.undertow.server.handlers.Cookie
StackMap stack:
aload 3
invokevirtual org.springframework.http.ResponseCookie.getDomain:()Ljava/lang/String;
ifnull 9
8: aload 5
aload 3
invokevirtual org.springframework.http.ResponseCookie.getDomain:()Ljava/lang/String;
invokeinterface io.undertow.server.handlers.Cookie.setDomain:(Ljava/lang/String;)Lio/undertow/server/handlers/Cookie;
pop
9: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.springframework.http.ResponseCookie.getPath:()Ljava/lang/String;
ifnull 11
10: aload 5
aload 3
invokevirtual org.springframework.http.ResponseCookie.getPath:()Ljava/lang/String;
invokeinterface io.undertow.server.handlers.Cookie.setPath:(Ljava/lang/String;)Lio/undertow/server/handlers/Cookie;
pop
11: StackMap locals:
StackMap stack:
aload 5
aload 3
invokevirtual org.springframework.http.ResponseCookie.isSecure:()Z
invokeinterface io.undertow.server.handlers.Cookie.setSecure:(Z)Lio/undertow/server/handlers/Cookie;
pop
12: aload 5
aload 3
invokevirtual org.springframework.http.ResponseCookie.isHttpOnly:()Z
invokeinterface io.undertow.server.handlers.Cookie.setHttpOnly:(Z)Lio/undertow/server/handlers/Cookie;
pop
13: aload 0
getfield org.springframework.http.server.reactive.UndertowServerHttpResponse.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseCookies:()Ljava/util/Map;
aload 1
aload 5
invokeinterface java.util.Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 5 end local 3 14: StackMap locals: org.springframework.http.server.reactive.UndertowServerHttpResponse java.lang.String java.util.Iterator top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
end local 1 15: StackMap locals: org.springframework.http.server.reactive.UndertowServerHttpResponse top java.util.Iterator
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
16: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
2 15 1 name Ljava/lang/String;
4 14 3 httpCookie Lorg/springframework/http/ResponseCookie;
5 14 5 cookie Lio/undertow/server/handlers/Cookie;
public reactor.core.publisher.Mono<java.lang.Void> writeWith(java.nio.file.Path, long, long);
descriptor: (Ljava/nio/file/Path;JJ)Lreactor/core/publisher/Mono;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 4 0: aload 0
aload 0
aload 1
lload 2
lload 4
invokedynamic get(Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;Ljava/nio/file/Path;JJ)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;
org/springframework/http/server/reactive/UndertowServerHttpResponse.lambda$0(Ljava/nio/file/Path;JJ)Lreactor/core/publisher/Mono; (7)
()Lreactor/core/publisher/Mono;
invokevirtual org.springframework.http.server.reactive.UndertowServerHttpResponse.doCommit:(Ljava/util/function/Supplier;)Lreactor/core/publisher/Mono;
areturn
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
0 1 1 file Ljava/nio/file/Path;
0 1 2 position J
0 1 4 count J
Signature: (Ljava/nio/file/Path;JJ)Lreactor/core/publisher/Mono<Ljava/lang/Void;>;
MethodParameters:
Name Flags
file
position
count
protected org.reactivestreams.Processor<? super org.reactivestreams.Publisher<? extends org.springframework.core.io.buffer.DataBuffer>, java.lang.Void> createBodyFlushProcessor();
descriptor: ()Lorg/reactivestreams/Processor;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=1, args_size=1
start local 0 0: new org.springframework.http.server.reactive.UndertowServerHttpResponse$ResponseBodyFlushProcessor
dup
aload 0
invokespecial org.springframework.http.server.reactive.UndertowServerHttpResponse$ResponseBodyFlushProcessor.<init>:(Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
Signature: ()Lorg/reactivestreams/Processor<-Lorg/reactivestreams/Publisher<+Lorg/springframework/core/io/buffer/DataBuffer;>;Ljava/lang/Void;>;
private org.springframework.http.server.reactive.UndertowServerHttpResponse$ResponseBodyProcessor createBodyProcessor();
descriptor: ()Lorg/springframework/http/server/reactive/UndertowServerHttpResponse$ResponseBodyProcessor;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield org.springframework.http.server.reactive.UndertowServerHttpResponse.responseChannel:Lorg/xnio/channels/StreamSinkChannel;
ifnonnull 2
1: aload 0
aload 0
getfield org.springframework.http.server.reactive.UndertowServerHttpResponse.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseChannel:()Lorg/xnio/channels/StreamSinkChannel;
putfield org.springframework.http.server.reactive.UndertowServerHttpResponse.responseChannel:Lorg/xnio/channels/StreamSinkChannel;
2: StackMap locals:
StackMap stack:
new org.springframework.http.server.reactive.UndertowServerHttpResponse$ResponseBodyProcessor
dup
aload 0
aload 0
getfield org.springframework.http.server.reactive.UndertowServerHttpResponse.responseChannel:Lorg/xnio/channels/StreamSinkChannel;
invokespecial org.springframework.http.server.reactive.UndertowServerHttpResponse$ResponseBodyProcessor.<init>:(Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;Lorg/xnio/channels/StreamSinkChannel;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
private reactor.core.publisher.Mono lambda$0(java.nio.file.Path, long, long);
descriptor: (Ljava/nio/file/Path;JJ)Lreactor/core/publisher/Mono;
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=6, locals=6, args_size=4
start local 0 0: aload 0
aload 1
lload 2
lload 4
invokedynamic get(Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;Ljava/nio/file/Path;JJ)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;
org/springframework/http/server/reactive/UndertowServerHttpResponse.lambda$1(Ljava/nio/file/Path;JJ)Lreactor/core/publisher/Mono; (7)
()Lreactor/core/publisher/Mono;
invokestatic reactor.core.publisher.Mono.defer:(Ljava/util/function/Supplier;)Lreactor/core/publisher/Mono;
1: areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
private reactor.core.publisher.Mono lambda$1(java.nio.file.Path, long, long);
descriptor: (Ljava/nio/file/Path;JJ)Lreactor/core/publisher/Mono;
flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
Code:
stack=6, locals=10, args_size=4
start local 0 0: aconst_null
astore 6
aconst_null
astore 7
1: aload 1
iconst_1
anewarray java.nio.file.OpenOption
dup
iconst_0
getstatic java.nio.file.StandardOpenOption.READ:Ljava/nio/file/StandardOpenOption;
aastore
invokestatic java.nio.channels.FileChannel.open:(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/FileChannel;
astore 8
start local 8 2: aload 0
getfield org.springframework.http.server.reactive.UndertowServerHttpResponse.exchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.getResponseChannel:()Lorg/xnio/channels/StreamSinkChannel;
astore 9
start local 9 3: aload 9
aload 8
lload 2
lload 4
invokestatic org.xnio.channels.Channels.transferBlocking:(Lorg/xnio/channels/StreamSinkChannel;Ljava/nio/channels/FileChannel;JJ)V
4: invokestatic reactor.core.publisher.Mono.empty:()Lreactor/core/publisher/Mono;
5: aload 8
ifnull 6
aload 8
invokevirtual java.nio.channels.FileChannel.close:()V
6: StackMap locals: org.springframework.http.server.reactive.UndertowServerHttpResponse java.nio.file.Path long long java.lang.Throwable java.lang.Throwable java.nio.channels.FileChannel org.xnio.channels.StreamSinkChannel
StackMap stack: reactor.core.publisher.Mono
areturn
end local 9 StackMap locals: org.springframework.http.server.reactive.UndertowServerHttpResponse java.nio.file.Path long long java.lang.Throwable java.lang.Throwable java.nio.channels.FileChannel
StackMap stack: java.lang.Throwable
7: astore 6
8: aload 8
ifnull 9
aload 8
invokevirtual java.nio.channels.FileChannel.close:()V
end local 8 StackMap locals:
StackMap stack:
9: aload 6
athrow
StackMap locals:
StackMap stack: java.lang.Throwable
10: astore 7
aload 6
ifnonnull 11
aload 7
astore 6
goto 12
StackMap locals:
StackMap stack:
11: aload 6
aload 7
if_acmpeq 12
aload 6
aload 7
invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
StackMap locals:
StackMap stack:
12: aload 6
athrow
13: StackMap locals: org.springframework.http.server.reactive.UndertowServerHttpResponse java.nio.file.Path long long
StackMap stack: java.io.IOException
astore 6
start local 6 14: aload 6
invokestatic reactor.core.publisher.Mono.error:(Ljava/lang/Throwable;)Lreactor/core/publisher/Mono;
areturn
end local 6 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lorg/springframework/http/server/reactive/UndertowServerHttpResponse;
2 9 8 source Ljava/nio/channels/FileChannel;
3 7 9 destination Lorg/xnio/channels/StreamSinkChannel;
14 15 6 ex Ljava/io/IOException;
Exception table:
from to target type
2 5 7 any
1 6 10 any
7 10 10 any
0 6 13 Class java.io.IOException
7 13 13 Class java.io.IOException
}
SourceFile: "UndertowServerHttpResponse.java"
NestMembers:
org.springframework.http.server.reactive.UndertowServerHttpResponse$ResponseBodyFlushProcessor org.springframework.http.server.reactive.UndertowServerHttpResponse$ResponseBodyProcessor
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
private ResponseBodyFlushProcessor = org.springframework.http.server.reactive.UndertowServerHttpResponse$ResponseBodyFlushProcessor of org.springframework.http.server.reactive.UndertowServerHttpResponse
private ResponseBodyProcessor = org.springframework.http.server.reactive.UndertowServerHttpResponse$ResponseBodyProcessor of org.springframework.http.server.reactive.UndertowServerHttpResponse