diff --git a/eclipse-distribution/pom.xml b/eclipse-distribution/pom.xml
index 71ad40bc0..39f528630 100644
--- a/eclipse-distribution/pom.xml
+++ b/eclipse-distribution/pom.xml
@@ -319,7 +319,7 @@
orbit
p2
- http://download.eclipse.org/tools/orbit/downloads/drops/S20180710163057/repository
+ http://download.eclipse.org/tools/orbit/downloads/drops/R20180905201904/repository
latest-m2e
diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml b/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml
index 913e99c71..a87dd7c5d 100644
--- a/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml
+++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml
@@ -86,10 +86,10 @@
+ id="org.springframework.tooling.boot.java.ls.preferences"
+ name="Spring Boot Language Server">
diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/BootLanguageServerPreferencesPage.java b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/BootLanguageServerPreferencesPage.java
index 9a9284fcf..94159272b 100644
--- a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/BootLanguageServerPreferencesPage.java
+++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/BootLanguageServerPreferencesPage.java
@@ -12,8 +12,15 @@ package org.springframework.tooling.boot.ls;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.springframework.tooling.ls.eclipse.commons.LanguageServerCommonsActivator;
+import org.springframework.tooling.ls.eclipse.commons.preferences.PreferenceConstants;
/**
* Preference page for Boot-Java LS extension
@@ -28,17 +35,43 @@ public class BootLanguageServerPreferencesPage extends FieldEditorPreferencePage
@Override
public void init(IWorkbench workbench) {
- setDescription("Settings for Boot-Java language server extension");
setPreferenceStore(BootLanguageServerPlugin.getDefault().getPreferenceStore());
}
@Override
protected void createFieldEditors() {
- BooleanFieldEditor liveHintsPrefEditor = new BooleanFieldEditor(Constants.PREF_BOOT_HINTS, "Live Boot Hint Decorators", getFieldEditorParent());
+
+ Composite parent = getFieldEditorParent();
+
+ Label l = new Label(parent, SWT.NONE);
+ l.setFont(parent.getFont());
+ l.setText("Settings for Spring Boot Live Beans data:");
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ gd.grabExcessHorizontalSpace = false;
+ l.setLayoutData(gd);
+
+ BooleanFieldEditor liveHintsPrefEditor = new BooleanFieldEditor(Constants.PREF_BOOT_HINTS, "Live Boot Hint Decorators", parent);
addField(liveHintsPrefEditor);
- BooleanFieldEditor liveChangeDetectionPrefEditor = new BooleanFieldEditor(Constants.PREF_CHANGE_DETECTION, "Live Boot Change Detection", getFieldEditorParent());
+ final IPreferenceStore commonsLsPrefs = LanguageServerCommonsActivator.getInstance().getPreferenceStore();
+ addField(new BooleanFieldEditor(PreferenceConstants.HIGHLIGHT_CODELENS_PREFS, "Highlights CodeLens (Experimental)", parent) {
+
+ @Override
+ public IPreferenceStore getPreferenceStore() {
+ return commonsLsPrefs;
+ }
+
+ });
+
+ BooleanFieldEditor liveChangeDetectionPrefEditor = new BooleanFieldEditor(Constants.PREF_CHANGE_DETECTION, "Live Boot Change Detection", parent);
addField(liveChangeDetectionPrefEditor);
+
+ l = new Label(parent, SWT.NONE);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ l.setLayoutData(gd);
+
}
}
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/plugin.xml b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/plugin.xml
index 47126e5e1..72ee50fe5 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/plugin.xml
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/plugin.xml
@@ -28,10 +28,11 @@
-
+ category="org.eclipse.lsp4e.preferences"
+ class="org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServerPreferencesPage"
+ id="org.springframework.tooling.ls.eclipse.commons.console.preferences"
+ name="Spring Language Servers">
+
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/preferences/LanguageServerConsolesPreferencesPage.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/preferences/LanguageServerPreferencesPage.java
similarity index 79%
rename from eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/preferences/LanguageServerConsolesPreferencesPage.java
rename to eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/preferences/LanguageServerPreferencesPage.java
index 5e2d8b091..89a097a72 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/preferences/LanguageServerConsolesPreferencesPage.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/preferences/LanguageServerPreferencesPage.java
@@ -12,7 +12,6 @@ package org.springframework.tooling.ls.eclipse.commons.preferences;
import static org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServerConsolePreferenceConstants.ALL_SERVERS;
-import org.eclipse.debug.internal.ui.SWTFactory;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
@@ -22,8 +21,7 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
import org.springframework.tooling.ls.eclipse.commons.LanguageServerCommonsActivator;
import org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServerConsolePreferenceConstants.ServerInfo;
-@SuppressWarnings("restriction")
-public class LanguageServerConsolesPreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+public class LanguageServerPreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
static IPreferenceStore getPrefsStoreFromPlugin() {
return LanguageServerCommonsActivator.getInstance().getPreferenceStore();
@@ -42,12 +40,5 @@ public class LanguageServerConsolesPreferencesPage extends FieldEditorPreference
for (ServerInfo s : ALL_SERVERS) {
addField(new BooleanFieldEditor(s.preferenceKey, s.label, parent));
}
-
- SWTFactory.createHorizontalSpacer(parent, 2);
-
- SWTFactory.createLabel(parent, "Settings for Spring Languare Server extensions:", 2);
-
- addField(new BooleanFieldEditor(PreferenceConstants.HIGHLIGHT_CODELENS_PREFS, "Highlights CodeLens (Experimental)", parent));
-
}
}
diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/preferences/PrefsInitializer.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/preferences/PrefsInitializer.java
index e973c5a69..24e4f70f6 100644
--- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/preferences/PrefsInitializer.java
+++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/preferences/PrefsInitializer.java
@@ -20,7 +20,7 @@ import org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServer
public class PrefsInitializer extends AbstractPreferenceInitializer {
@Override
public void initializeDefaultPreferences() {
- IPreferenceStore store = LanguageServerConsolesPreferencesPage.getPrefsStoreFromPlugin();
+ IPreferenceStore store = LanguageServerPreferencesPage.getPrefsStoreFromPlugin();
for (ServerInfo s : ALL_SERVERS) {
store.setDefault(s.preferenceKey, ENABLE_BY_DEFAULT);
}
diff --git a/eclipse-language-servers/pom.xml b/eclipse-language-servers/pom.xml
index 9ddc42f75..2915d2e5f 100644
--- a/eclipse-language-servers/pom.xml
+++ b/eclipse-language-servers/pom.xml
@@ -237,7 +237,7 @@
orbit
p2
- http://download.eclipse.org/tools/orbit/downloads/drops/S20180710163057/repository
+ http://download.eclipse.org/tools/orbit/downloads/drops/R20180905201904/repository
e-i-commons
diff --git a/headless-services/commons/commons-boot-app-cli/src/main/java/org/springframework/ide/vscode/commons/boot/app/cli/requestmappings/Boot20DispatcherServletMapping.java b/headless-services/commons/commons-boot-app-cli/src/main/java/org/springframework/ide/vscode/commons/boot/app/cli/requestmappings/Boot20DispatcherServletMapping.java
index 132fdf3fd..a55a51c15 100644
--- a/headless-services/commons/commons-boot-app-cli/src/main/java/org/springframework/ide/vscode/commons/boot/app/cli/requestmappings/Boot20DispatcherServletMapping.java
+++ b/headless-services/commons/commons-boot-app-cli/src/main/java/org/springframework/ide/vscode/commons/boot/app/cli/requestmappings/Boot20DispatcherServletMapping.java
@@ -62,12 +62,19 @@ Example entry:
private JSONObject getHandlerMethod() {
JSONObject details = getDetails();
- return details == null ? null : details.getJSONObject("handlerMethod");
+ if (details != null) {
+ if (details.has("handlerMethod")) {
+ return details.getJSONObject("handlerMethod");
+ } else if (details.has("handlerFunction")) {
+ //TODO: handler function for the Router bean
+ }
+ }
+ return null;
}
private JSONObject getRequestMappingConditions() {
JSONObject details = getDetails();
- return details == null ? null : details.getJSONObject("requestMappingConditions");
+ return details == null ? null : details.optJSONObject("requestMappingConditions");
}
@Override
diff --git a/headless-services/commons/commons-boot-app-cli/src/test/java/org/springframework/ide/vscode/commons/boot/app/cli/Boot2xRequestMappingsTest.java b/headless-services/commons/commons-boot-app-cli/src/test/java/org/springframework/ide/vscode/commons/boot/app/cli/Boot2xRequestMappingsTest.java
index 450345170..5d9c4e29d 100644
--- a/headless-services/commons/commons-boot-app-cli/src/test/java/org/springframework/ide/vscode/commons/boot/app/cli/Boot2xRequestMappingsTest.java
+++ b/headless-services/commons/commons-boot-app-cli/src/test/java/org/springframework/ide/vscode/commons/boot/app/cli/Boot2xRequestMappingsTest.java
@@ -12,7 +12,9 @@ package org.springframework.ide.vscode.commons.boot.app.cli;
import static org.junit.Assert.assertEquals;
+import java.util.Arrays;
import java.util.Collection;
+import java.util.stream.Collectors;
import org.apache.commons.io.IOUtils;
import org.json.JSONObject;
@@ -20,6 +22,8 @@ import org.junit.Test;
import org.springframework.ide.vscode.commons.boot.app.cli.requestmappings.RequestMapping;
import org.springframework.ide.vscode.commons.boot.app.cli.requestmappings.RequestMappingsParser20;
+import com.google.common.collect.ImmutableSet;
+
public class Boot2xRequestMappingsTest {
@Test
@@ -27,13 +31,62 @@ public class Boot2xRequestMappingsTest {
String json = IOUtils.toString(Boot2xRequestMappingsTest.class.getResourceAsStream("/live-rm-beans/rms-boot2-web.json"));
Collection rms = RequestMappingsParser20.parse(new JSONObject(json));
assertEquals(10, rms.size());
+
+ ImmutableSet expected = ImmutableSet.of(
+ "/error",
+ "/actuator",
+ "/actuator/health",
+ "/actuator/info",
+ "/hello",
+ "/qq",
+ "/pp"
+ );
+ assertEquals(expected,
+ rms.stream()
+ .flatMap(rm -> Arrays.stream(rm.getSplitPath()))
+ .collect(Collectors.toSet())
+ );
+
}
@Test
public void testWebFluxAnnotationRms() throws Exception {
String json = IOUtils.toString(Boot2xRequestMappingsTest.class.getResourceAsStream("/live-rm-beans/rms-boot2-webflux.json"));
Collection rms = RequestMappingsParser20.parse(new JSONObject(json));
+
assertEquals(7, rms.size());
+
+ ImmutableSet expected = ImmutableSet.of(
+ "/actuator",
+ "/actuator/health",
+ "/actuator/info",
+ "/hello",
+ "/pp",
+ "/qq"
+ );
+ assertEquals(expected,
+ rms.stream()
+ .flatMap(rm -> Arrays.stream(rm.getSplitPath()))
+ .collect(Collectors.toSet())
+ );
}
+ @Test
+ public void testWebFluxAnnotationRmsFunctional() throws Exception {
+ String json = IOUtils.toString(Boot2xRequestMappingsTest.class.getResourceAsStream("/live-rm-beans/rms-boot2-webflux-functional.json"));
+ Collection rms = RequestMappingsParser20.parse(new JSONObject(json));
+
+ assertEquals(6, rms.size());
+
+ ImmutableSet expected = ImmutableSet.of(
+ "/actuator",
+ "/actuator/health",
+ "/actuator/info"
+ );
+ assertEquals(expected,
+ rms.stream()
+ .flatMap(rm -> Arrays.stream(rm.getSplitPath()))
+ .collect(Collectors.toSet())
+ );
+ }
}
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchies.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchies.java
index e08738be7..dec401162 100644
--- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchies.java
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchies.java
@@ -20,6 +20,7 @@ import java.util.stream.Stream;
import org.eclipse.jdt.core.dom.Annotation;
import org.eclipse.jdt.core.dom.IAnnotationBinding;
import org.eclipse.jdt.core.dom.ITypeBinding;
+import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
import org.springframework.ide.vscode.commons.util.CollectorUtil;
import com.google.common.collect.ImmutableList;
@@ -34,28 +35,31 @@ import com.google.common.collect.ImmutableList;
*/
public abstract class AnnotationHierarchies {
- private AnnotationHierarchies() {
- }
-
protected static boolean ignoreAnnotation(String fqname) {
return fqname.startsWith("java."); //mostly intended to capture java.lang.annotation.* types. But really it should be
//safe to ignore any type defined by the JRE since it can't possibly be inheriting from a spring annotation.
};
public static Collection getDirectSuperAnnotations(ITypeBinding typeBinding) {
- IAnnotationBinding[] annotations = typeBinding.getAnnotations();
- if (annotations!=null && annotations.length!=0) {
- ImmutableList.Builder superAnnotations = ImmutableList.builder();
- for (IAnnotationBinding ab : annotations) {
- ITypeBinding sa = ab.getAnnotationType();
- if (sa!=null) {
- if (!ignoreAnnotation(sa.getQualifiedName())) {
- superAnnotations.add(sa);
+ try {
+ IAnnotationBinding[] annotations = typeBinding.getAnnotations();
+ if (annotations != null && annotations.length != 0) {
+ ImmutableList.Builder superAnnotations = ImmutableList.builder();
+ for (IAnnotationBinding ab : annotations) {
+ ITypeBinding sa = ab.getAnnotationType();
+ if (sa != null) {
+ if (!ignoreAnnotation(sa.getQualifiedName())) {
+ superAnnotations.add(sa);
+ }
}
}
+ return superAnnotations.build();
}
- return superAnnotations.build();
}
+ catch (AbortCompilation e) {
+ // ignore this, it is most likely caused by broken source code, a broken classpath, or some optional dependencies not being on the classpath
+ }
+
return ImmutableList.of();
}
diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java
index 83e9843d5..3bc139a67 100644
--- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java
+++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/annotations/AnnotationHierarchyAwareLookup.java
@@ -33,8 +33,6 @@ import com.google.common.collect.ImmutableList;
*/
public class AnnotationHierarchyAwareLookup {
- private static final boolean DEBUG = false;
-
private static class Binding {
T value;
boolean isOverriding;