diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java index 4b1b191af..92af7d558 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java @@ -16,10 +16,15 @@ import static org.junit.Assert.assertTrue; import java.io.File; import java.util.Iterator; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; import org.eclipse.lsp4j.SymbolInformation; +import org.eclipse.lsp4j.TextDocumentIdentifier; import org.junit.Before; import org.junit.Test; +import org.springframework.ide.vscode.boot.java.utils.SpringIndexer; +import org.springframework.ide.vscode.commons.java.IJavaProject; import org.springframework.ide.vscode.project.harness.BootJavaLanguageServerHarness; import org.springframework.ide.vscode.project.harness.ProjectsHarness; @@ -29,52 +34,52 @@ import org.springframework.ide.vscode.project.harness.ProjectsHarness; public class RequestMappingSymbolProviderTest { private BootJavaLanguageServerHarness harness; + private SpringIndexer indexer; + private File directory; @Before public void setup() throws Exception { harness = BootJavaLanguageServerHarness.builder().build(); + + harness.intialize(null); + indexer = harness.getServerWrapper().getComponents().getSpringIndexer(); + + directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); + String projectDir = directory.toURI().toString(); + IJavaProject project = harness.getServerWrapper().getComponents().getProjectFinder().find(new TextDocumentIdentifier(projectDir)).get(); + + CompletableFuture initProject = indexer.initializeProject(project); + initProject.get(5, TimeUnit.SECONDS); } @Test public void testSimpleRequestMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertEquals(1, symbols.size()); assertTrue(containsSymbol(symbols, "@/greeting", docUri, 6, 1, 6, 29)); } @Test public void testParentRequestMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/ParentMappingClass.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertEquals(1, symbols.size()); assertTrue(containsSymbol(symbols, "@/parent/greeting -- GET", docUri, 8, 1, 8, 47)); } @Test public void testEmptyPathWithParentRequestMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/ParentMappingClass2.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertEquals(1, symbols.size()); assertTrue(containsSymbol(symbols, "@/parent2 -- GET,POST,DELETE", docUri, 8, 1, 8, 16)); } @Test public void testMultiRequestMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/MultiRequestMappingClass.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertEquals(2, symbols.size()); assertTrue(containsSymbol(symbols, "@/hello1", docUri, 6, 1, 6, 44)); assertTrue(containsSymbol(symbols, "@/hello2", docUri, 6, 1, 6, 44)); @@ -82,81 +87,57 @@ public class RequestMappingSymbolProviderTest { @Test public void testGetMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/getData -- GET", docUri, 12, 1, 12, 24)); } @Test public void testDeleteMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/deleteData -- DELETE",docUri, 20, 1, 20, 30)); } @Test public void testPostMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/postData -- POST", docUri, 24, 1, 24, 26)); } @Test public void testPutMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/putData -- PUT", docUri, 16, 1, 16, 24)); } @Test public void testPatchMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/patchData -- PATCH", docUri, 28, 1, 28, 28)); } @Test public void testGetRequestMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/getHello -- GET", docUri, 32, 1, 32, 61)); } @Test public void testMultiRequestMethodMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertTrue(containsSymbol(symbols, "@/postAndPutHello -- POST,PUT", docUri, 36, 1, 36, 76)); } @Test public void testMediaTypes() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMappingMediaTypes.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertEquals(7, symbols.size()); assertTrue(containsSymbol(symbols, "@/consume1 -- HEAD - Accept: testconsume", docUri, 8, 1, 8, 90)); assertTrue(containsSymbol(symbols, "@/consume2 - Accept: text/plain", docUri, 13, 1, 13, 73)); @@ -167,8 +148,6 @@ public class RequestMappingSymbolProviderTest { assertTrue(containsSymbol(symbols, "@/everything - Accept: application/json,text/plain,testconsume - Content-Type: application/json", docUri, 38, 1, 38, 170)); } - - private boolean containsSymbol(List symbols, String name, String uri, int startLine, int startCHaracter, int endLine, int endCharacter) { for (Iterator iterator = symbols.iterator(); iterator.hasNext();) { SymbolInformation symbol = iterator.next(); @@ -185,8 +164,4 @@ public class RequestMappingSymbolProviderTest { return false; } - - private List getSymbols(String docUri) { - return harness.getServerWrapper().getComponents().getSpringIndexer().getSymbols(docUri); - } } diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/WebFluxCodeLensProviderTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/WebFluxCodeLensProviderTest.java index daf21949a..4abd30de2 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/WebFluxCodeLensProviderTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/WebFluxCodeLensProviderTest.java @@ -16,12 +16,17 @@ import static org.junit.Assert.assertTrue; import java.io.File; import java.net.URI; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; import org.eclipse.lsp4j.CodeLens; import org.eclipse.lsp4j.Command; import org.eclipse.lsp4j.Range; +import org.eclipse.lsp4j.TextDocumentIdentifier; import org.junit.Before; import org.junit.Test; +import org.springframework.ide.vscode.boot.java.utils.SpringIndexer; +import org.springframework.ide.vscode.commons.java.IJavaProject; import org.springframework.ide.vscode.commons.util.text.LanguageId; import org.springframework.ide.vscode.languageserver.testharness.TextDocumentInfo; import org.springframework.ide.vscode.project.harness.BootJavaLanguageServerHarness; @@ -34,17 +39,26 @@ import org.springframework.ide.vscode.project.harness.ProjectsHarness; public class WebFluxCodeLensProviderTest { private BootJavaLanguageServerHarness harness; + private SpringIndexer indexer; + private File directory; @Before public void setup() throws Exception { harness = BootJavaLanguageServerHarness.builder().build(); + + harness.intialize(null); + indexer = harness.getServerWrapper().getComponents().getSpringIndexer(); + + directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); + String projectDir = directory.toURI().toString(); + IJavaProject project = harness.getServerWrapper().getComponents().getProjectFinder().find(new TextDocumentIdentifier(projectDir)).get(); + + CompletableFuture initProject = indexer.initializeProject(project); + initProject.get(5, TimeUnit.SECONDS); } @Test public void testRoutesCodeLensesSimpleCase() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/QuoteHandler.java").toUri().toString(); TextDocumentInfo doc = harness.getOrReadFile(new File(new URI(docUri)), LanguageId.JAVA.toString()); TextDocumentInfo openedDoc = harness.openDocument(doc); @@ -61,9 +75,6 @@ public class WebFluxCodeLensProviderTest { @Test public void testRoutesCodeLensesNestedRoutes1() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/PersonHandler1.java").toUri().toString(); TextDocumentInfo doc = harness.getOrReadFile(new File(new URI(docUri)), LanguageId.JAVA.toString()); TextDocumentInfo openedDoc = harness.openDocument(doc); @@ -79,9 +90,6 @@ public class WebFluxCodeLensProviderTest { @Test public void testRoutesCodeLensesNestedRoutes2() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/PersonHandler2.java").toUri().toString(); TextDocumentInfo doc = harness.getOrReadFile(new File(new URI(docUri)), LanguageId.JAVA.toString()); TextDocumentInfo openedDoc = harness.openDocument(doc); @@ -97,9 +105,6 @@ public class WebFluxCodeLensProviderTest { @Test public void testRoutesCodeLensesNestedRoutes3() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/PersonHandler3.java").toUri().toString(); TextDocumentInfo doc = harness.getOrReadFile(new File(new URI(docUri)), LanguageId.JAVA.toString()); TextDocumentInfo openedDoc = harness.openDocument(doc); diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/WebFluxMappingSymbolProviderTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/WebFluxMappingSymbolProviderTest.java index d42fe24c8..794d2fe1a 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/WebFluxMappingSymbolProviderTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/WebFluxMappingSymbolProviderTest.java @@ -17,13 +17,18 @@ import java.io.File; import java.util.Arrays; import java.util.Iterator; import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import org.eclipse.lsp4j.SymbolInformation; +import org.eclipse.lsp4j.TextDocumentIdentifier; import org.junit.Before; import org.junit.Test; import org.springframework.ide.vscode.boot.java.handlers.SymbolAddOnInformation; import org.springframework.ide.vscode.boot.java.requestmapping.WebfluxHandlerInformation; +import org.springframework.ide.vscode.boot.java.utils.SpringIndexer; +import org.springframework.ide.vscode.commons.java.IJavaProject; import org.springframework.ide.vscode.commons.util.Assert; import org.springframework.ide.vscode.project.harness.BootJavaLanguageServerHarness; import org.springframework.ide.vscode.project.harness.ProjectsHarness; @@ -34,41 +39,47 @@ import org.springframework.ide.vscode.project.harness.ProjectsHarness; public class WebFluxMappingSymbolProviderTest { private BootJavaLanguageServerHarness harness; + private SpringIndexer indexer; + private File directory; @Before public void setup() throws Exception { harness = BootJavaLanguageServerHarness.builder().build(); + + harness.intialize(null); + indexer = harness.getServerWrapper().getComponents().getSpringIndexer(); + + directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); + String projectDir = directory.toURI().toString(); + IJavaProject project = harness.getServerWrapper().getComponents().getProjectFinder().find(new TextDocumentIdentifier(projectDir)).get(); + + CompletableFuture initProject = indexer.initializeProject(project); + initProject.get(5, TimeUnit.SECONDS); } @Test public void testSimpleRequestMappingSymbol() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/UserController.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertEquals(4, symbols.size()); assertTrue(containsSymbol(symbols, "@/users - Content-Type: application/json", docUri, 13, 1, 13, 74)); assertTrue(containsSymbol(symbols, "@/users/{username} - Content-Type: application/json", docUri, 18, 1, 18, 85)); - List addons = getAdditionalInformation(docUri); + List addons = indexer.getAdditonalInformation(docUri); Assert.noElements(addons); } @Test public void testRoutesMappingSymbols() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/QuoteRouter.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertEquals(6, symbols.size()); assertTrue(containsSymbol(symbols, "@/hello -- GET - Accept: text/plain", docUri, 22, 5, 22, 70)); assertTrue(containsSymbol(symbols, "@/echo -- POST - Accept: text/plain - Content-Type: text/plain", docUri, 23, 5, 23, 101)); assertTrue(containsSymbol(symbols, "@/quotes -- GET - Accept: application/json", docUri, 24, 5, 24, 86)); assertTrue(containsSymbol(symbols, "@/quotes -- GET - Accept: application/stream+json", docUri, 25, 5, 25, 94)); - List addons = getAdditionalInformation(docUri); + List addons = indexer.getAdditonalInformation(docUri); assertEquals(8, addons.size()); WebfluxHandlerInformation handlerInfo1 = getWebfluxHandler(addons, "/hello", "GET").get(0); @@ -106,17 +117,14 @@ public class WebFluxMappingSymbolProviderTest { @Test public void testNestedRoutesMappingSymbols1() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/NestedRouter1.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertEquals(5, symbols.size()); assertTrue(containsSymbol(symbols, "@/person/{id} -- GET - Accept: application/json", docUri, 27, 6, 27, 45)); assertTrue(containsSymbol(symbols, "@/person/ -- POST - Content-Type: application/json", docUri, 29, 6, 29, 83)); assertTrue(containsSymbol(symbols, "@/person -- GET - Accept: application/json", docUri, 28, 7, 28, 60)); - List addons = getAdditionalInformation(docUri); + List addons = indexer.getAdditonalInformation(docUri); assertEquals(6, addons.size()); WebfluxHandlerInformation handlerInfo1 = getWebfluxHandler(addons, "/person/{id}", "GET").get(0); @@ -146,17 +154,14 @@ public class WebFluxMappingSymbolProviderTest { @Test public void testNestedRoutesMappingSymbols2() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/NestedRouter2.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertEquals(5, symbols.size()); assertTrue(containsSymbol(symbols, "@/person/{id} -- GET - Accept: application/json", docUri, 29, 6, 29, 45)); assertTrue(containsSymbol(symbols, "@/ -- POST - Accept: application/json - Content-Type: application/json,application/pdf", docUri, 31, 6, 31, 117)); assertTrue(containsSymbol(symbols, "@/person -- GET,HEAD - Accept: text/plain,application/json", docUri, 30, 7, 30, 113)); - List addons = getAdditionalInformation(docUri); + List addons = indexer.getAdditonalInformation(docUri); assertEquals(6, addons.size()); WebfluxHandlerInformation handlerInfo1 = getWebfluxHandler(addons, "/person/{id}", "GET").get(0); @@ -186,11 +191,8 @@ public class WebFluxMappingSymbolProviderTest { @Test public void testNestedRoutesMappingSymbols3() throws Exception { - harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()); - String docUri = directory.toPath().resolve("src/main/java/org/test/NestedRouter3.java").toUri().toString(); - List symbols = getSymbols(docUri); + List symbols = indexer.getSymbols(docUri); assertEquals(8, symbols.size()); assertTrue(containsSymbol(symbols, "@/person/sub1/sub2/{id} -- GET - Accept: application/json", docUri, 29, 7, 29, 46)); @@ -200,7 +202,7 @@ public class WebFluxMappingSymbolProviderTest { assertTrue(containsSymbol(symbols, "@/person/ -- POST - Content-Type: application/json", docUri, 34, 5, 34, 82)); assertTrue(containsSymbol(symbols, "@/nestedDelete -- DELETE", docUri, 35, 42, 35, 93)); - List addons = getAdditionalInformation(docUri); + List addons = indexer.getAdditonalInformation(docUri); assertEquals(12, addons.size()); WebfluxHandlerInformation handlerInfo1 = getWebfluxHandler(addons, "/person/sub1/sub2/{id}", "GET").get(0); @@ -269,14 +271,6 @@ public class WebFluxMappingSymbolProviderTest { return false; } - private List getSymbols(String docUri) { - return harness.getServerWrapper().getComponents().getSpringIndexer().getSymbols(docUri); - } - - private List getAdditionalInformation(String docUri) { - return harness.getServerWrapper().getComponents().getSpringIndexer().getAdditonalInformation(docUri); - } - private List getWebfluxHandler(List addons, String path, String httpMethod) { return addons.stream() .filter((obj) -> obj instanceof WebfluxHandlerInformation)