Merge branch 'master' of github.com:spring-projects/sts4

This commit is contained in:
Kris De Volder
2018-03-01 17:21:54 -08:00
7 changed files with 102 additions and 7 deletions

View File

@@ -9,8 +9,8 @@ title=Spring Tool Suite 4\n\
Version: @QUALIFIER@\n\
Build Id: @BUILD_ID@\n\
\n\
Copyright (c) 2007 - 2018 Pivotal Software, Inc.\n\
All rights reserved. Visit http://spring.io/tools/sts\n\
Copyright (c) 2007 - 2018 Pivotal, Inc.\n\
All rights reserved. Visit http://spring.io/tools4\n\
\n\
This product includes software developed by the\n\
Apache Software Foundation http://www.apache.org

View File

@@ -7,8 +7,8 @@ productBlurb=Spring Tool Suite 4 \n\
Version: @QUALIFIER@\n\
Build Id: @BUILD_ID@\n\
\n\
Copyright (c) 2007 - 2018 Pivotal Software, Inc.\n\
All rights reserved. Visit http://spring.io/tools/sts\n\
Copyright (c) 2007 - 2018 Pivotal, Inc.\n\
All rights reserved. Visit http://spring.io/tools4\n\
\n\
This product includes software developed by the\n\
Apache Software Foundation http://www.apache.org

View File

@@ -24,6 +24,9 @@ org.eclipse.ui/DOCK_PERSPECTIVE_BAR=topRight
# show progress on startup
org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP=true
# lightweight auto-refresh on access by default
org.eclipse.core.resources/refresh.lightweight.enabled=true
# Order help books in table of contents
org.eclipse.help/HELP_DATA = helpData.xml

View File

@@ -46,6 +46,8 @@ import org.eclipse.lsp4j.ApplyWorkspaceEditResponse;
import org.eclipse.lsp4j.ClientCapabilities;
import org.eclipse.lsp4j.CodeActionContext;
import org.eclipse.lsp4j.CodeActionParams;
import org.eclipse.lsp4j.CodeLens;
import org.eclipse.lsp4j.CodeLensParams;
import org.eclipse.lsp4j.Command;
import org.eclipse.lsp4j.CompletionCapabilities;
import org.eclipse.lsp4j.CompletionItem;
@@ -471,6 +473,12 @@ public class LanguageServerHarness<S extends SimpleLanguageServerWrapper> {
return getServer().getTextDocumentService().hover(params ).get();
}
public List<? extends CodeLens> getCodeLenses(TextDocumentInfo document) throws Exception {
CodeLensParams params = new CodeLensParams();
params.setTextDocument(document.getId());
return getServer().getTextDocumentService().codeLens(params).get();
}
public CompletionItem resolveCompletionItem(CompletionItem maybeUnresolved) {
if (getServer().hasLazyCompletionResolver()) {

View File

@@ -60,6 +60,7 @@ import org.springframework.ide.vscode.commons.languageserver.completion.IComplet
import org.springframework.ide.vscode.commons.languageserver.composable.LanguageServerComponents;
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
import org.springframework.ide.vscode.commons.languageserver.java.ProjectObserver;
import org.springframework.ide.vscode.commons.languageserver.util.CodeLensHandler;
import org.springframework.ide.vscode.commons.languageserver.util.HoverHandler;
import org.springframework.ide.vscode.commons.languageserver.util.LSFactory;
import org.springframework.ide.vscode.commons.languageserver.util.ReferencesHandler;
@@ -92,6 +93,7 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
private JavaProjectFinder projectFinder;
private BootJavaHoverProvider hoverProvider;
private CodeLensHandler codeLensHandler;
public BootJavaLanguageServerComponents(SimpleLanguageServer server, LSFactory<BootLanguageServerParams> _params) {
this.server = server;
@@ -147,8 +149,8 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
// }
});
BootJavaCodeLensEngine codeLensEngine = createCodeLensEngine();
documents.onCodeLens(codeLensEngine);
codeLensHandler = createCodeLensEngine();
documents.onCodeLens(codeLensHandler);
workspaceService.onDidChangeConfiguraton(settings -> {
config.handleConfigurationChange(settings);
@@ -174,6 +176,10 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent
return hoverProvider;
}
public CodeLensHandler getCodeLensHandler() {
return codeLensHandler;
}
private void initialize(InitializeParams params) {
this.indexer.initialize(server.getWorkspaceRoots());
}

View File

@@ -64,7 +64,7 @@ public class WebfluxHandlerCodeLensProvider implements CodeLensProvider {
WebfluxHandlerInformation handlerInfo = (WebfluxHandlerInformation) object;
CodeLens codeLens = new CodeLens();
codeLens.setRange(document.toRange(node.getStartPosition(), node.getLength()));
codeLens.setRange(document.toRange(node.getName().getStartPosition(), node.getName().getLength()));
codeLens.setCommand(new Command(handlerInfo.getSymbol(), null));
resultAccumulator.add(codeLens);

View File

@@ -0,0 +1,78 @@
/*******************************************************************************
* Copyright (c) 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Pivotal, Inc. - initial API and implementation
*******************************************************************************/
package org.springframework.ide.vscode.boot.java.requestmapping.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.net.URI;
import java.util.List;
import org.eclipse.lsp4j.CodeLens;
import org.eclipse.lsp4j.Command;
import org.eclipse.lsp4j.Range;
import org.junit.Before;
import org.junit.Test;
import org.springframework.ide.vscode.commons.util.text.LanguageId;
import org.springframework.ide.vscode.languageserver.testharness.TextDocumentInfo;
import org.springframework.ide.vscode.project.harness.BootJavaLanguageServerHarness;
import org.springframework.ide.vscode.project.harness.ProjectsHarness;
/**
* @author Martin Lippert
*/
@SuppressWarnings("deprecation")
public class WebFluxCodeLensProviderTest {
private BootJavaLanguageServerHarness harness;
@Before
public void setup() throws Exception {
harness = BootJavaLanguageServerHarness.builder().build();
}
@Test
public void testRoutesCodeLenses() throws Exception {
harness.intialize(new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI()));
File directory = new File(ProjectsHarness.class.getResource("/test-projects/test-webflux-project/").toURI());
String docUri = directory.toPath().resolve("src/main/java/org/test/QuoteHandler.java").toUri().toString();
TextDocumentInfo doc = harness.getOrReadFile(new File(new URI(docUri)), LanguageId.JAVA.toString());
TextDocumentInfo openedDoc = harness.openDocument(doc);
List<? extends CodeLens> codeLenses = harness.getCodeLenses(openedDoc);
assertEquals(4, codeLenses.size());
assertTrue(containsCodeLens(codeLenses, "@/hello -- GET", 25, 29, 25, 34));
assertTrue(containsCodeLens(codeLenses, "@/echo -- POST", 30, 29, 30, 33));
assertTrue(containsCodeLens(codeLenses, "@/quotes -- GET", 35, 29, 35, 41));
assertTrue(containsCodeLens(codeLenses, "@/quotes -- GET", 41, 29, 41, 40));
}
private boolean containsCodeLens(List<? extends CodeLens> codeLenses, String commandTitle, int startLine, int startPosition, int endLine, int endPosition) {
for (CodeLens codeLens : codeLenses) {
Command command = codeLens.getCommand();
Range range = codeLens.getRange();
if (command.getTitle().equals(commandTitle)
&& range.getStart().getLine() == startLine
&& range.getStart().getCharacter() == startPosition
&& range.getEnd().getLine() == endLine
&& range.getEnd().getCharacter() == endPosition) {
return true;
}
}
return false;
}
}