diff --git a/eclipse-distribution/pom.xml b/eclipse-distribution/pom.xml
index aa4cf4f5c..92866827f 100644
--- a/eclipse-distribution/pom.xml
+++ b/eclipse-distribution/pom.xml
@@ -54,10 +54,10 @@
nightly
${dist.type}/${dist.key}/${dist.project}/${dist.pathpostfix}
- nightly
- ${dist.dependencies-version-path}
- ${dist.dependencies-version-path}
- ${dist.dependencies-version-path}
+
+ http://dist.springsource.com/snapshot/TOOLS/eclipse-integration-commons/nightly
+ http://dist.springframework.org/snapshot/IDE/nightly
+ http://dist.springsource.com/${dist.type}/TOOLS/sts4-language-server-integrations/${sts4-language-servers-version}
0.26.0
UTF-8
@@ -72,6 +72,8 @@
${dist.type}/TOOLS/sts4/nightly/${dist.target.major}
${dist.type}/STS4/nightly/dist/${dist.target.major}
false
+
+ nightly
@@ -82,6 +84,8 @@
${dist.type}/TOOLS/sts4/update/${unqualifiedVersion}.${p2.qualifier}/${dist.target.major}
${dist.type}/STS4/${unqualifiedVersion}.${p2.qualifier}/dist/${dist.target.major}
true
+
+ today
@@ -92,6 +96,8 @@
${dist.type}/TOOLS/sts4/update/${unqualifiedVersion}.${p2.qualifier}/${dist.target.major}
${dist.type}/STS4/${unqualifiedVersion}.${p2.qualifier}/dist/${dist.target.major}
true
+
+ today
@@ -213,25 +219,20 @@
-
- spring-boot-language-servers
- p2
- http://dist.springsource.com/${dist.type}/TOOLS/sts4-language-servers/${dist.springboot-language-servers-pathpostfix}
-
spring-boot-language-server-integrations
p2
- http://dist.springsource.com/${dist.type}/TOOLS/sts4-language-server-integrations/${dist.springboot-language-servers-pathpostfix}
+ ${sts4-language-servers-p2-repo}
springide
p2
- http://dist.springframework.org/${dist.type}/IDE/${dist.springide-pathpostfix}
+ ${springide-p2-repo}
eclipse-integration-commons
p2
- http://dist.springsource.com/${dist.type}/TOOLS/eclipse-integration-commons/${dist.eclipse-integration-commons-version}
+ ${eclipsecommons-p2-repo}
egit-github
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/GotoSymbolDialog.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/GotoSymbolDialog.java
index 88255051d..b351f1fa1 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/GotoSymbolDialog.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/GotoSymbolDialog.java
@@ -14,6 +14,7 @@ package org.springframework.tooling.ls.eclipse.gotosymbol.dialogs;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
@@ -26,8 +27,11 @@ import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.lsp4e.LSPEclipseUtils;
import org.eclipse.lsp4e.outline.SymbolsLabelProvider;
+import org.eclipse.lsp4j.Location;
import org.eclipse.lsp4j.SymbolInformation;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
@@ -46,6 +50,7 @@ import org.eclipse.ui.texteditor.ITextEditor;
import org.springframework.tooling.ls.eclipse.gotosymbol.GotoSymbolPlugin;
import org.springsource.ide.eclipse.commons.livexp.core.UIValueListener;
import org.springsource.ide.eclipse.commons.livexp.ui.Disposable;
+import org.springsource.ide.eclipse.commons.livexp.ui.Stylers;
import org.springsource.ide.eclipse.commons.livexp.ui.util.SwtConnect;
@SuppressWarnings("restriction")
@@ -78,7 +83,7 @@ public class GotoSymbolDialog extends PopupDialog {
}
}
- private static class GotoSymbolsLabelProvider extends SymbolsLabelProvider {
+ private class GotoSymbolsLabelProvider extends SymbolsLabelProvider {
@Override
protected int getMaxSeverity(IResource resource, SymbolInformation symbolInformation)
throws CoreException, BadLocationException {
@@ -91,8 +96,25 @@ public class GotoSymbolDialog extends PopupDialog {
}
return maxSeverity;
}
+
+ @Override
+ public StyledString getStyledText(Object element) {
+ StyledString s = super.getStyledText(element);
+ if (element instanceof SymbolInformation) {
+ Optional workspacePath = GotoSymbolDialog.this
+ .getWorkspaceLocation((SymbolInformation) element);
+ if (workspacePath.isPresent()) {
+ s.append(" -- [", Stylers.NULL);
+ s.append(workspacePath.get(), Stylers.NULL);
+ s.append("]", Stylers.NULL);
+ }
+ }
+ return s;
+ }
}
+ private static final Point DEFAULT_SIZE = new Point(280, 300);
+
private GotoSymbolDialogModel model;
private List disposables = new ArrayList<>();
private ITextEditor fTextEditor;
@@ -197,6 +219,21 @@ public class GotoSymbolDialog extends PopupDialog {
list.addDoubleClickListener(e -> performOk(list));
}
+ private Optional getWorkspaceLocation(SymbolInformation symbolInformation) {
+ String val = null;
+
+ if (!model.fromFileProvider(symbolInformation)) {
+ Location location = symbolInformation.getLocation();
+
+ IResource targetResource = LSPEclipseUtils.findResourceFor(location.getUri());
+ if (targetResource != null && targetResource.getFullPath() != null) {
+ val = targetResource.getFullPath().toString();
+ }
+ }
+
+ return val != null ? Optional.of(val) : Optional.empty();
+ }
+
private void performOk(TreeViewer list) {
if (model.performOk(getTarget(list))) {
close();
@@ -289,20 +326,22 @@ public class GotoSymbolDialog extends PopupDialog {
super.configureShell(shell);
Control control = fTextEditor.getAdapter(Control.class);
+ Point dialogueSize = DEFAULT_SIZE;
if (control != null) {
//Set size relative to editor's size.
- Point size = new Point(control.getBounds().width/3, control.getBounds().height/2);
- shell.setSize(size);
+ dialogueSize = computeDialogueSize(control);
if (alignRight) {
shell.setLocation(control.toDisplay(control.getBounds().width - shell.getSize().x, control.getLocation().y));
} else {
//centered on the editor
- shell.setLocation(control.toDisplay(control.getBounds().width/3, control.getBounds().height/4));
+ shell.setLocation(control.toDisplay(control.getBounds().width/4, control.getBounds().height/4));
}
- } else {
- // fallback
- shell.setSize(280, 300);
- }
+ }
+ shell.setSize(dialogueSize);
+ }
+
+ protected Point computeDialogueSize(Control control) {
+ return new Point(control.getBounds().width, control.getBounds().height/2);
}
// /**
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/GotoSymbolDialogModel.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/GotoSymbolDialogModel.java
index 562ddef1f..755d4644b 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/GotoSymbolDialogModel.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/GotoSymbolDialogModel.java
@@ -182,6 +182,14 @@ public class GotoSymbolDialogModel {
public boolean performOk(SymbolInformation selection) {
return this.okHandler.performOk(selection);
}
+
+ public boolean fromFileProvider(SymbolInformation symbolInformation) {
+ SymbolsProvider sp = currentSymbolsProvider.getValue();
+ if (sp!=null) {
+ return sp.fromFile(symbolInformation);
+ }
+ return false;
+ }
}
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InFileSymbolsProvider.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InFileSymbolsProvider.java
index d5ea5b417..47f185f80 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InFileSymbolsProvider.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InFileSymbolsProvider.java
@@ -68,4 +68,13 @@ public class InFileSymbolsProvider implements SymbolsProvider {
public String getName() {
return "Symbols in File";
}
+
+ @Override
+ public boolean fromFile(SymbolInformation symbol) {
+ if (symbol != null && symbol.getLocation() != null) {
+ String symbolUri = symbol.getLocation().getUri();
+ return info.getFileUri().toString().equals(symbolUri);
+ }
+ return false;
+ }
}
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java
index a5b1af758..331b65e72 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/InWorkspaceSymbolsProvider.java
@@ -64,7 +64,6 @@ public class InWorkspaceSymbolsProvider implements SymbolsProvider {
// really use this with a single language server anyways.
WorkspaceSymbolParams params = new WorkspaceSymbolParams(query);
- ImmutableList.Builder allSymbols = ImmutableList.builder();
Flux symbols = Flux.fromIterable(this.languageServers)
.flatMap(server -> Mono.fromFuture(server.getWorkspaceService().symbol(params))
.timeout(TIMEOUT)
@@ -108,4 +107,8 @@ public class InWorkspaceSymbolsProvider implements SymbolsProvider {
return null;
}
+ @Override
+ public boolean fromFile(SymbolInformation symbol) {
+ return false;
+ }
}
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/SymbolsProvider.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/SymbolsProvider.java
index a655a6e6a..432f331d3 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/SymbolsProvider.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.gotosymbol/src/org/springframework/tooling/ls/eclipse/gotosymbol/dialogs/SymbolsProvider.java
@@ -22,4 +22,11 @@ import org.eclipse.lsp4j.SymbolInformation;
public interface SymbolsProvider {
String getName();
Collection fetchFor(String query) throws Exception;
+ /**
+ * True if the symbol information is provided from a file provider (a file is the provider of the symbols). False otherwise
+ * @param symbol
+ * @return True if the symbol information is provided from a file provider (a file is the provider of the symbols). False otherwise
+
+ */
+ boolean fromFile(SymbolInformation symbol);
}
\ No newline at end of file
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.integration.repository/category.xml b/eclipse-language-servers/org.springframework.tooling.ls.integration.repository/category.xml
index efd9b37a9..d52148fa4 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.integration.repository/category.xml
+++ b/eclipse-language-servers/org.springframework.tooling.ls.integration.repository/category.xml
@@ -1,29 +1,29 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.integration.repository/pom.xml b/eclipse-language-servers/org.springframework.tooling.ls.integration.repository/pom.xml
index fc3e433a7..8bd9cee5e 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.integration.repository/pom.xml
+++ b/eclipse-language-servers/org.springframework.tooling.ls.integration.repository/pom.xml
@@ -12,14 +12,7 @@
eclipse-repository
- ${accessKey}
- ${secretKey}
- dist.springsource.com
- snapshot
- TOOLS
sts4-language-server-integrations
- nightly
- ${dist.type}/${dist.key}/${dist.project}/${dist.pathpostfix}
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.repository/category.xml b/eclipse-language-servers/org.springframework.tooling.ls.repository/category.xml
index 83d9101a6..0f3869f25 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.repository/category.xml
+++ b/eclipse-language-servers/org.springframework.tooling.ls.repository/category.xml
@@ -1,9 +1,9 @@
-
+
-
+
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.repository/pom.xml b/eclipse-language-servers/org.springframework.tooling.ls.repository/pom.xml
index 723538b3d..f83401228 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.repository/pom.xml
+++ b/eclipse-language-servers/org.springframework.tooling.ls.repository/pom.xml
@@ -12,14 +12,7 @@
eclipse-repository
- ${accessKey}
- ${secretKey}
- dist.springsource.com
- snapshot
- TOOLS
sts4-language-servers
- nightly
- ${dist.type}/${dist.key}/${dist.project}/${dist.pathpostfix}
diff --git a/eclipse-language-servers/pom.xml b/eclipse-language-servers/pom.xml
index 71aafefdf..a0f1f3011 100644
--- a/eclipse-language-servers/pom.xml
+++ b/eclipse-language-servers/pom.xml
@@ -68,9 +68,41 @@
0.26.0
UTF-8
+
+ ${accessKey}
+ ${secretKey}
+ dist.springsource.com
+ TOOLS
+ ${dist.type}/${dist.key}/${dist.project}/${dist.version}
+
+
+
+ snapshot
+
+ snapshot
+ nightly
+
+
+
+
+ milestone
+
+ milestone
+ today
+
+
+
+
+ release
+
+ release
+ today
+
+
+
e47
@@ -298,7 +330,7 @@
tycho-packaging-plugin
${tycho-version}
- yyyyMMddHHmm-'${p2.qualifier}'
+ yyyyMMddHHmm
true
false
diff --git a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/DelegatingCachedClasspath.java b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/DelegatingCachedClasspath.java
index addf5d95f..4882e1e73 100644
--- a/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/DelegatingCachedClasspath.java
+++ b/headless-services/commons/commons-java/src/main/java/org/springframework/ide/vscode/commons/java/DelegatingCachedClasspath.java
@@ -205,6 +205,9 @@ public class DelegatingCachedClasspath implements IClasspa
return false;
} catch (Exception e) {
cachedData.set(new ClasspathData(null, Collections.emptySet(), Collections.emptySet(), null));
+ if (cacheFile != null && cacheFile.exists()) {
+ cacheFile.delete();
+ }
throw e;
}
}
diff --git a/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java b/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java
index 646226841..29c42cd9c 100644
--- a/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java
+++ b/headless-services/commons/commons-maven/src/test/java/org/springframework/ide/vscode/commons/maven/MavenProjectCacheTest.java
@@ -32,6 +32,7 @@ import java.nio.file.FileVisitOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.Comparator;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -84,8 +85,8 @@ public class MavenProjectCacheTest {
Path cacheFolerPath = testProjectPath.resolve(IJavaProject.PROJECT_CACHE_FOLDER);
if (cacheFolerPath.toFile().exists()) {
- Files.walk(cacheFolerPath, FileVisitOption.FOLLOW_LINKS).map(Path::toFile).forEach(File::delete);
- Files.delete(cacheFolerPath);
+ Files.walk(cacheFolerPath, FileVisitOption.FOLLOW_LINKS).sorted(Comparator.reverseOrder()).map(Path::toFile)
+ .forEach(File::delete);
}
}
@@ -252,5 +253,7 @@ public class MavenProjectCacheTest {
}).get(10, TimeUnit.SECONDS);
progressDone.set(false);
verify(diagnosticService, times(1)).diagnosticEvent(any(ShowMessageException.class));
+ assertTrue(project.getClasspath().getClasspathEntries().isEmpty());
+ assertFalse(cacheFolder.resolve(DelegatingCachedClasspath.CLASSPATH_DATA_CACHE_FILE).toFile().exists());
}
}