public class org.springframework.http.server.reactive.ContextPathCompositeHandler implements org.springframework.http.server.reactive.HttpHandler
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.springframework.http.server.reactive.ContextPathCompositeHandler
super_class: java.lang.Object
{
private final java.util.Map<java.lang.String, org.springframework.http.server.reactive.HttpHandler> handlerMap;
descriptor: Ljava/util/Map;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/String;Lorg/springframework/http/server/reactive/HttpHandler;>;
public void <init>(java.util.Map<java.lang.String, ? extends org.springframework.http.server.reactive.HttpHandler>);
descriptor: (Ljava/util/Map;)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 1
ldc "Handler map must not be empty"
invokestatic org.springframework.util.Assert.notEmpty:(Ljava/util/Map;Ljava/lang/String;)V
2: aload 0
aload 1
invokestatic org.springframework.http.server.reactive.ContextPathCompositeHandler.initHandlers:(Ljava/util/Map;)Ljava/util/Map;
putfield org.springframework.http.server.reactive.ContextPathCompositeHandler.handlerMap:Ljava/util/Map;
3: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/springframework/http/server/reactive/ContextPathCompositeHandler;
0 4 1 handlerMap Ljava/util/Map<Ljava/lang/String;+Lorg/springframework/http/server/reactive/HttpHandler;>;
Signature: (Ljava/util/Map<Ljava/lang/String;+Lorg/springframework/http/server/reactive/HttpHandler;>;)V
MethodParameters:
Name Flags
handlerMap
private static java.util.Map<java.lang.String, org.springframework.http.server.reactive.HttpHandler> initHandlers(java.util.Map<java.lang.String, ? extends org.springframework.http.server.reactive.HttpHandler>);
descriptor: (Ljava/util/Map;)Ljava/util/Map;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokeinterface java.util.Map.keySet:()Ljava/util/Set;
invokedynamic accept()Ljava/util/function/Consumer;
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;)V
org/springframework/http/server/reactive/ContextPathCompositeHandler.assertValidContextPath(Ljava/lang/String;)V (6)
(Ljava/lang/String;)V
invokeinterface java.util.Set.forEach:(Ljava/util/function/Consumer;)V
1: new java.util.LinkedHashMap
dup
aload 0
invokespecial java.util.LinkedHashMap.<init>:(Ljava/util/Map;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 map Ljava/util/Map<Ljava/lang/String;+Lorg/springframework/http/server/reactive/HttpHandler;>;
Signature: (Ljava/util/Map<Ljava/lang/String;+Lorg/springframework/http/server/reactive/HttpHandler;>;)Ljava/util/Map<Ljava/lang/String;Lorg/springframework/http/server/reactive/HttpHandler;>;
MethodParameters:
Name Flags
map
private static void assertValidContextPath(java.lang.String);
descriptor: (Ljava/lang/String;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
ldc "Context path must not be empty"
invokestatic org.springframework.util.Assert.hasText:(Ljava/lang/String;Ljava/lang/String;)V
1: aload 0
ldc "/"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 3
2: return
3: StackMap locals:
StackMap stack:
aload 0
ldc "/"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ldc "Context path must begin with '/'"
invokestatic org.springframework.util.Assert.isTrue:(ZLjava/lang/String;)V
4: aload 0
ldc "/"
invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
ifeq 5
iconst_0
goto 6
StackMap locals:
StackMap stack:
5: iconst_1
StackMap locals:
StackMap stack: int
6: ldc "Context path must not end with '/'"
invokestatic org.springframework.util.Assert.isTrue:(ZLjava/lang/String;)V
7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 contextPath Ljava/lang/String;
MethodParameters:
Name Flags
contextPath
public reactor.core.publisher.Mono<java.lang.Void> handle(org.springframework.http.server.reactive.ServerHttpRequest, org.springframework.http.server.reactive.ServerHttpResponse);
descriptor: (Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;)Lreactor/core/publisher/Mono;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokeinterface org.springframework.http.server.reactive.ServerHttpRequest.getPath:()Lorg/springframework/http/server/RequestPath;
invokeinterface org.springframework.http.server.RequestPath.pathWithinApplication:()Lorg/springframework/http/server/PathContainer;
invokeinterface org.springframework.http.server.PathContainer.value:()Ljava/lang/String;
astore 3
start local 3 1: aload 0
getfield org.springframework.http.server.reactive.ContextPathCompositeHandler.handlerMap:Ljava/util/Map;
invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
invokeinterface java.util.Set.stream:()Ljava/util/stream/Stream;
2: aload 3
invokedynamic test(Ljava/lang/String;)Ljava/util/function/Predicate;
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;)Z
org/springframework/http/server/reactive/ContextPathCompositeHandler.lambda$1(Ljava/lang/String;Ljava/util/Map$Entry;)Z (6)
(Ljava/util/Map$Entry;)Z
invokeinterface java.util.stream.Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
3: invokeinterface java.util.stream.Stream.findFirst:()Ljava/util/Optional;
4: aload 1
aload 2
invokedynamic apply(Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;)Ljava/util/function/Function;
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;)Ljava/lang/Object;
org/springframework/http/server/reactive/ContextPathCompositeHandler.lambda$2(Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;Ljava/util/Map$Entry;)Lreactor/core/publisher/Mono; (6)
(Ljava/util/Map$Entry;)Lreactor/core/publisher/Mono;
invokevirtual java.util.Optional.map:(Ljava/util/function/Function;)Ljava/util/Optional;
5: aload 2
invokedynamic get(Lorg/springframework/http/server/reactive/ServerHttpResponse;)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/ContextPathCompositeHandler.lambda$3(Lorg/springframework/http/server/reactive/ServerHttpResponse;)Lreactor/core/publisher/Mono; (6)
()Lreactor/core/publisher/Mono;
invokevirtual java.util.Optional.orElseGet:(Ljava/util/function/Supplier;)Ljava/lang/Object;
checkcast reactor.core.publisher.Mono
6: areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lorg/springframework/http/server/reactive/ContextPathCompositeHandler;
0 7 1 request Lorg/springframework/http/server/reactive/ServerHttpRequest;
0 7 2 response Lorg/springframework/http/server/reactive/ServerHttpResponse;
1 7 3 path Ljava/lang/String;
Signature: (Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;)Lreactor/core/publisher/Mono<Ljava/lang/Void;>;
MethodParameters:
Name Flags
request
response
private static boolean lambda$1(java.lang.String, java.util.Map$Entry);
descriptor: (Ljava/lang/String;Ljava/util/Map$Entry;)Z
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=2, args_size=2
start local 1 0: aload 0
aload 1
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ireturn
end local 1 LocalVariableTable:
Start End Slot Name Signature
0 1 1 entry Ljava/util/Map$Entry<Ljava/lang/String;Lorg/springframework/http/server/reactive/HttpHandler;>;
private static reactor.core.publisher.Mono lambda$2(org.springframework.http.server.reactive.ServerHttpRequest, org.springframework.http.server.reactive.ServerHttpResponse, java.util.Map$Entry);
descriptor: (Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;Ljava/util/Map$Entry;)Lreactor/core/publisher/Mono;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=5, args_size=3
start local 2 0: new java.lang.StringBuilder
dup
aload 0
invokeinterface org.springframework.http.server.reactive.ServerHttpRequest.getPath:()Lorg/springframework/http/server/RequestPath;
invokeinterface org.springframework.http.server.RequestPath.contextPath:()Lorg/springframework/http/server/PathContainer;
invokeinterface org.springframework.http.server.PathContainer.value:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.String
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 3
start local 3 1: aload 0
invokeinterface org.springframework.http.server.reactive.ServerHttpRequest.mutate:()Lorg/springframework/http/server/reactive/ServerHttpRequest$Builder;
aload 3
invokeinterface org.springframework.http.server.reactive.ServerHttpRequest$Builder.contextPath:(Ljava/lang/String;)Lorg/springframework/http/server/reactive/ServerHttpRequest$Builder;
invokeinterface org.springframework.http.server.reactive.ServerHttpRequest$Builder.build:()Lorg/springframework/http/server/reactive/ServerHttpRequest;
astore 4
start local 4 2: aload 2
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast org.springframework.http.server.reactive.HttpHandler
aload 4
aload 1
invokeinterface org.springframework.http.server.reactive.HttpHandler.handle:(Lorg/springframework/http/server/reactive/ServerHttpRequest;Lorg/springframework/http/server/reactive/ServerHttpResponse;)Lreactor/core/publisher/Mono;
areturn
end local 4 end local 3 end local 2 LocalVariableTable:
Start End Slot Name Signature
0 3 2 entry Ljava/util/Map$Entry<Ljava/lang/String;Lorg/springframework/http/server/reactive/HttpHandler;>;
1 3 3 contextPath Ljava/lang/String;
2 3 4 newRequest Lorg/springframework/http/server/reactive/ServerHttpRequest;
private static reactor.core.publisher.Mono lambda$3(org.springframework.http.server.reactive.ServerHttpResponse);
descriptor: (Lorg/springframework/http/server/reactive/ServerHttpResponse;)Lreactor/core/publisher/Mono;
flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
Code:
stack=2, locals=1, args_size=1
0: aload 0
getstatic org.springframework.http.HttpStatus.NOT_FOUND:Lorg/springframework/http/HttpStatus;
invokeinterface org.springframework.http.server.reactive.ServerHttpResponse.setStatusCode:(Lorg/springframework/http/HttpStatus;)Z
pop
1: aload 0
invokeinterface org.springframework.http.server.reactive.ServerHttpResponse.setComplete:()Lreactor/core/publisher/Mono;
areturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "ContextPathCompositeHandler.java"
InnerClasses:
public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
public abstract Entry = java.util.Map$Entry of java.util.Map
public abstract Builder = org.springframework.http.server.reactive.ServerHttpRequest$Builder of org.springframework.http.server.reactive.ServerHttpRequest