Skip to content

Commit 23720b2

Browse files
committed
Detect Gradle task when only defined in child
Update the `GradleProjectSettingsConfigurator` logic so that the actual project is used when searching for the `checkFormatMain` task. Prior to this commit only the root project was searched which may not have had used the checkstyle plugin, even if child projects did. Closes gh-166
1 parent ef9b806 commit 23720b2

File tree

1 file changed

+23
-7
lines changed

1 file changed

+23
-7
lines changed

spring-javaformat-eclipse/io.spring.javaformat.eclipse/src/io/spring/javaformat/eclipse/gradle/GradleProjectSettingsConfigurator.java

+23-7
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.eclipse.buildship.core.internal.workspace.FetchStrategy;
3232
import org.eclipse.buildship.core.internal.workspace.InternalGradleBuild;
3333
import org.eclipse.buildship.core.internal.workspace.InternalGradleWorkspace;
34+
import org.eclipse.buildship.core.internal.workspace.ModelProvider;
3435
import org.eclipse.core.resources.IProject;
3536
import org.eclipse.core.runtime.CoreException;
3637
import org.eclipse.core.runtime.IProgressMonitor;
@@ -74,18 +75,33 @@ private void configureProject(IProject project, IProgressMonitor monitor) throws
7475
InternalGradleWorkspace workspace = CorePlugin.internalGradleWorkspace();
7576
Optional<GradleBuild> build = workspace.getBuild(project);
7677
if (build.isPresent()) {
77-
Collection<EclipseProject> projects = ((InternalGradleBuild) build.get()).getModelProvider()
78-
.fetchModels(EclipseProject.class, FetchStrategy.FORCE_RELOAD, this.tokenSource, monitor);
79-
if (hasSpringFormatPlugin(projects)) {
80-
ProjectSettingsFilesLocator locator = new ProjectSettingsFilesLocator(getSearchFolders(projects));
78+
ModelProvider modelProvider = ((InternalGradleBuild) build.get()).getModelProvider();
79+
Collection<EclipseProject> rootProjects = modelProvider.fetchModels(EclipseProject.class,
80+
FetchStrategy.FORCE_RELOAD, this.tokenSource, monitor);
81+
EclipseProject eclipseProject = findProjectByName(rootProjects, project.getName());
82+
if (hasSpringFormatPlugin(eclipseProject)) {
83+
ProjectSettingsFilesLocator locator = new ProjectSettingsFilesLocator(getSearchFolders(rootProjects));
8184
locator.locateSettingsFiles().applyToProject(project, monitor);
8285
}
8386
}
8487
}
8588

86-
private boolean hasSpringFormatPlugin(Collection<EclipseProject> projects) {
87-
for (EclipseProject project : projects) {
88-
for (GradleTask task : project.getGradleProject().getTasks()) {
89+
private EclipseProject findProjectByName(Iterable<? extends EclipseProject> candidates, String name) {
90+
for (EclipseProject candidate : candidates) {
91+
if (name.equals(candidate.getName())) {
92+
return candidate;
93+
}
94+
EclipseProject childResult = findProjectByName(candidate.getChildren(), name);
95+
if (childResult != null) {
96+
return childResult;
97+
}
98+
}
99+
return null;
100+
}
101+
102+
private boolean hasSpringFormatPlugin(EclipseProject eclipseProject) {
103+
if (eclipseProject != null) {
104+
for (GradleTask task : eclipseProject.getGradleProject().getTasks()) {
89105
if (isSpringFormatPlugin(task)) {
90106
return true;
91107
}

0 commit comments

Comments
 (0)