Skip to content

Commit 2f37f45

Browse files
snjezargrunber
authored andcommitted
Enable m2e toolchains.xml
1 parent e9b0ec6 commit 2f37f45

File tree

6 files changed

+67
-46
lines changed

6 files changed

+67
-46
lines changed

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/JobHelpers.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,10 @@ public static void waitForDownloadSourcesJobs(int maxTimeMillis) {
181181
waitForJobs(DownloadSourcesJobMatcher.INSTANCE, maxTimeMillis);
182182
}
183183

184+
public static void waitForLookupJDKToolchainsJob(int maxTimeMillis) {
185+
waitForJobs(LookupJDKToolchainsJobMatcher.INSTANCE, maxTimeMillis);
186+
}
187+
184188
public static void waitForJobs(IJobMatcher matcher, int maxWaitMillis) {
185189
final long limit = System.currentTimeMillis() + maxWaitMillis;
186190
while(true) {
@@ -354,4 +358,13 @@ public boolean matches(Job job) {
354358

355359
}
356360

361+
static class LookupJDKToolchainsJobMatcher implements IJobMatcher {
362+
public static final IJobMatcher INSTANCE = new LookupJDKToolchainsJobMatcher();
363+
364+
@Override
365+
public boolean matches(Job job) {
366+
return ("org.eclipse.m2e.jdt.LookupJDKToolchainsJob".equals(job.getClass().getName()));
367+
}
368+
}
369+
357370
}

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/GradleProjectImporter.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -500,9 +500,10 @@ public static BuildConfiguration getBuildConfiguration(Path rootFolder, boolean
500500
File javaHome = getJavaHome(preferences);
501501
File gradleUserHome = getGradleUserHomeFile();
502502
List<String> gradleArguments = new ArrayList<>();
503-
if (noDaemon) {
504-
gradleArguments.add("--no-daemon");
505-
}
503+
// https://github.com/microsoft/vscode-gradle/issues/1519
504+
//if (noDaemon) {
505+
// gradleArguments.add("--no-daemon");
506+
//}
506507
gradleArguments.addAll(getGradleInitScriptArgs());
507508
gradleArguments.addAll(preferences.getGradleArguments());
508509
List<String> gradleJvmArguments = preferences.getGradleJvmArguments();

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/GradleUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ public static File getJdkToLaunchDaemon(String highestJavaVersion) {
318318
return null;
319319
}
320320

321-
Map<String, File> jdks = getAllVmInstalls();;
321+
Map<String, File> jdks = getAllVmInstalls();
322322
Entry<String, File> selected = null;
323323
for (Entry<String, File> jdk : jdks.entrySet()) {
324324
String javaVersion = jdk.getKey();

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/JavaLanguageServerTestPlugin.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,21 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal;
1414

15+
import static org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin.logException;
16+
1517
import org.eclipse.core.resources.IWorkspace;
1618
import org.eclipse.core.resources.IWorkspaceDescription;
1719
import org.eclipse.core.resources.ResourcesPlugin;
1820
import org.eclipse.core.runtime.NullProgressMonitor;
21+
import org.eclipse.core.runtime.Platform;
1922
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
2023
import org.eclipse.core.runtime.preferences.InstanceScope;
2124
import org.eclipse.jdt.core.JavaCore;
2225
import org.eclipse.m2e.jdt.MavenJdtPlugin;
26+
import org.osgi.framework.Bundle;
2327
import org.osgi.framework.BundleActivator;
2428
import org.osgi.framework.BundleContext;
29+
import org.osgi.framework.BundleException;
2530

2631
/**
2732
* @author snjeza
@@ -38,8 +43,20 @@ public class JavaLanguageServerTestPlugin implements BundleActivator {
3843
*/
3944
@Override
4045
public void start(BundleContext context) throws Exception {
41-
IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(MavenJdtPlugin.PLUGIN_ID);
42-
prefs.put(PREFERENCE_LOOKUP_JVM_IN_TOOLCHAINS, Boolean.FALSE.toString());
46+
// https://github.com/eclipse-jdtls/eclipse.jdt.ls/pull/3238
47+
if ("false".equals(System.getProperty(PREFERENCE_LOOKUP_JVM_IN_TOOLCHAINS, "true"))) {
48+
IEclipsePreferences prefs = InstanceScope.INSTANCE.getNode(MavenJdtPlugin.PLUGIN_ID);
49+
prefs.put(PREFERENCE_LOOKUP_JVM_IN_TOOLCHAINS, Boolean.FALSE.toString());
50+
}
51+
try {
52+
long start = System.currentTimeMillis();
53+
String symbolicName = MavenJdtPlugin.PLUGIN_ID;
54+
JavaLanguageServerPlugin.debugTrace("Starting " + symbolicName);
55+
Platform.getBundle(symbolicName).start(Bundle.START_TRANSIENT);
56+
JavaLanguageServerPlugin.logInfo("Started " + symbolicName + " " + (System.currentTimeMillis() - start) + "ms");
57+
} catch (BundleException e) {
58+
logException(e.getMessage(), e);
59+
}
4360
TestVMType.setTestJREAsDefault("17");
4461
JavaCore.initializeAfterLoad(new NullProgressMonitor());
4562
IWorkspace workspace = ResourcesPlugin.getWorkspace();

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/javafx/JavaFXTest.java

Lines changed: 23 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
import static org.junit.Assert.assertNotEquals;
1717
import static org.junit.Assert.assertTrue;
1818

19-
import java.io.File;
20-
import java.util.Collections;
2119
import java.util.HashMap;
2220
import java.util.List;
2321

@@ -27,14 +25,11 @@
2725
import org.eclipse.jdt.launching.IVMInstall;
2826
import org.eclipse.jdt.launching.JavaRuntime;
2927
import org.eclipse.jdt.launching.environments.IExecutionEnvironment;
30-
import org.eclipse.jdt.ls.core.internal.JDTUtils;
3128
import org.eclipse.jdt.ls.core.internal.JVMConfigurator;
3229
import org.eclipse.jdt.ls.core.internal.JobHelpers;
3330
import org.eclipse.jdt.ls.core.internal.ResourceUtils;
34-
import org.eclipse.jdt.ls.core.internal.RuntimeEnvironment;
3531
import org.eclipse.jdt.ls.core.internal.TestVMType;
3632
import org.eclipse.jdt.ls.core.internal.managers.AbstractProjectsManagerBasedTest;
37-
import org.eclipse.jdt.ls.core.internal.preferences.Preferences;
3833
import org.hamcrest.core.IsNull;
3934
import org.junit.After;
4035
import org.junit.Assume;
@@ -43,7 +38,6 @@
4338
public class JavaFXTest extends AbstractProjectsManagerBasedTest {
4439

4540
private static final String VERSION_1_8 = "1.8";
46-
private static final String JAVA8FX_HOME = "java8fx.home";
4741
private static final String JAVA_SE_8 = "JavaSE-1.8";
4842
private static final String JAVA_SE_17 = "JavaSE-17";
4943

@@ -53,29 +47,37 @@ public class JavaFXTest extends AbstractProjectsManagerBasedTest {
5347
*/
5448
@Test
5549
public void testJavaFX() throws Exception {
56-
String jdkFXHome = System.getProperty(JAVA8FX_HOME);
57-
Assume.assumeThat("No java8fx.home path set, skipping test", jdkFXHome, IsNull.notNullValue());
58-
5950
IVMInstall defaultJRE = JavaRuntime.getDefaultVMInstall();
60-
6151
String name = "java8fx";
6252
IProject project = null;
6353
try {
64-
// Create JavaFX runtime
65-
Preferences prefs = createJavaFXRuntimePrefs(jdkFXHome);
66-
JVMConfigurator.configureJVMs(prefs);
67-
JobHelpers.waitForJobsToComplete();
68-
54+
IExecutionEnvironment java8env = JVMConfigurator.getExecutionEnvironment(JAVA_SE_8);
55+
IVMInstall java8vm = null;
56+
IVMInstall java8DefaultVm = null;
57+
if (java8env != null) {
58+
java8DefaultVm = java8env.getDefaultVM();
59+
IVMInstall[] compatibleVms = java8env.getCompatibleVMs();
60+
for (IVMInstall vm : compatibleVms) {
61+
if (vm.getVMInstallType().getName().startsWith("TestVMInstall-")) {
62+
continue;
63+
}
64+
if (java8env.isStrictlyCompatible(vm)) {
65+
java8vm = vm;
66+
java8env.setDefaultVM(java8vm);
67+
break;
68+
}
69+
}
70+
}
71+
Assume.assumeThat("JavaSE-1.8 VM is not found, skipping test", java8vm, IsNull.notNullValue());
6972
// Import JavaFX project and checks it compiles without errors
73+
JavaRuntime.setDefaultVMInstall(java8vm, monitor, true);
7074
importProjects("eclipse/" + name);
7175
project = getProject(name);
7276
assertNoErrors(project);
73-
74-
// Delete JavaFX runtime, project should fail to compile
75-
IVMInstall vm = JVMConfigurator.findVM(new File(jdkFXHome), null);
76-
vm.getVMInstallType().disposeVMInstall(vm.getId());
77-
TestVMType.setTestJREAsDefault(VERSION_1_8);
78-
JDTUtils.setCompatibleVMs(VERSION_1_8);
77+
JavaRuntime.setDefaultVMInstall(defaultJRE, monitor, true);
78+
if (java8env != null) {
79+
java8env.setDefaultVM(java8DefaultVm);
80+
}
7981
JobHelpers.waitForJobsToComplete();
8082
List<IMarker> errors = ResourceUtils.getErrorMarkers(project);
8183
assertNotEquals(0, errors.size());
@@ -94,15 +96,7 @@ public void testJavaFX() throws Exception {
9496
@After
9597
public void cleanUp() throws Exception {
9698
super.cleanUp();
97-
String jdkFXHome = System.getProperty(JAVA8FX_HOME);
98-
if (jdkFXHome != null && !jdkFXHome.isBlank()) {
99-
IVMInstall vm = JVMConfigurator.findVM(new File(jdkFXHome), null);
100-
if (vm != null) {
101-
vm.getVMInstallType().disposeVMInstall(vm.getId());
102-
}
103-
}
10499
TestVMType.setTestJREAsDefault("17");
105-
JDTUtils.setCompatibleVMs(VERSION_1_8);
106100
// Copied from org.eclipse.jdt.core.tests.model.ClasspathInitializerTests.tearDown()
107101
// Cleanup caches
108102
JavaModelManager manager = JavaModelManager.getJavaModelManager();
@@ -111,15 +105,4 @@ public void cleanUp() throws Exception {
111105
JobHelpers.waitForJobsToComplete();
112106
}
113107

114-
private Preferences createJavaFXRuntimePrefs(String path) {
115-
Preferences prefs = new Preferences();
116-
RuntimeEnvironment runtime = new RuntimeEnvironment();
117-
runtime.setPath(path);
118-
runtime.setName(JAVA_SE_8);
119-
runtime.setDefault(true);
120-
assertTrue(runtime.isValid());
121-
prefs.setRuntimes(Collections.singleton(runtime));
122-
return prefs;
123-
}
124-
125108
}

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/AbstractProjectsManagerBasedTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
import org.eclipse.jdt.ls.core.internal.preferences.StandardPreferenceManager;
8686
import org.junit.After;
8787
import org.junit.Before;
88+
import org.junit.BeforeClass;
8889
import org.mockito.Mock;
8990
import org.mockito.Mockito;
9091

@@ -132,6 +133,12 @@ public Object invoke(Object proxy, Method method, Object[] args) throws Throwabl
132133
}
133134
});
134135

136+
@BeforeClass
137+
public static void initJVMs() {
138+
JobHelpers.waitForLookupJDKToolchainsJob(600000);
139+
CorePlugin.publishedGradleVersions().getVersions();
140+
}
141+
135142
@Before
136143
public void initProjectManager() throws Exception {
137144
clientRequests.clear();

0 commit comments

Comments
 (0)