Skip to content

Commit dbd035c

Browse files
authored
Add buildship auto sync preference (#2224)
Signed-off-by: Snjezana Peco <snjezana.peco@redhat.com> Signed-off-by: Snjezana Peco <snjezana.peco@redhat.com>
1 parent 8e654d7 commit dbd035c

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

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

+4-1
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
import org.eclipse.jdt.ls.core.internal.ResourceUtils;
7878
import org.eclipse.jdt.ls.core.internal.preferences.PreferenceManager;
7979
import org.eclipse.jdt.ls.core.internal.preferences.Preferences;
80+
import org.eclipse.jdt.ls.core.internal.preferences.Preferences.FeatureStatus;
8081
import org.eclipse.jdt.ls.internal.gradle.checksums.ValidationResult;
8182
import org.eclipse.jdt.ls.internal.gradle.checksums.WrapperValidator;
8283
import org.eclipse.lsp4j.ExecuteCommandParams;
@@ -444,8 +445,9 @@ public static BuildConfiguration getBuildConfiguration(Path rootFolder) {
444445
gradleArguments.addAll(preferences.getGradleArguments());
445446
List<String> gradleJvmArguments = preferences.getGradleJvmArguments();
446447
boolean offlineMode = preferences.isImportGradleOfflineEnabled();
448+
boolean autoSync = preferences.getUpdateBuildConfigurationStatus().equals(FeatureStatus.automatic);
447449
boolean overrideWorkspaceConfiguration = !(distribution instanceof WrapperGradleDistribution) || offlineMode || (gradleArguments != null && !gradleArguments.isEmpty()) || (gradleJvmArguments != null && !gradleJvmArguments.isEmpty())
448-
|| gradleUserHome != null || javaHome != null;
450+
|| gradleUserHome != null || javaHome != null || autoSync;
449451
// @formatter:off
450452
BuildConfiguration build = BuildConfiguration.forRootProjectDirectory(rootFolder.toFile())
451453
.overrideWorkspaceConfiguration(overrideWorkspaceConfiguration)
@@ -455,6 +457,7 @@ public static BuildConfiguration getBuildConfiguration(Path rootFolder) {
455457
.gradleUserHome(gradleUserHome)
456458
.jvmArguments(gradleJvmArguments)
457459
.offlineMode(offlineMode)
460+
.autoSync(autoSync)
458461
.build();
459462
// @formatter:on
460463
return build;

Diff for: org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/StandardProjectsManager.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,8 @@ public void fileChanged(String uriString, CHANGE_TYPE changeType) {
224224
return;
225225
}
226226
try {
227-
Optional<IBuildSupport> bs = getBuildSupport(resource.getProject());
227+
IProject project = resource.getProject();
228+
Optional<IBuildSupport> bs = getBuildSupport(project);
228229
if (bs.isPresent()) {
229230
IBuildSupport buildSupport = bs.get();
230231

@@ -238,7 +239,11 @@ public void fileChanged(String uriString, CHANGE_TYPE changeType) {
238239
FeatureStatus status = preferenceManager.getPreferences().getUpdateBuildConfigurationStatus();
239240
switch (status) {
240241
case automatic:
241-
updateProject(resource.getProject(), true);
242+
if (ProjectUtils.isGradleProject(project)) {
243+
// See https://github.com/redhat-developer/vscode-java/issues/2673
244+
return;
245+
}
246+
updateProject(project, true);
242247
break;
243248
case disabled:
244249
appendBuildFileMarker(resource);

Diff for: org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/managers/GradleProjectImporterTest.java

+16
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import org.eclipse.jdt.ls.core.internal.TestVMType;
6262
import org.eclipse.jdt.ls.core.internal.WorkspaceHelper;
6363
import org.eclipse.jdt.ls.core.internal.preferences.Preferences;
64+
import org.eclipse.jdt.ls.core.internal.preferences.Preferences.FeatureStatus;
6465
import org.junit.After;
6566
import org.junit.Test;
6667
import org.junit.runner.RunWith;
@@ -414,6 +415,21 @@ public void testGradleOfflineMode() {
414415
}
415416
}
416417

418+
@Test
419+
public void testGradleAutoSync() {
420+
FeatureStatus status = JavaLanguageServerPlugin.getPreferencesManager().getPreferences().getUpdateBuildConfigurationStatus();
421+
try {
422+
Path rootPath = ResourcesPlugin.getWorkspace().getRoot().getLocation().toFile().toPath();
423+
BuildConfiguration build = GradleProjectImporter.getBuildConfiguration(rootPath);
424+
assertFalse(build.isAutoSync());
425+
JavaLanguageServerPlugin.getPreferencesManager().getPreferences().setUpdateBuildConfigurationStatus(FeatureStatus.automatic);
426+
build = GradleProjectImporter.getBuildConfiguration(rootPath);
427+
assertTrue(build.isAutoSync());
428+
} finally {
429+
JavaLanguageServerPlugin.getPreferencesManager().getPreferences().setUpdateBuildConfigurationStatus(status);
430+
}
431+
}
432+
417433
@Test
418434
public void testGradleJvmArguments() {
419435
List<String> jvmArguments = JavaLanguageServerPlugin.getPreferencesManager().getPreferences().getGradleJvmArguments();

0 commit comments

Comments
 (0)