Skip to content

Commit 1fce85d

Browse files
snjezafbricon
authored andcommitted
Update Gradle projects automatically when aspectj.enabled is changed
1 parent 4f1a5c0 commit 1fce85d

1 file changed

Lines changed: 26 additions & 6 deletions

File tree

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

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import org.eclipse.core.resources.IProject;
2828
import org.eclipse.core.runtime.CoreException;
2929
import org.eclipse.core.runtime.NullProgressMonitor;
30+
import org.eclipse.core.runtime.OperationCanceledException;
31+
import org.eclipse.core.runtime.jobs.Job;
3032
import org.eclipse.jdt.apt.core.util.AptConfig;
3133
import org.eclipse.jdt.core.IJavaProject;
3234
import org.eclipse.jdt.core.JavaCore;
@@ -48,6 +50,7 @@ public void preferencesChange(Preferences oldPreferences, Preferences newPrefere
4850
if (projectsManager != null) {
4951
boolean gradleJavaHomeChanged = !Objects.equals(oldPreferences.getGradleJavaHome(), newPreferences.getGradleJavaHome());
5052
if (gradleJavaHomeChanged || hasAllowedChecksumsChanged(oldPreferences, newPreferences)) {
53+
waitForGradleJobs();
5154
for (IProject project : ProjectUtils.getGradleProjects()) {
5255
if (newPreferences.isGradleWrapperEnabled() || gradleJavaHomeChanged) {
5356
updateProject(projectsManager, project, gradleJavaHomeChanged);
@@ -57,16 +60,17 @@ public void preferencesChange(Preferences oldPreferences, Preferences newPrefere
5760

5861
boolean protobufSupportChanged = !Objects.equals(oldPreferences.isProtobufSupportEnabled(), newPreferences.isProtobufSupportEnabled());
5962
if (protobufSupportChanged) {
60-
for (IProject project : ProjectUtils.getGradleProjects()) {
61-
projectsManager.updateProject(project, true);
62-
}
63+
updateProjects(projectsManager);
6364
}
6465

6566
boolean androidSupportChanged = !Objects.equals(oldPreferences.isAndroidSupportEnabled(), newPreferences.isAndroidSupportEnabled());
6667
if (androidSupportChanged) {
67-
for (IProject project : ProjectUtils.getGradleProjects()) {
68-
projectsManager.updateProject(project, true);
69-
}
68+
updateProjects(projectsManager);
69+
}
70+
71+
boolean aspectjSupportChanged = !Objects.equals(oldPreferences.isAspectjSupportEnabled(), newPreferences.isAspectjSupportEnabled());
72+
if (aspectjSupportChanged) {
73+
updateProjects(projectsManager);
7074
}
7175

7276
boolean annotationProcessingChanged = !Objects.equals(oldPreferences.isGradleAnnotationProcessingEnabled(), newPreferences.isGradleAnnotationProcessingEnabled());
@@ -84,6 +88,7 @@ public void preferencesChange(Preferences oldPreferences, Preferences newPrefere
8488
}
8589
boolean updateBuildConfigurationChanged = !Objects.equals(oldPreferences.getUpdateBuildConfigurationStatus(), newPreferences.getUpdateBuildConfigurationStatus());
8690
if (updateBuildConfigurationChanged) {
91+
waitForGradleJobs();
8792
for (IProject project : ProjectUtils.getGradleProjects()) {
8893
String projectPath = project.getLocation().toFile().getAbsolutePath();
8994
BuildConfiguration buildConfiguration = GradleProjectImporter.getBuildConfiguration(Paths.get(projectPath));
@@ -94,6 +99,21 @@ public void preferencesChange(Preferences oldPreferences, Preferences newPrefere
9499
}
95100
}
96101

102+
private void waitForGradleJobs() {
103+
try {
104+
Job.getJobManager().join(CorePlugin.GRADLE_JOB_FAMILY, new NullProgressMonitor());
105+
} catch (OperationCanceledException | InterruptedException e) {
106+
// ignore
107+
}
108+
}
109+
110+
private void updateProjects(ProjectsManager projectsManager) {
111+
waitForGradleJobs();
112+
for (IProject project : ProjectUtils.getGradleProjects()) {
113+
projectsManager.updateProject(project, true);
114+
}
115+
}
116+
97117
private void updateProject(ProjectsManager projectsManager, IProject project, boolean gradleJavaHomeChanged) {
98118
String projectDir = project.getLocation().toFile().getAbsolutePath();
99119
Path projectPath = Paths.get(projectDir);

0 commit comments

Comments
 (0)