diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SourceLinks.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SourceLinks.java index fedafc831..e4f0ddd97 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SourceLinks.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/SourceLinks.java @@ -62,10 +62,7 @@ public class SourceLinks { Optional sourceResource = project.getClasspath().getSourceFolders().stream() .map(r -> Paths.get(r).resolve(path)).filter(r -> Files.exists(r)).findFirst(); if (sourceResource.isPresent()) { - StringBuilder sb = new StringBuilder(); - sb.append("file://"); - sb.append(sourceResource.get().toString()); - return Optional.of(sb.toString()); + return Optional.of(sourceResource.get().toUri().toString()); } return Optional.empty(); } @@ -100,7 +97,7 @@ public class SourceLinks { query.append("="); query.append(project.getElementName()); query.append("/"); - String convertedPath = String.join("\\/", jarFile.toString().split(File.separator)); + String convertedPath = String.join("\\/", jarFile.toString().replaceAll("\\\\", "/").split("/")); query.append(convertedPath); query.append("<"); query.append(packageName); diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/autowired/test/AutowiredHoverProviderTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/autowired/test/AutowiredHoverProviderTest.java index 1048b8da1..eef2e262b 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/autowired/test/AutowiredHoverProviderTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/autowired/test/AutowiredHoverProviderTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,6 +12,7 @@ package org.springframework.ide.vscode.boot.java.autowired.test; import static org.junit.Assert.assertTrue; +import java.nio.file.Paths; import java.time.Duration; import org.junit.Before; @@ -89,7 +90,7 @@ public class AutowiredHoverProviderTest { .add(LiveBean.builder() .id("dependencyA") .type("com.example.DependencyA") - .fileResource(harness.getOutputFolder() + "/com/example/DependencyA.class") + .fileResource(harness.getOutputFolder() + Paths.get("/com/example/DependencyA.class").toString()) .build() ) .add(LiveBean.builder() @@ -131,7 +132,7 @@ public class AutowiredHoverProviderTest { "\n" + "- Bean: dependencyA \n" + " Type: `com.example.DependencyA` \n" + - " Resource: `com/example/DependencyA.class`\n" + + " Resource: `" + Paths.get("com/example/DependencyA.class") + "`\n" + "- Bean: dependencyB \n" + " Type: `com.example.DependencyB` \n" + " Resource: `com/example/DependencyB.class`\n" diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerBeansTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerBeansTest.java index 2e5268eb3..46156164e 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerBeansTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerBeansTest.java @@ -50,8 +50,8 @@ public class SpringIndexerBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - indexer.assertDocumentSymbols(uriPrefix + "/src/main/java/org/test/SimpleConfiguration.java", + String docUri = directory.toPath().resolve("src/main/java/org/test/SimpleConfiguration.java").toUri().toString(); + indexer.assertDocumentSymbols(docUri, symbol("@Configuration", "@+ 'simpleConfiguration' (@Configuration <: @Component) SimpleConfiguration"), symbol("@Bean", "@+ 'simpleBean' (@Bean) BeanClass") ); @@ -62,8 +62,7 @@ public class SpringIndexerBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - String docUri = uriPrefix + "/src/main/java/org/test/SpecialConfiguration.java"; + String docUri = directory.toPath().resolve("src/main/java/org/test/SpecialConfiguration.java").toUri().toString(); indexer.assertDocumentSymbols(docUri, symbol("@Configuration", "@+ 'specialConfiguration' (@Configuration <: @Component) SpecialConfiguration"), @@ -92,8 +91,8 @@ public class SpringIndexerBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - indexer.assertDocumentSymbols(uriPrefix + "/src/main/java/org/test/SimpleComponent.java", + String docUri = directory.toPath().resolve("src/main/java/org/test/SimpleComponent.java").toUri().toString(); + indexer.assertDocumentSymbols(docUri, symbol("@Component", "@+ 'simpleComponent' (@Component) SimpleComponent") ); } @@ -103,8 +102,7 @@ public class SpringIndexerBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - String docUri = uriPrefix + "/src/main/java/org/test/SimpleController.java"; + String docUri = directory.toPath().resolve("src/main/java/org/test/SimpleController.java").toUri().toString(); indexer.assertDocumentSymbols(docUri, symbol("@Controller", "@+ 'simpleController' (@Controller <: @Component) SimpleController") ); @@ -115,8 +113,7 @@ public class SpringIndexerBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - String docUri = uriPrefix + "/src/main/java/org/test/SimpleRestController.java"; + String docUri = directory.toPath().resolve("src/main/java/org/test/SimpleRestController.java").toUri().toString(); indexer.assertDocumentSymbols(docUri, symbol("@RestController", "@+ 'simpleRestController' (@RestController <: @Controller, @Component) SimpleRestController") ); diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerFunctionBeansTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerFunctionBeansTest.java index e883d476f..32866b260 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerFunctionBeansTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/beans/test/SpringIndexerFunctionBeansTest.java @@ -50,8 +50,8 @@ public class SpringIndexerFunctionBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - indexer.assertDocumentSymbols(uriPrefix + "/src/main/java/org/test/FunctionClass.java", + String docUri = directory.toPath().resolve("src/main/java/org/test/FunctionClass.java").toUri().toString(); + indexer.assertDocumentSymbols(docUri, symbol("@Configuration", "@+ 'functionClass' (@Configuration <: @Component) FunctionClass"), symbol("@Bean", "@> 'uppercase' (@Bean) Function") ); @@ -63,8 +63,8 @@ public class SpringIndexerFunctionBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - indexer.assertDocumentSymbols(uriPrefix + "/src/main/java/org/test/ScannedFunctionClass.java", + String docUri = directory.toPath().resolve("src/main/java/org/test/ScannedFunctionClass.java").toUri().toString(); + indexer.assertDocumentSymbols(docUri, symbol("ScannedFunctionClass", "@> 'scannedFunctionClass' Function") ); } @@ -75,8 +75,8 @@ public class SpringIndexerFunctionBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - indexer.assertDocumentSymbols(uriPrefix + "/src/main/java/org/test/FunctionFromSpecializedClass.java", + String docUri = directory.toPath().resolve("src/main/java/org/test/FunctionFromSpecializedClass.java").toUri().toString(); + indexer.assertDocumentSymbols(docUri, symbol("FunctionFromSpecializedClass", "@> 'functionFromSpecializedClass' Function") ); } @@ -87,8 +87,8 @@ public class SpringIndexerFunctionBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - indexer.assertDocumentSymbols(uriPrefix + "/src/main/java/org/test/FunctionFromSpecializedInterface.java", + String docUri = directory.toPath().resolve("src/main/java/org/test/FunctionFromSpecializedInterface.java").toUri().toString(); + indexer.assertDocumentSymbols(docUri, symbol("FunctionFromSpecializedInterface", "@> 'functionFromSpecializedInterface' Function") ); } @@ -99,8 +99,8 @@ public class SpringIndexerFunctionBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - indexer.assertDocumentSymbols(uriPrefix + "/src/main/java/org/test/SpecializedFunctionClass.java"); + String docUri = directory.toPath().resolve("src/main/java/org/test/SpecializedFunctionClass.java").toUri().toString(); + indexer.assertDocumentSymbols(docUri); } @Test @@ -109,8 +109,8 @@ public class SpringIndexerFunctionBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - indexer.assertDocumentSymbols(uriPrefix + "/src/main/java/org/test/SpecializedFunctionInterface.java"); + String docUri = directory.toPath().resolve("src/main/java/org/test/SpecializedFunctionInterface.java").toUri().toString(); + indexer.assertDocumentSymbols(docUri); } @Test @@ -119,8 +119,8 @@ public class SpringIndexerFunctionBeansTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-beans/").toURI()); indexer.initialize(indexer.wsFolder(directory)); - String uriPrefix = "file://" + directory.getAbsolutePath(); - indexer.assertDocumentSymbols(uriPrefix + "/src/main/java/org/test/LoopedFunctionClass.java"); + String docUri = directory.toPath().resolve("src/main/java/org/test/LoopedFunctionClass.java").toUri().toString(); + indexer.assertDocumentSymbols(docUri); } //////////////////////////////// diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/conditionals/test/ConditionalsLiveHoverTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/conditionals/test/ConditionalsLiveHoverTest.java index 0c9a755f5..db40a7981 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/conditionals/test/ConditionalsLiveHoverTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/conditionals/test/ConditionalsLiveHoverTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -47,8 +47,8 @@ public class ConditionalsLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() - + "/src/main/java/example/ConditionalOnMissingBeanConfig.java"; + String docUri = directory.toPath().resolve("src/main/java/example/ConditionalOnMissingBeanConfig.java").toUri() + .toString(); harness.intialize(directory); @@ -64,7 +64,8 @@ public class ConditionalsLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/ConditionalOnBeanConfig.java"; + String docUri = directory.toPath().resolve("src/main/java/example/ConditionalOnBeanConfig.java").toUri() + .toString(); // Build a mock running boot app mockAppProvider.builder().isSpringBootApp(true).port("1111").processId("22022").host("cfapps.io") @@ -77,9 +78,8 @@ public class ConditionalsLiveHoverTest { Editor editor = harness.newEditorFromFileUri(docUri, LanguageId.JAVA); editor.assertHoverContains("@ConditionalOnBean", - "@ConditionalOnBean (types: example.Hello; SearchStrategy: all) found bean 'missing'\n" + - "\n" + - "Process [PID=22022, name=`test-conditionals-live-hover`]"); + "@ConditionalOnBean (types: example.Hello; SearchStrategy: all) found bean 'missing'\n" + "\n" + + "Process [PID=22022, name=`test-conditionals-live-hover`]"); } @Test @@ -87,8 +87,8 @@ public class ConditionalsLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() - + "/src/main/java/example/ConditionalOnMissingBeanConfig.java"; + String docUri = directory.toPath().resolve("src/main/java/example/ConditionalOnMissingBeanConfig.java").toUri() + .toString(); // Build a mock running boot app mockAppProvider.builder().isSpringBootApp(true).port("1111").processId("22022").host("cfapps.io") @@ -100,9 +100,9 @@ public class ConditionalsLiveHoverTest { harness.intialize(directory); Editor editor = harness.newEditorFromFileUri(docUri, LanguageId.JAVA); - editor.assertHoverContains("@ConditionalOnMissingBean", "@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\n"+ - "\n" + - "Process [PID=22022, name=`test-conditionals-live-hover`]"); + editor.assertHoverContains("@ConditionalOnMissingBean", + "@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\n" + "\n" + + "Process [PID=22022, name=`test-conditionals-live-hover`]"); } @@ -111,7 +111,8 @@ public class ConditionalsLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/MultipleConditionals.java"; + String docUri = directory.toPath().resolve("src/main/java/example/MultipleConditionals.java").toUri() + .toString(); // Build a mock running boot app mockAppProvider.builder().isSpringBootApp(true).port("1111").processId("22022").host("cfapps.io") @@ -124,26 +125,24 @@ public class ConditionalsLiveHoverTest { Editor editor = harness.newEditorFromFileUri(docUri, LanguageId.JAVA); - editor.assertHoverContains("@ConditionalOnBean", "@ConditionalOnBean (types: example.Hello; SearchStrategy: all) found beans 'hi', 'missing'\n" + - "\n" + - "Process [PID=22022, name=`test-conditionals-live-hover`]"); + editor.assertHoverContains("@ConditionalOnBean", + "@ConditionalOnBean (types: example.Hello; SearchStrategy: all) found beans 'hi', 'missing'\n" + "\n" + + "Process [PID=22022, name=`test-conditionals-live-hover`]"); - editor.assertHoverContains("@ConditionalOnWebApplication", "@ConditionalOnWebApplication (required) found StandardServletEnvironment\n"+ - "\n" + - "Process [PID=22022, name=`test-conditionals-live-hover`]"); + editor.assertHoverContains("@ConditionalOnWebApplication", + "@ConditionalOnWebApplication (required) found StandardServletEnvironment\n" + "\n" + + "Process [PID=22022, name=`test-conditionals-live-hover`]"); editor.assertHoverContains("@ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)", - "@ConditionalOnJava (1.8 or newer) found 1.8\n" + - "\n" + - "Process [PID=22022, name=`test-conditionals-live-hover`]"); + "@ConditionalOnJava (1.8 or newer) found 1.8\n" + "\n" + + "Process [PID=22022, name=`test-conditionals-live-hover`]"); - editor.assertHoverContains("@ConditionalOnMissingClass", "@ConditionalOnClass found required class; @ConditionalOnMissingClass did not find unwanted class\n" + - "\n" + - "Process [PID=22022, name=`test-conditionals-live-hover`]"); + editor.assertHoverContains("@ConditionalOnMissingClass", + "@ConditionalOnClass found required class; @ConditionalOnMissingClass did not find unwanted class\n" + + "\n" + "Process [PID=22022, name=`test-conditionals-live-hover`]"); - editor.assertHoverContains("@ConditionalOnExpression", "@ConditionalOnExpression (#{true}) resulted in true\n" + - "\n" + - "Process [PID=22022, name=`test-conditionals-live-hover`]"); + editor.assertHoverContains("@ConditionalOnExpression", "@ConditionalOnExpression (#{true}) resulted in true\n" + + "\n" + "Process [PID=22022, name=`test-conditionals-live-hover`]"); } @Test @@ -152,8 +151,8 @@ public class ConditionalsLiveHoverTest { // Test that live hover shows information for multiple app instances File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() - + "/src/main/java/example/ConditionalOnMissingBeanConfig.java"; + String docUri = directory.toPath().resolve("src/main/java/example/ConditionalOnMissingBeanConfig.java").toUri() + .toString(); // Build a mock running boot app mockAppProvider.builder().isSpringBootApp(true).port("1000").processId("70000").host("cfapps.io") @@ -178,22 +177,13 @@ public class ConditionalsLiveHoverTest { Editor editor = harness.newEditorFromFileUri(docUri, LanguageId.JAVA); - - editor.assertHoverContains("@ConditionalOnMissingBean", "@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\n" + - "\n" + - "Process [PID=70000, name=`test-conditionals-live-hover`]\n" + - "\n" + - "---\n" + - "\n" + - "@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\n" + - "\n" + - "Process [PID=80000, name=`test-conditionals-live-hover`]\n" + - "\n" + - "---\n" + - "\n" + - "@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\n" + - "\n" + - "Process [PID=90000, name=`test-conditionals-live-hover`]"); + editor.assertHoverContains("@ConditionalOnMissingBean", + "@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\n" + "\n" + + "Process [PID=70000, name=`test-conditionals-live-hover`]\n" + "\n" + "---\n" + "\n" + + "@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\n" + + "\n" + "Process [PID=80000, name=`test-conditionals-live-hover`]\n" + "\n" + "---\n" + "\n" + + "@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\n" + + "\n" + "Process [PID=90000, name=`test-conditionals-live-hover`]"); } @@ -201,19 +191,20 @@ public class ConditionalsLiveHoverTest { public void testMultipleConditionalsSameMethod() throws Exception { // Tests something like this: -// @Bean -// @ConditionalOnBean -// @ConditionalOnWebApplication -// @ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT) -// @ConditionalOnMissingClass -// @ConditionalOnExpression -// public Hello hi() { -// return null; -// } + // @Bean + // @ConditionalOnBean + // @ConditionalOnWebApplication + // @ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT) + // @ConditionalOnMissingClass + // @ConditionalOnExpression + // public Hello hi() { + // return null; + // } File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/MultipleConditionals.java"; + String docUri = directory.toPath().resolve("src/main/java/example/MultipleConditionals.java").toUri() + .toString(); // Build a mock running boot app mockAppProvider.builder().isSpringBootApp(true).port("1000").processId("70000").host("cfapps.io") @@ -226,7 +217,8 @@ public class ConditionalsLiveHoverTest { Editor editor = harness.newEditorFromFileUri(docUri, LanguageId.JAVA); - // IMPORTANT: test EXACT text to ensure that multiple conditionals on the same method do not show + // IMPORTANT: test EXACT text to ensure that multiple conditionals on the same + // method do not show // up while // hovering over only one of the conditional annotations editor.assertHoverExactText("@ConditionalOnBean", @@ -238,7 +230,8 @@ public class ConditionalsLiveHoverTest { + "Process [PID=70000, name=`test-conditionals-live-hover`]"); editor.assertHoverExactText("@ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)", - "@ConditionalOnJava (1.8 or newer) found 1.8\n" + "\n" + "Process [PID=70000, name=`test-conditionals-live-hover`]"); + "@ConditionalOnJava (1.8 or newer) found 1.8\n" + "\n" + + "Process [PID=70000, name=`test-conditionals-live-hover`]"); editor.assertHoverExactText("@ConditionalOnMissingClass", "@ConditionalOnClass found required class; @ConditionalOnMissingClass did not find unwanted class\n" @@ -258,8 +251,8 @@ public class ConditionalsLiveHoverTest { // and not any of the other ones File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() - + "/src/main/java/example/MultipleConditionalsPT152535713.java"; + String docUri = directory.toPath().resolve("src/main/java/example/MultipleConditionalsPT152535713.java").toUri() + .toString(); // Build a mock running boot app mockAppProvider.builder().isSpringBootApp(true).port("1000").processId("70000").host("cfapps.io") @@ -277,7 +270,8 @@ public class ConditionalsLiveHoverTest { + "Process [PID=70000, name=`test-conditionals-live-hover`]"); editor.assertHoverExactText("@ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)", - "@ConditionalOnJava (1.8 or newer) found 1.8\n" + "\n" + "Process [PID=70000, name=`test-conditionals-live-hover`]"); + "@ConditionalOnJava (1.8 or newer) found 1.8\n" + "\n" + + "Process [PID=70000, name=`test-conditionals-live-hover`]"); // Test that the hovers dont have extra information of the other conditionals: Hover hover = editor.getHover("@ConditionalOnWebApplication"); @@ -294,7 +288,8 @@ public class ConditionalsLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/MultipleConditionals.java"; + String docUri = directory.toPath().resolve("src/main/java/example/MultipleConditionals.java").toUri() + .toString(); // Build a mock running boot app mockAppProvider.builder().isSpringBootApp(true).port("1111").processId("22022").host("cfapps.io") @@ -305,33 +300,22 @@ public class ConditionalsLiveHoverTest { harness.intialize(directory); - String content = "package example;\n" + - "\n" + - "import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;\n" + - "import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;\n" + - "import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;\n" + - "import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;\n" + - "import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;\n" + - "import org.springframework.boot.autoconfigure.condition.ConditionalOnNotWebApplication;\n" + - "import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;\n" + - "import org.springframework.context.annotation.Bean;\n" + - "import org.springframework.context.annotation.Configuration;\n" + - "\n" + - "@Configuration\n" + - "public class MultipleConditionals {\n" + - "\n" + - " @Bean\n" + - " @ConditionalOnBean\n" + - " @ConditionalOnWebApplication\n" + - " @ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)\n" + - " @ConditionalOnMissingClass\n" + - " @ConditionalOnExpression\n" + - " public Hello hi() {\n" + - " return null;\n" + - " }\n" + - "}"; + String content = "package example;\n" + "\n" + + "import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;\n" + + "import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;\n" + + "import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;\n" + + "import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;\n" + + "import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;\n" + + "import org.springframework.boot.autoconfigure.condition.ConditionalOnNotWebApplication;\n" + + "import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;\n" + + "import org.springframework.context.annotation.Bean;\n" + + "import org.springframework.context.annotation.Configuration;\n" + "\n" + "@Configuration\n" + + "public class MultipleConditionals {\n" + "\n" + " @Bean\n" + " @ConditionalOnBean\n" + + " @ConditionalOnWebApplication\n" + " @ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)\n" + + " @ConditionalOnMissingClass\n" + " @ConditionalOnExpression\n" + " public Hello hi() {\n" + + " return null;\n" + " }\n" + "}"; - Editor editor = harness.newEditor( LanguageId.JAVA, content, docUri); + Editor editor = harness.newEditor(LanguageId.JAVA, content, docUri); editor.assertHighlights("@ConditionalOnBean", "@ConditionalOnWebApplication", "@ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)", "@ConditionalOnMissingClass", @@ -344,39 +328,28 @@ public class ConditionalsLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/MultipleConditionals.java"; + String docUri = directory.toPath().resolve("src/main/java/example/MultipleConditionals.java").toUri() + .toString(); // Build a mock running boot app mockAppProvider.builder().isSpringBootApp(true).port("1111").processId("22022").host("cfapps.io") .processName("test-conditionals-live-hover") - .liveConditionalsJson( - "{\"negativeMatches\": {\n" + - " \"MyConditionalComponent\": {\n" + - " \"notMatched\": [\n" + - " {\n" + - " \"condition\": \"OnClassCondition\",\n" + - " \"message\": \"@ConditionalOnClass did not find required class 'java.lang.String2'\"\n" + - " }\n" + - " ],\n" + - " \"matched\": []\n" + - " }\n" - + "}\n" - + "}") + .liveConditionalsJson("{\"negativeMatches\": {\n" + " \"MyConditionalComponent\": {\n" + + " \"notMatched\": [\n" + " {\n" + + " \"condition\": \"OnClassCondition\",\n" + + " \"message\": \"@ConditionalOnClass did not find required class 'java.lang.String2'\"\n" + + " }\n" + " ],\n" + " \"matched\": []\n" + " }\n" + + "}\n" + "}") .build(); harness.intialize(directory); - String content = "package com.example;\n" + - "\n" + - "import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;\n" + - "import org.springframework.stereotype.Component;\n" + - "\n" + - "@Component\n" + - "@ConditionalOnClass(name=\"java.lang.String2\")\n" + - "public class MyConditionalComponent {\n" + - "}"; + String content = "package com.example;\n" + "\n" + + "import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;\n" + + "import org.springframework.stereotype.Component;\n" + "\n" + "@Component\n" + + "@ConditionalOnClass(name=\"java.lang.String2\")\n" + "public class MyConditionalComponent {\n" + "}"; - Editor editor = harness.newEditor( LanguageId.JAVA, content, docUri); + Editor editor = harness.newEditor(LanguageId.JAVA, content, docUri); editor.assertHighlights("@ConditionalOnClass(name=\"java.lang.String2\")"); @@ -387,43 +360,32 @@ public class ConditionalsLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/MultipleConditionals.java"; + String docUri = directory.toPath().resolve("src/main/java/example/MultipleConditionals.java").toUri() + .toString(); // Build a mock running boot app mockAppProvider.builder().isSpringBootApp(true).port("1111").processId("67950").host("cfapps.io") .processName("test-conditionals-live-hover") - .liveConditionalsJson( - "{\"negativeMatches\": {\n" + - " \"MyConditionalComponent\": {\n" + - " \"notMatched\": [\n" + - " {\n" + - " \"condition\": \"OnClassCondition\",\n" + - " \"message\": \"@ConditionalOnClass did not find required class 'java.lang.String2'\"\n" + - " }\n" + - " ],\n" + - " \"matched\": []\n" + - " }\n" - + "}\n" - + "}") + .liveConditionalsJson("{\"negativeMatches\": {\n" + " \"MyConditionalComponent\": {\n" + + " \"notMatched\": [\n" + " {\n" + + " \"condition\": \"OnClassCondition\",\n" + + " \"message\": \"@ConditionalOnClass did not find required class 'java.lang.String2'\"\n" + + " }\n" + " ],\n" + " \"matched\": []\n" + " }\n" + + "}\n" + "}") .build(); harness.intialize(directory); - String content = "package com.example;\n" + - "\n" + - "import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;\n" + - "import org.springframework.stereotype.Component;\n" + - "\n" + - "@Component\n" + - "@ConditionalOnClass(name=\"java.lang.String2\")\n" + - "public class MyConditionalComponent {\n" + - "}"; + String content = "package com.example;\n" + "\n" + + "import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;\n" + + "import org.springframework.stereotype.Component;\n" + "\n" + "@Component\n" + + "@ConditionalOnClass(name=\"java.lang.String2\")\n" + "public class MyConditionalComponent {\n" + "}"; - Editor editor = harness.newEditor( LanguageId.JAVA, content, docUri); + Editor editor = harness.newEditor(LanguageId.JAVA, content, docUri); - editor.assertHoverContains("@ConditionalOnClass(name=\"java.lang.String2\")", "@ConditionalOnClass did not find required class 'java.lang.String2'\n" + - "\n" + - "Process [PID=67950, name=`test-conditionals-live-hover`]"); + editor.assertHoverContains("@ConditionalOnClass(name=\"java.lang.String2\")", + "@ConditionalOnClass did not find required class 'java.lang.String2'\n" + "\n" + + "Process [PID=67950, name=`test-conditionals-live-hover`]"); } } diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/livehover/test/BeanInjectedIntoHoverProviderTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/livehover/test/BeanInjectedIntoHoverProviderTest.java index e4b736a1f..e53f59788 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/livehover/test/BeanInjectedIntoHoverProviderTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/livehover/test/BeanInjectedIntoHoverProviderTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -13,6 +13,7 @@ package org.springframework.ide.vscode.boot.java.livehover.test; import static org.junit.Assert.assertTrue; import java.nio.file.Path; +import java.nio.file.Paths; import java.time.Duration; import org.junit.Before; @@ -330,7 +331,7 @@ public class BeanInjectedIntoHoverProviderTest { "\n" + "- Bean: myController \n" + " Type: `hello.MyController` \n" + - " Resource: `hello/MyController.class`" + " Resource: `" + Paths.get("hello/MyController.class") + "`" ); } diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/livehover/test/ComponentInjectionsHoverProviderTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/livehover/test/ComponentInjectionsHoverProviderTest.java index b64f9e6e7..729ff38ba 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/livehover/test/ComponentInjectionsHoverProviderTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/livehover/test/ComponentInjectionsHoverProviderTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,6 +12,7 @@ package org.springframework.ide.vscode.boot.java.livehover.test; import static org.junit.Assert.assertTrue; +import java.nio.file.Paths; import java.time.Duration; import org.junit.Before; @@ -527,7 +528,7 @@ public class ComponentInjectionsHoverProviderTest { "\n" + "- Bean: dependencyA \n" + " Type: `com.example.DependencyA` \n" + - " Resource: `com/example/DependencyA.class`\n" + + " Resource: `" + Paths.get("com/example/DependencyA.class") + "`\n" + "- Bean: dependencyB \n" + " Type: `com.example.DependencyB` \n" + " Resource: `com/example/DependencyB.class`" diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingLiveHoverTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingLiveHoverTest.java index 6260b002c..7ed830c02 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingLiveHoverTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingLiveHoverTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -45,8 +45,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/HelloWorldController.java"; - + String docUri = directory.toPath().resolve("src/main/java/example/HelloWorldController.java").toUri() + .toString(); // Build a mock running boot app mockAppProvider.builder() @@ -76,7 +76,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -112,7 +113,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); harness.intialize(directory); @@ -124,7 +126,8 @@ public class RequestMappingLiveHoverTest { editorWithMethodLiveHover.assertNoHover("@RequestMapping(\"/goodbye\")"); - docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/HelloWorldController.java"; + docUri = directory.toPath().resolve("src/main/java/example/HelloWorldController.java").toUri() + .toString(); Editor editorWithTypeLiveHover = harness.newEditorFromFileUri(docUri, LanguageId.JAVA); editorWithTypeLiveHover.assertNoHover("@RequestMapping(\"/hello-world\")"); @@ -136,7 +139,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -182,7 +186,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -224,7 +229,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -267,7 +273,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -314,7 +321,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -364,7 +372,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -414,7 +423,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -465,7 +475,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -516,7 +527,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -565,7 +577,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -614,7 +627,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -663,7 +677,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build three different instances of the same app running on different ports with different process IDs mockAppProvider.builder() @@ -727,7 +742,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/RestApi.java"; + String docUri = directory.toPath().resolve("src/main/java/example/RestApi.java").toUri() + .toString(); // Build a mock running boot app @@ -759,7 +775,8 @@ public class RequestMappingLiveHoverTest { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/InnerClassController.java"; + String docUri = directory.toPath().resolve("src/main/java/example/InnerClassController.java").toUri() + .toString(); // Build a mock running boot app diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java index 5a5ef123a..8e5bd89de 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/requestmapping/test/RequestMappingSymbolProviderTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -41,10 +41,10 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java"); + String docUri = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); assertEquals(1, symbols.size()); - assertTrue(containsSymbol(symbols, "@/greeting", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 29)); + assertTrue(containsSymbol(symbols, "@/greeting", docUri, 6, 1, 6, 29)); } @Test @@ -53,10 +53,10 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/ParentMappingClass.java"); + String docUri = directory.toPath().resolve("src/main/java/org/test/ParentMappingClass.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); assertEquals(1, symbols.size()); - assertTrue(containsSymbol(symbols, "@/parent/greeting -- GET", uriPrefix + "/src/main/java/org/test/ParentMappingClass.java", 8, 1, 8, 47)); + assertTrue(containsSymbol(symbols, "@/parent/greeting -- GET", docUri, 8, 1, 8, 47)); } @Test @@ -65,10 +65,10 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/ParentMappingClass2.java"); + String docUri = directory.toPath().resolve("src/main/java/org/test/ParentMappingClass2.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); assertEquals(1, symbols.size()); - assertTrue(containsSymbol(symbols, "@/parent2 -- GET,POST,DELETE", uriPrefix + "/src/main/java/org/test/ParentMappingClass2.java", 8, 1, 8, 16)); + assertTrue(containsSymbol(symbols, "@/parent2 -- GET,POST,DELETE", docUri, 8, 1, 8, 16)); } @Test @@ -77,11 +77,11 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/MultiRequestMappingClass.java"); + String docUri = directory.toPath().resolve("src/main/java/org/test/MultiRequestMappingClass.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); assertEquals(2, symbols.size()); - assertTrue(containsSymbol(symbols, "@/hello1", uriPrefix + "/src/main/java/org/test/MultiRequestMappingClass.java", 6, 1, 6, 44)); - assertTrue(containsSymbol(symbols, "@/hello2", uriPrefix + "/src/main/java/org/test/MultiRequestMappingClass.java", 6, 1, 6, 44)); + assertTrue(containsSymbol(symbols, "@/hello1", docUri, 6, 1, 6, 44)); + assertTrue(containsSymbol(symbols, "@/hello2", docUri, 6, 1, 6, 44)); } @Test @@ -90,9 +90,9 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/RequestMethodClass.java"); - assertTrue(containsSymbol(symbols, "@/getData -- GET", uriPrefix + "/src/main/java/org/test/RequestMethodClass.java", 12, 1, 12, 24)); + String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + assertTrue(containsSymbol(symbols, "@/getData -- GET", docUri, 12, 1, 12, 24)); } @Test @@ -101,9 +101,9 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/RequestMethodClass.java"); - assertTrue(containsSymbol(symbols, "@/deleteData -- DELETE", uriPrefix + "/src/main/java/org/test/RequestMethodClass.java", 20, 1, 20, 30)); + String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + assertTrue(containsSymbol(symbols, "@/deleteData -- DELETE",docUri, 20, 1, 20, 30)); } @Test @@ -112,9 +112,9 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/RequestMethodClass.java"); - assertTrue(containsSymbol(symbols, "@/postData -- POST", uriPrefix + "/src/main/java/org/test/RequestMethodClass.java", 24, 1, 24, 26)); + String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + assertTrue(containsSymbol(symbols, "@/postData -- POST", docUri, 24, 1, 24, 26)); } @Test @@ -123,9 +123,9 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/RequestMethodClass.java"); - assertTrue(containsSymbol(symbols, "@/putData -- PUT", uriPrefix + "/src/main/java/org/test/RequestMethodClass.java", 16, 1, 16, 24)); + String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + assertTrue(containsSymbol(symbols, "@/putData -- PUT", docUri, 16, 1, 16, 24)); } @Test @@ -134,9 +134,9 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/RequestMethodClass.java"); - assertTrue(containsSymbol(symbols, "@/patchData -- PATCH", uriPrefix + "/src/main/java/org/test/RequestMethodClass.java", 28, 1, 28, 28)); + String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + assertTrue(containsSymbol(symbols, "@/patchData -- PATCH", docUri, 28, 1, 28, 28)); } @Test @@ -145,9 +145,9 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/RequestMethodClass.java"); - assertTrue(containsSymbol(symbols, "@/getHello -- GET", uriPrefix + "/src/main/java/org/test/RequestMethodClass.java", 32, 1, 32, 61)); + String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + assertTrue(containsSymbol(symbols, "@/getHello -- GET", docUri, 32, 1, 32, 61)); } @Test @@ -156,9 +156,9 @@ public class RequestMappingSymbolProviderTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-request-mapping-symbols/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = harness.getServer().getSpringIndexer().getSymbols(uriPrefix + "/src/main/java/org/test/RequestMethodClass.java"); - assertTrue(containsSymbol(symbols, "@/postAndPutHello -- POST,PUT", uriPrefix + "/src/main/java/org/test/RequestMethodClass.java", 36, 1, 36, 76)); + String docUri = directory.toPath().resolve("src/main/java/org/test/RequestMethodClass.java").toUri().toString(); + List symbols = harness.getServer().getSpringIndexer().getSymbols(docUri); + assertTrue(containsSymbol(symbols, "@/postAndPutHello -- POST,PUT", docUri, 36, 1, 36, 76)); } private boolean containsSymbol(List symbols, String name, String uri, int startLine, int startCHaracter, int endLine, int endCharacter) { diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java index 1e11ee187..23fb84e64 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/CompilationUnitCacheTest.java @@ -155,7 +155,7 @@ public class CompilationUnitCacheTest { public void cu_cache_invalidated_by_project_change() throws Exception { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/HelloWorldController.java"; + String docUri = directory.toPath().resolve("src/main/java/example/HelloWorldController.java").toUri().toString(); harness.intialize(directory); @@ -180,7 +180,7 @@ public class CompilationUnitCacheTest { public void cu_cache_invalidated_by_project_deletion() throws Exception { File directory = new File( ProjectsHarness.class.getResource("/test-projects/test-request-mapping-live-hover/").toURI()); - String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/HelloWorldController.java"; + String docUri = directory.toPath().resolve("src/main/java/example/HelloWorldController.java").toUri().toString(); harness.intialize(directory); diff --git a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java index 0445e0cdc..d70cf9a27 100644 --- a/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java +++ b/headless-services/boot-java-language-server/src/test/java/org/springframework/ide/vscode/boot/java/utils/test/SpringIndexerTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -68,14 +68,17 @@ public class SpringIndexerTest { assertEquals(6, allSymbols.size()); - String uriPrefix = "file://" + directory.getAbsolutePath(); + String docUri = directory.toPath().resolve("src/main/java/org/test/MainClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", docUri, 6, 0, 6, 22)); + assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", docUri, 17, 1, 17, 41)); + assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", docUri, 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", uriPrefix + "/src/main/java/org/test/MainClass.java", 6, 0, 6, 22)); - assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@/mapping1", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 28)); - assertTrue(containsSymbol(allSymbols, "@/mapping2", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); - assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); + docUri = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/mapping1", docUri, 6, 1, 6, 28)); + assertTrue(containsSymbol(allSymbols, "@/mapping2", docUri, 11, 1, 11, 28)); + + docUri = directory.toPath().resolve("src/main/java/org/test/sub/MappingClassSubpackage.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38)); } @Test @@ -84,41 +87,46 @@ public class SpringIndexerTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()); - String uriPrefix = "file://" + directory.getAbsolutePath(); - List symbols = indexer().getSymbols(uriPrefix + "/src/main/java/org/test/MainClass.java"); + String docUri = directory.toPath().resolve("src/main/java/org/test/MainClass.java").toUri().toString(); + List symbols = indexer().getSymbols(docUri); assertEquals(3, symbols.size()); - assertTrue(containsSymbol(symbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", uriPrefix + "/src/main/java/org/test/MainClass.java", 6, 0, 6, 22)); - assertTrue(containsSymbol(symbols, "@/embedded-foo-mapping", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(symbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); + assertTrue(containsSymbol(symbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", docUri, 6, 0, 6, 22)); + assertTrue(containsSymbol(symbols, "@/embedded-foo-mapping", docUri, 17, 1, 17, 41)); + assertTrue(containsSymbol(symbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", docUri, 27, 1, 27, 51)); - symbols = indexer().getSymbols(uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java"); + docUri = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); + symbols = indexer().getSymbols(docUri); assertEquals(2, symbols.size()); - assertTrue(containsSymbol(symbols, "@/mapping1", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 28)); - assertTrue(containsSymbol(symbols, "@/mapping2", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); + assertTrue(containsSymbol(symbols, "@/mapping1", docUri, 6, 1, 6, 28)); + assertTrue(containsSymbol(symbols, "@/mapping2", docUri, 11, 1, 11, 28)); - symbols = indexer().getSymbols(uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java"); + docUri = directory.toPath().resolve("src/main/java/org/test/sub/MappingClassSubpackage.java").toUri().toString(); + symbols = indexer().getSymbols(docUri); assertEquals(1, symbols.size()); - assertTrue(containsSymbol(symbols, "@/classlevel/mapping-subpackage", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); + assertTrue(containsSymbol(symbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38)); } @Test public void testScanningAllAnnotationsMultiModuleProjectUpfront() throws Exception { harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/").toURI())); - File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/").toURI()); + File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing").toURI()); List allSymbols = indexer().getAllSymbols(""); assertEquals(6, allSymbols.size()); - String uriPrefix = "file://" + directory.getAbsolutePath() + "/test-annotation-indexing"; + String docUri = directory.toPath().resolve("src/main/java/org/test/MainClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", docUri, 6, 0, 6, 22)); + assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", docUri, 17, 1, 17, 41)); + assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", docUri, 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", uriPrefix + "/src/main/java/org/test/MainClass.java", 6, 0, 6, 22)); - assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@/mapping1", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 28)); - assertTrue(containsSymbol(allSymbols, "@/mapping2", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); - assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); + docUri = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/mapping1", docUri, 6, 1, 6, 28)); + assertTrue(containsSymbol(allSymbols, "@/mapping2", docUri, 11, 1, 11, 28)); + + docUri = directory.toPath().resolve("src/main/java/org/test/sub/MappingClassSubpackage.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38)); } @Test @@ -128,7 +136,8 @@ public class SpringIndexerTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()); // update document and update index - String changedDocURI = "file://" + directory.getAbsolutePath() + "/src/main/java/org/test/SimpleMappingClass.java"; + String changedDocURI = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); + String newContent = FileUtils.readFileToString(new File(new URI(changedDocURI))).replace("mapping1", "mapping1-CHANGED"); CompletableFuture updateFuture = indexer().updateDocument(changedDocURI, newContent); @@ -144,14 +153,17 @@ public class SpringIndexerTest { List allSymbols = indexer().getAllSymbols(""); assertEquals(6, allSymbols.size()); - String uriPrefix = "file://" + directory.getAbsolutePath(); + String docUri = directory.toPath().resolve("src/main/java/org/test/MainClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", docUri, 6, 0, 6, 22)); + assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", docUri, 17, 1, 17, 41)); + assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", docUri, 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", uriPrefix + "/src/main/java/org/test/MainClass.java", 6, 0, 6, 22)); - assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@/mapping1-CHANGED", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 36)); - assertTrue(containsSymbol(allSymbols, "@/mapping2", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); - assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); + docUri = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/mapping1-CHANGED", docUri, 6, 1, 6, 36)); + assertTrue(containsSymbol(allSymbols, "@/mapping2", docUri, 11, 1, 11, 28)); + + docUri = directory.toPath().resolve("src/main/java/org/test/sub/MappingClassSubpackage.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38)); } @Test @@ -159,7 +171,7 @@ public class SpringIndexerTest { harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI())); File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()); - String createdDocURI = "file://" + directory.getAbsolutePath() + "/src/main/java/org/test/CreatedClass.java"; + String createdDocURI = directory.toPath().resolve("src/main/java/org/test/CreatedClass.java").toUri().toString(); // check for document to not be created yet List symbols = indexer().getSymbols(createdDocURI); @@ -202,14 +214,17 @@ public class SpringIndexerTest { allSymbols = indexer().getAllSymbols(""); assertEquals(8, allSymbols.size()); - String uriPrefix = "file://" + directory.getAbsolutePath(); + String docUri = directory.toPath().resolve("src/main/java/org/test/MainClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", docUri, 6, 0, 6, 22)); + assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", docUri, 17, 1, 17, 41)); + assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", docUri, 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", uriPrefix + "/src/main/java/org/test/MainClass.java", 6, 0, 6, 22)); - assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@/mapping1", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 28)); - assertTrue(containsSymbol(allSymbols, "@/mapping2", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); - assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); + docUri = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/mapping1", docUri, 6, 1, 6, 28)); + assertTrue(containsSymbol(allSymbols, "@/mapping2", docUri, 11, 1, 11, 28)); + + docUri = directory.toPath().resolve("src/main/java/org/test/sub/MappingClassSubpackage.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38)); assertTrue(containsSymbol(allSymbols, "@/created-mapping1", createdDocURI, 6, 1, 6, 36)); assertTrue(containsSymbol(allSymbols, "@/created-mapping2", createdDocURI, 11, 1, 11, 36)); @@ -225,7 +240,7 @@ public class SpringIndexerTest { File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-annotation-indexing-parent/test-annotation-indexing/").toURI()); // update document and update index - String deletedDocURI = "file://" + directory.getAbsolutePath() + "/src/main/java/org/test/SimpleMappingClass.java"; + String deletedDocURI = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); CompletableFuture deleteFuture = indexer().deleteDocument(deletedDocURI); deleteFuture.get(5, TimeUnit.SECONDS); @@ -237,12 +252,13 @@ public class SpringIndexerTest { List allSymbols = indexer().getAllSymbols(""); assertEquals(4, allSymbols.size()); - String uriPrefix = "file://" + directory.getAbsolutePath(); + String docUri = directory.toPath().resolve("src/main/java/org/test/MainClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", docUri, 6, 0, 6, 22)); + assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", docUri, 17, 1, 17, 41)); + assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", docUri, 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@+ 'mainClass' (@SpringBootApplication <: @SpringBootConfiguration, @Configuration, @Component) MainClass", uriPrefix + "/src/main/java/org/test/MainClass.java", 6, 0, 6, 22)); - assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); + docUri = directory.toPath().resolve("src/main/java/org/test/sub/MappingClassSubpackage.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38)); } @Test @@ -255,13 +271,16 @@ public class SpringIndexerTest { assertEquals(6, allSymbols.size()); - String uriPrefix = "file://" + directory.getAbsolutePath(); + String docUri = directory.toPath().resolve("src/main/java/org/test/MainClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", docUri, 17, 1, 17, 41)); + assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", docUri, 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@/embedded-foo-mapping", uriPrefix + "/src/main/java/org/test/MainClass.java", 17, 1, 17, 41)); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); - assertTrue(containsSymbol(allSymbols, "@/mapping1", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 6, 1, 6, 28)); - assertTrue(containsSymbol(allSymbols, "@/mapping2", uriPrefix + "/src/main/java/org/test/SimpleMappingClass.java", 11, 1, 11, 28)); - assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", uriPrefix + "/src/main/java/org/test/sub/MappingClassSubpackage.java", 7, 1, 7, 38)); + docUri = directory.toPath().resolve("src/main/java/org/test/SimpleMappingClass.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/mapping1", docUri, 6, 1, 6, 28)); + assertTrue(containsSymbol(allSymbols, "@/mapping2", docUri, 11, 1, 11, 28)); + + docUri = directory.toPath().resolve("src/main/java/org/test/sub/MappingClassSubpackage.java").toUri().toString(); + assertTrue(containsSymbol(allSymbols, "@/classlevel/mapping-subpackage", docUri, 7, 1, 7, 38)); } @Test @@ -274,9 +293,9 @@ public class SpringIndexerTest { assertEquals(1, allSymbols.size()); - String uriPrefix = "file://" + directory.getAbsolutePath(); + String docUri = directory.toPath().resolve("src/main/java/org/test/MainClass.java").toUri().toString(); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); + assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", docUri, 27, 1, 27, 51)); } @Test @@ -289,9 +308,9 @@ public class SpringIndexerTest { assertEquals(1, allSymbols.size()); - String uriPrefix = "file://" + directory.getAbsolutePath(); + String docUri = directory.toPath().resolve("src/main/java/org/test/MainClass.java").toUri().toString(); - assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", uriPrefix + "/src/main/java/org/test/MainClass.java", 27, 1, 27, 51)); + assertTrue(containsSymbol(allSymbols, "@/foo-root-mapping/embedded-foo-mapping-with-root", docUri, 27, 1, 27, 51)); } private boolean containsSymbol(List symbols, String name, String uri, int startLine, int startCHaracter, int endLine, int endCharacter) { diff --git a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/ResourceHintProvider.java b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/ResourceHintProvider.java index bb630ce8f..f256a3ec2 100644 --- a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/ResourceHintProvider.java +++ b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/metadata/ResourceHintProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2016-2017 Pivotal, Inc. + * Copyright (c) 2016, 2018 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -63,7 +63,7 @@ public class ResourceHintProvider implements ValueProviderStrategy { private static class ClasspathHints extends CachingValueProvider { @Override protected Flux getValuesAsync(IJavaProject javaProject, String query) { - return Flux.fromStream(javaProject.getClasspath().getClasspathResources().stream().distinct().map(StsValueHint::create)); + return Flux.fromStream(javaProject.getClasspath().getClasspathResources().stream().distinct().map(r -> r.replaceAll("\\\\", "/")).map(StsValueHint::create)); } } diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/languageserver/java/AbstractFileToProjectCache.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/languageserver/java/AbstractFileToProjectCache.java index a8e106f1b..f63306897 100644 --- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/languageserver/java/AbstractFileToProjectCache.java +++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/languageserver/java/AbstractFileToProjectCache.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 Pivotal, Inc. + * Copyright (c) 2017, 2018 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -52,7 +52,7 @@ public abstract class AbstractFileToProjectCache

extends @Override protected void attachListeners(File file, P project) { super.attachListeners(file, project); - List globPattern = Arrays.asList(file.toString()); + List globPattern = Arrays.asList(file.toString().replaceAll("\\\\", "/")); changeSubscription = getFileObserver().onFileChanged(globPattern, (uri) -> performUpdate(project, asyncUpdate, true)); deleteSubscription = getFileObserver().onFileDeleted(globPattern, (uri) -> { cache.invalidate(file); diff --git a/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlValueParsers.java b/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlValueParsers.java index c96a7b4c7..4a76b8eb4 100644 --- a/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlValueParsers.java +++ b/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/ManifestYmlValueParsers.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2016, 2017 Pivotal, Inc. + * Copyright (c) 2016, 2018 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -140,7 +140,7 @@ public class ManifestYmlValueParsers { throw new IllegalArgumentException("Path contains authority: " + uri.getAuthority()); } - Path path = Paths.get(pathVal); + Path path = Paths.get(uri.getPath()); if (!path.startsWith("/")) { throw new IllegalArgumentException("Path must start with a '/'"); }