From 1ce27595f131b2bfa83430a7760b9dd523f5c9c1 Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Wed, 1 Nov 2017 16:00:47 +0100 Subject: [PATCH 1/3] added missing copyright statement --- .../vscode/boot/java/utils/CompilationUnitCache.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/CompilationUnitCache.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/CompilationUnitCache.java index b42c7362d..86b170f07 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/CompilationUnitCache.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/utils/CompilationUnitCache.java @@ -1,3 +1,13 @@ +/******************************************************************************* + * Copyright (c) 2017 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Pivotal, Inc. - initial API and implementation + *******************************************************************************/ package org.springframework.ide.vscode.boot.java.utils; import java.net.URI; From 49c9517b8ac6d0ea9ca9bedab68f5fd64a91c5ff Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Wed, 1 Nov 2017 16:29:19 +0100 Subject: [PATCH 2/3] disable lsp4e go to symbol in workspace keybinding altogether as long as there is no fix in LSP4E --- .../java/ls/BootJavaLanguageServerPlugin.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/eclipse-language-servers/org.springframework.tooling.boot.java.ls/src/org/springframework/tooling/boot/java/ls/BootJavaLanguageServerPlugin.java b/eclipse-language-servers/org.springframework.tooling.boot.java.ls/src/org/springframework/tooling/boot/java/ls/BootJavaLanguageServerPlugin.java index b068daf68..3425e8079 100644 --- a/eclipse-language-servers/org.springframework.tooling.boot.java.ls/src/org/springframework/tooling/boot/java/ls/BootJavaLanguageServerPlugin.java +++ b/eclipse-language-servers/org.springframework.tooling.boot.java.ls/src/org/springframework/tooling/boot/java/ls/BootJavaLanguageServerPlugin.java @@ -10,6 +10,13 @@ *******************************************************************************/ package org.springframework.tooling.boot.java.ls; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.jface.bindings.Binding; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.keys.IBindingService; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; @@ -22,6 +29,8 @@ import org.osgi.framework.BundleContext; public class BootJavaLanguageServerPlugin extends AbstractUIPlugin { public static final String ID = "org.springframework.tooling.boot.java.ls"; + + private static final Object LSP4E_COMMAND_SYMBOL_IN_WORKSPACE = "org.eclipse.lsp4e.symbolinworkspace"; // The shared instance private static BootJavaLanguageServerPlugin plugin; @@ -34,6 +43,8 @@ public class BootJavaLanguageServerPlugin extends AbstractUIPlugin { public void start(BundleContext context) throws Exception { plugin = this; super.start(context); + + deactivateDuplicateKeybindings(); } @Override @@ -46,4 +57,42 @@ public class BootJavaLanguageServerPlugin extends AbstractUIPlugin { return plugin; } + private void deactivateDuplicateKeybindings() { + IBindingService service = PlatformUI.getWorkbench().getService(IBindingService.class); + if (service != null) { + List newBindings = new ArrayList<>(); + Binding[] bindings = service.getBindings(); + + for (Binding binding : bindings) { + String commandId = null; + + if (binding != null && binding.getParameterizedCommand() != null && binding.getParameterizedCommand().getCommand() != null) { + commandId = binding.getParameterizedCommand().getCommand().getId(); + + if (commandId == null) { + newBindings.add(binding); + } + else if (!commandId.equals(LSP4E_COMMAND_SYMBOL_IN_WORKSPACE)) { + newBindings.add(binding); + } + } + else { + newBindings.add(binding); + } + } + + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + @Override + public void run() { + try { + service.savePreferences(service.getActiveScheme(), + newBindings.toArray(new Binding[newBindings.size()])); + } catch (IOException e) { + e.printStackTrace(); + } + } + }); + } + } + } From c43b5f7482918402fa231936ee96ecfe653828e7 Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Wed, 1 Nov 2017 08:32:24 -0700 Subject: [PATCH 3/3] Moving some constants to more logical locations --- .../Constants.java => Annotations.java} | 15 +- .../boot/java/BootJavaLanguageServer.java | 224 ++++++++++-------- .../boot/java/beans/BeansSymbolProvider.java | 4 +- .../ide/vscode/boot/java/beans/Constants.java | 21 -- .../livehover/ActiveProfilesProvider.java | 2 - .../BeanInjectedIntoHoverProvider.java | 3 +- .../ComponentInjectionsHoverProvider.java | 4 +- .../beans/test/SpringIndexerBeansTest.java | 6 +- 8 files changed, 138 insertions(+), 141 deletions(-) rename headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/{autowired/Constants.java => Annotations.java} (50%) delete mode 100644 headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/Constants.java diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/autowired/Constants.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/Annotations.java similarity index 50% rename from headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/autowired/Constants.java rename to headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/Annotations.java index 1aa608e47..19885dbf5 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/autowired/Constants.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/Annotations.java @@ -8,13 +8,16 @@ * Contributors: * Pivotal, Inc. - initial API and implementation *******************************************************************************/ -package org.springframework.ide.vscode.boot.java.autowired; +package org.springframework.ide.vscode.boot.java; /** - * @author Martin Lippert + * Constants containing various fully-qualified annotation names. + * + * @author Kris De Volder */ -public class Constants { - - public static final String SPRING_AUTOWIRED = "org.springframework.beans.factory.annotation.Autowired"; - +public class Annotations { + public static final String BEAN = "org.springframework.context.annotation.Bean"; + public static final String PROFILE = "org.springframework.context.annotation.Profile"; + public static final String COMPONENT = "org.springframework.stereotype.Component"; + public static final String AUTOWIRED = "org.springframework.beans.factory.annotation.Autowired"; } diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java index d268ec78b..b447ae1cf 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServer.java @@ -80,7 +80,7 @@ public class BootJavaLanguageServer extends SimpleLanguageServer { private final BootJavaConfig config; private final CompilationUnitCache cuCache; - private final WordHighlighter testHightlighter = null; //new WordHighlighter("foo"); + private final WordHighlighter testHightlighter = null; // new WordHighlighter("foo"); private JavaProjectFinder projectFinder; @@ -112,7 +112,8 @@ public class BootJavaLanguageServer extends SimpleLanguageServer { documents.onCompletion(completionEngine::getCompletions); documents.onCompletionResolve(completionEngine::resolveCompletion); - BootJavaHoverProvider hoverInfoProvider = createHoverHandler(javaProjectFinder, serverParams.runningAppProvider); + BootJavaHoverProvider hoverInfoProvider = createHoverHandler(javaProjectFinder, + serverParams.runningAppProvider); documents.onHover(hoverInfoProvider); ReferencesHandler referencesHandler = createReferenceHandler(this, javaProjectFinder); @@ -126,13 +127,15 @@ public class BootJavaLanguageServer extends SimpleLanguageServer { }); documents.onDocumentSymbol(new BootJavaDocumentSymbolHandler(indexer)); - workspaceService.onWorkspaceSymbol(new BootJavaWorkspaceSymbolHandler(indexer, new LiveAppURLSymbolProvider(serverParams.runningAppProvider))); + workspaceService.onWorkspaceSymbol(new BootJavaWorkspaceSymbolHandler(indexer, + new LiveAppURLSymbolProvider(serverParams.runningAppProvider))); BootJavaCodeLensEngine codeLensHandler = createCodeLensEngine(this, javaProjectFinder); documents.onCodeLens(codeLensHandler::createCodeLenses); documents.onCodeLensResolve(codeLensHandler::resolveCodeLens); - liveHoverWatchdog = new SpringLiveHoverWatchdog(this, hoverInfoProvider, serverParams.runningAppProvider, projectFinder, projectObserver, serverParams.watchDogInterval); + liveHoverWatchdog = new SpringLiveHoverWatchdog(this, hoverInfoProvider, serverParams.runningAppProvider, + projectFinder, projectObserver, serverParams.watchDogInterval); documents.onDidChangeContent(params -> { TextDocument doc = params.getDocument(); if (testHightlighter != null) { @@ -177,11 +180,12 @@ public class BootJavaLanguageServer extends SimpleLanguageServer { @Override public void initialized() { - // TODO: due to a missing message from lsp4e this "initialized" is not called in the LSP4E case + // TODO: due to a missing message from lsp4e this "initialized" is not called in + // the LSP4E case // if this gets fixed, the code should move here (from "initialize" above) -// this.indexer.initialize(this.getWorkspaceRoot()); -// this.liveHoverWatchdog.start(); + // this.indexer.initialize(this.getWorkspaceRoot()); + // this.liveHoverWatchdog.start(); } @Override @@ -193,135 +197,147 @@ public class BootJavaLanguageServer extends SimpleLanguageServer { return super.shutdown(); } - protected ICompletionEngine createCompletionEngine(JavaProjectFinder javaProjectFinder, SpringPropertyIndexProvider indexProvider) { + protected ICompletionEngine createCompletionEngine(JavaProjectFinder javaProjectFinder, + SpringPropertyIndexProvider indexProvider) { Map providers = new HashMap<>(); - providers.put(org.springframework.ide.vscode.boot.java.scope.Constants.SPRING_SCOPE, new ScopeCompletionProcessor()); - providers.put(org.springframework.ide.vscode.boot.java.value.Constants.SPRING_VALUE, new ValueCompletionProcessor(indexProvider)); + providers.put(org.springframework.ide.vscode.boot.java.scope.Constants.SPRING_SCOPE, + new ScopeCompletionProcessor()); + providers.put(org.springframework.ide.vscode.boot.java.value.Constants.SPRING_VALUE, + new ValueCompletionProcessor(indexProvider)); JavaSnippetManager snippetManager = new JavaSnippetManager(this::createSnippetBuilder); - snippetManager.add(new JavaSnippet( - "RequestMapping method", - JavaSnippetContext.BOOT_MEMBERS, + snippetManager.add( + new JavaSnippet("RequestMapping method", JavaSnippetContext.BOOT_MEMBERS, CompletionItemKind.Method, + ImmutableList.of("org.springframework.web.bind.annotation.RequestMapping", + "org.springframework.web.bind.annotation.RequestMethod", + "org.springframework.web.bind.annotation.RequestParam"), + "@RequestMapping(value=\"${path}\", method=RequestMethod.${GET})\n" + + "public ${SomeData} ${requestMethodName}(@RequestParam ${String} ${param}) {\n" + + " return new ${SomeData}(${cursor});\n" + "}\n")); + snippetManager + .add(new JavaSnippet("GetMapping method", JavaSnippetContext.BOOT_MEMBERS, CompletionItemKind.Method, + ImmutableList.of("org.springframework.web.bind.annotation.GetMapping", + "org.springframework.web.bind.annotation.RequestParam"), + "@GetMapping(value=\"${path}\")\n" + + "public ${SomeData} ${getMethodName}(@RequestParam ${String} ${param}) {\n" + + " return new ${SomeData}(${cursor});\n" + "}\n")); + snippetManager.add(new JavaSnippet("PostMapping method", JavaSnippetContext.BOOT_MEMBERS, CompletionItemKind.Method, - ImmutableList.of( - "org.springframework.web.bind.annotation.RequestMapping", - "org.springframework.web.bind.annotation.RequestMethod", - "org.springframework.web.bind.annotation.RequestParam" - ), - "@RequestMapping(value=\"${path}\", method=RequestMethod.${GET})\n" + - "public ${SomeData} ${requestMethodName}(@RequestParam ${String} ${param}) {\n" + - " return new ${SomeData}(${cursor});\n" + - "}\n" - )); - snippetManager.add(new JavaSnippet( - "GetMapping method", - JavaSnippetContext.BOOT_MEMBERS, + ImmutableList.of("org.springframework.web.bind.annotation.PostMapping", + "org.springframework.web.bind.annotation.RequestBody"), + "@PostMapping(value=\"${path}\")\n" + + "public ${SomeEnityData} ${postMethodName}(@RequestBody ${SomeEnityData} ${entity}) {\n" + + " //TODO: process POST request\n" + " ${cursor}\n" + " return ${entity};\n" + "}\n")); + snippetManager.add(new JavaSnippet("PutMapping method", JavaSnippetContext.BOOT_MEMBERS, CompletionItemKind.Method, - ImmutableList.of( - "org.springframework.web.bind.annotation.GetMapping", - "org.springframework.web.bind.annotation.RequestParam" - ), - "@GetMapping(value=\"${path}\")\n" + - "public ${SomeData} ${getMethodName}(@RequestParam ${String} ${param}) {\n" + - " return new ${SomeData}(${cursor});\n" + - "}\n" - )); - snippetManager.add(new JavaSnippet( - "PostMapping method", - JavaSnippetContext.BOOT_MEMBERS, - CompletionItemKind.Method, - ImmutableList.of( - "org.springframework.web.bind.annotation.PostMapping", - "org.springframework.web.bind.annotation.RequestBody" - ), - "@PostMapping(value=\"${path}\")\n" + - "public ${SomeEnityData} ${postMethodName}(@RequestBody ${SomeEnityData} ${entity}) {\n" + - " //TODO: process POST request\n" + - " ${cursor}\n" + - " return ${entity};\n" + - "}\n" - )); - snippetManager.add(new JavaSnippet( - "PutMapping method", - JavaSnippetContext.BOOT_MEMBERS, - CompletionItemKind.Method, - ImmutableList.of( - "org.springframework.web.bind.annotation.PutMapping", + ImmutableList.of("org.springframework.web.bind.annotation.PutMapping", "org.springframework.web.bind.annotation.RequestBody", - "org.springframework.web.bind.annotation.PathVariable" - ), - "@PutMapping(value=\"${path}/{${id}}\")\n" + - "public ${SomeEnityData} ${putMethodName}(@PathVariable ${pvt:String} ${id}, @RequestBody ${SomeEnityData} ${entity}) {\n" + - " //TODO: process PUT request\n" + - " ${cursor}\n" + - " return ${entity};\n" + - "}" - )); + "org.springframework.web.bind.annotation.PathVariable"), + "@PutMapping(value=\"${path}/{${id}}\")\n" + + "public ${SomeEnityData} ${putMethodName}(@PathVariable ${pvt:String} ${id}, @RequestBody ${SomeEnityData} ${entity}) {\n" + + " //TODO: process PUT request\n" + " ${cursor}\n" + " return ${entity};\n" + "}")); return new BootJavaCompletionEngine(javaProjectFinder, providers, snippetManager); } - protected BootJavaHoverProvider createHoverHandler(JavaProjectFinder javaProjectFinder, RunningAppProvider runningAppProvider) { + protected BootJavaHoverProvider createHoverHandler(JavaProjectFinder javaProjectFinder, + RunningAppProvider runningAppProvider) { HashMap providers = new HashMap<>(); providers.put(org.springframework.ide.vscode.boot.java.value.Constants.SPRING_VALUE, new ValueHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_REQUEST_MAPPING, new RequestMappingHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_GET_MAPPING, new RequestMappingHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_POST_MAPPING, new RequestMappingHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_PUT_MAPPING, new RequestMappingHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_DELETE_MAPPING, new RequestMappingHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_PATCH_MAPPING, new RequestMappingHoverProvider()); - providers.put(ActiveProfilesProvider.ANNOTATION, new ActiveProfilesProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_REQUEST_MAPPING, + new RequestMappingHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_GET_MAPPING, + new RequestMappingHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_POST_MAPPING, + new RequestMappingHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_PUT_MAPPING, + new RequestMappingHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_DELETE_MAPPING, + new RequestMappingHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_PATCH_MAPPING, + new RequestMappingHoverProvider()); + providers.put(Annotations.PROFILE, new ActiveProfilesProvider()); - providers.put(org.springframework.ide.vscode.boot.java.autowired.Constants.SPRING_AUTOWIRED, new AutowiredHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.beans.Constants.SPRING_COMPONENT, new ComponentInjectionsHoverProvider()); - providers.put(BeanInjectedIntoHoverProvider.ANNOTATION, new BeanInjectedIntoHoverProvider()); + providers.put(Annotations.AUTOWIRED, new AutowiredHoverProvider()); + providers.put(Annotations.COMPONENT, new ComponentInjectionsHoverProvider()); + providers.put(Annotations.BEAN, new BeanInjectedIntoHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_BEAN, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_MISSING_BEAN, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_PROPERTY, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_RESOURCE, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_CLASS, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_MISSING_CLASS, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_CLOUD_PLATFORM, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_WEB_APPLICATION, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_NOT_WEB_APPLICATION, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_ENABLED_INFO_CONTRIBUTOR, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_ENABLED_RESOURCE_CHAIN, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_ENABLED_ENDPOINT, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_ENABLED_HEALTH_INDICATOR, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_EXPRESSION, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_JAVA, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_JNDI, new ConditionalsLiveHoverProvider()); - providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_SINGLE_CANDIDATE, new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_BEAN, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_MISSING_BEAN, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_PROPERTY, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_RESOURCE, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_CLASS, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_MISSING_CLASS, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_CLOUD_PLATFORM, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_WEB_APPLICATION, + new ConditionalsLiveHoverProvider()); + providers.put( + org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_NOT_WEB_APPLICATION, + new ConditionalsLiveHoverProvider()); + providers.put( + org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_ENABLED_INFO_CONTRIBUTOR, + new ConditionalsLiveHoverProvider()); + providers.put( + org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_ENABLED_RESOURCE_CHAIN, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_ENABLED_ENDPOINT, + new ConditionalsLiveHoverProvider()); + providers.put( + org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_ENABLED_HEALTH_INDICATOR, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_EXPRESSION, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_JAVA, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_JNDI, + new ConditionalsLiveHoverProvider()); + providers.put(org.springframework.ide.vscode.boot.java.conditionals.Constants.CONDITIONAL_ON_SINGLE_CANDIDATE, + new ConditionalsLiveHoverProvider()); return new BootJavaHoverProvider(this, javaProjectFinder, providers, runningAppProvider); } protected SpringIndexer createAnnotationIndexer(SimpleLanguageServer server, JavaProjectFinder projectFinder) { HashMap providers = new HashMap<>(); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_REQUEST_MAPPING, new RequestMappingSymbolProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_GET_MAPPING, new RequestMappingSymbolProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_POST_MAPPING, new RequestMappingSymbolProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_PUT_MAPPING, new RequestMappingSymbolProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_DELETE_MAPPING, new RequestMappingSymbolProvider()); - providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_PATCH_MAPPING, new RequestMappingSymbolProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_REQUEST_MAPPING, + new RequestMappingSymbolProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_GET_MAPPING, + new RequestMappingSymbolProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_POST_MAPPING, + new RequestMappingSymbolProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_PUT_MAPPING, + new RequestMappingSymbolProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_DELETE_MAPPING, + new RequestMappingSymbolProvider()); + providers.put(org.springframework.ide.vscode.boot.java.requestmapping.Constants.SPRING_PATCH_MAPPING, + new RequestMappingSymbolProvider()); - providers.put(org.springframework.ide.vscode.boot.java.beans.Constants.SPRING_BEAN, new BeansSymbolProvider()); - providers.put(org.springframework.ide.vscode.boot.java.beans.Constants.SPRING_COMPONENT, new ComponentSymbolProvider()); + providers.put(Annotations.BEAN, new BeansSymbolProvider()); + providers.put(Annotations.COMPONENT, new ComponentSymbolProvider()); return new SpringIndexer(this, projectFinder, providers); } protected ReferencesHandler createReferenceHandler(SimpleLanguageServer server, JavaProjectFinder projectFinder) { Map providers = new HashMap<>(); - providers.put(org.springframework.ide.vscode.boot.java.value.Constants.SPRING_VALUE, new ValuePropertyReferencesProvider(server)); + providers.put(org.springframework.ide.vscode.boot.java.value.Constants.SPRING_VALUE, + new ValuePropertyReferencesProvider(server)); return new BootJavaReferencesHandler(server, projectFinder, providers); } - protected BootJavaCodeLensEngine createCodeLensEngine(SimpleLanguageServer server, JavaProjectFinder projectFinder) { + protected BootJavaCodeLensEngine createCodeLensEngine(SimpleLanguageServer server, + JavaProjectFinder projectFinder) { return new BootJavaCodeLensEngine(server, projectFinder); } diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/BeansSymbolProvider.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/BeansSymbolProvider.java index 311573c95..faf209a7e 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/BeansSymbolProvider.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/BeansSymbolProvider.java @@ -12,6 +12,7 @@ package org.springframework.ide.vscode.boot.java.beans; import java.util.Collection; import java.util.Collections; +import java.util.Optional; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Supplier; @@ -26,7 +27,9 @@ import org.eclipse.lsp4j.Location; import org.eclipse.lsp4j.SymbolInformation; import org.eclipse.lsp4j.SymbolKind; import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider; +import org.springframework.ide.vscode.boot.java.utils.ASTUtils; import org.springframework.ide.vscode.commons.util.BadLocationException; +import org.springframework.ide.vscode.commons.util.Optionals; import org.springframework.ide.vscode.commons.util.text.TextDocument; /** @@ -130,5 +133,4 @@ public class BeansSymbolProvider implements SymbolProvider { } return null; } - } diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/Constants.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/Constants.java deleted file mode 100644 index 0175f21c9..000000000 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/beans/Constants.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2017 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 - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Pivotal, Inc. - initial API and implementation - *******************************************************************************/ -package org.springframework.ide.vscode.boot.java.beans; - -/** - * @author Martin Lippert - */ -public class Constants { - - public static final String SPRING_COMPONENT = "org.springframework.stereotype.Component"; - public static final String SPRING_BEAN = "org.springframework.context.annotation.Bean"; - -} diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/ActiveProfilesProvider.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/ActiveProfilesProvider.java index 281e3522a..091737177 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/ActiveProfilesProvider.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/ActiveProfilesProvider.java @@ -41,8 +41,6 @@ import com.google.common.collect.ImmutableSet; */ public class ActiveProfilesProvider implements HoverProvider { - public static final String ANNOTATION = "org.springframework.context.annotation.Profile"; - @Override public CompletableFuture provideHover( ASTNode node, diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/BeanInjectedIntoHoverProvider.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/BeanInjectedIntoHoverProvider.java index de845a638..096b9e730 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/BeanInjectedIntoHoverProvider.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/BeanInjectedIntoHoverProvider.java @@ -14,14 +14,13 @@ import java.util.Optional; import org.eclipse.jdt.core.dom.Annotation; import org.eclipse.jdt.core.dom.MethodDeclaration; +import org.springframework.ide.vscode.boot.java.beans.BeansSymbolProvider; import org.springframework.ide.vscode.boot.java.utils.ASTUtils; import org.springframework.ide.vscode.commons.boot.app.cli.livebean.LiveBean; import org.springframework.ide.vscode.commons.util.Optionals; public class BeanInjectedIntoHoverProvider extends AbstractInjectedIntoHoverProvider { - public static final String ANNOTATION = "org.springframework.context.annotation.Bean"; - @Override protected LiveBean getDefinedBean(Annotation annotation) { MethodDeclaration beanMethod = ASTUtils.getAnnotatedMethod(annotation); diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/ComponentInjectionsHoverProvider.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/ComponentInjectionsHoverProvider.java index 39c053d20..b4b20f8eb 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/ComponentInjectionsHoverProvider.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/ComponentInjectionsHoverProvider.java @@ -17,7 +17,7 @@ import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.MarkerAnnotation; import org.eclipse.jdt.core.dom.MethodDeclaration; import org.eclipse.jdt.core.dom.TypeDeclaration; -import org.springframework.ide.vscode.boot.java.autowired.Constants; +import org.springframework.ide.vscode.boot.java.Annotations; import org.springframework.ide.vscode.boot.java.utils.ASTUtils; import org.springframework.ide.vscode.commons.boot.app.cli.livebean.LiveBean; import org.springframework.ide.vscode.commons.boot.app.cli.livebean.LiveBeansModel; @@ -57,7 +57,7 @@ public class ComponentInjectionsHoverProvider extends AbstractInjectedIntoHoverP for (Object modifier : modifiers) { if (modifier instanceof MarkerAnnotation) { ITypeBinding typeBinding = ((MarkerAnnotation) modifier).resolveTypeBinding(); - if (typeBinding != null && typeBinding.getQualifiedName().equals(Constants.SPRING_AUTOWIRED)) { + if (typeBinding != null && typeBinding.getQualifiedName().equals(Annotations.AUTOWIRED)) { return true; } } 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 7394c6e0e..93e1b3cc8 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 @@ -22,9 +22,9 @@ import java.util.Map; import org.eclipse.lsp4j.SymbolInformation; import org.junit.Before; import org.junit.Test; +import org.springframework.ide.vscode.boot.java.Annotations; import org.springframework.ide.vscode.boot.java.beans.BeansSymbolProvider; import org.springframework.ide.vscode.boot.java.beans.ComponentSymbolProvider; -import org.springframework.ide.vscode.boot.java.beans.Constants; import org.springframework.ide.vscode.boot.java.handlers.SymbolProvider; import org.springframework.ide.vscode.boot.java.utils.SpringIndexer; import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder; @@ -43,8 +43,8 @@ public class SpringIndexerBeansTest { @Before public void setup() throws Exception { symbolProviders = new HashMap<>(); - symbolProviders.put(Constants.SPRING_BEAN, new BeansSymbolProvider()); - symbolProviders.put(Constants.SPRING_COMPONENT, new ComponentSymbolProvider()); + symbolProviders.put(Annotations.BEAN, new BeansSymbolProvider()); + symbolProviders.put(Annotations.COMPONENT, new ComponentSymbolProvider()); harness = BootLanguageServerHarness.builder().build(); projectFinder = harness.getProjectFinder();