Skip to content

Commit 8a6df3e

Browse files
committed
Fix NoSuchMethodError when using Buildship 3.1.5
Support both Collection and Map values from `modelProvider.fetchModels` so that the plugin can work with Builship 3.1.5. Fixes gh-260
1 parent 9618821 commit 8a6df3e

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.io.IOException;
2121
import java.util.Collection;
2222
import java.util.LinkedHashSet;
23+
import java.util.Map;
2324
import java.util.Optional;
2425
import java.util.Set;
2526

@@ -76,8 +77,7 @@ private void configureProject(IProject project, IProgressMonitor monitor) throws
7677
Optional<GradleBuild> build = workspace.getBuild(project);
7778
if (build.isPresent()) {
7879
ModelProvider modelProvider = ((InternalGradleBuild) build.get()).getModelProvider();
79-
Collection<EclipseProject> rootProjects = modelProvider.fetchModels(EclipseProject.class,
80-
FetchStrategy.FORCE_RELOAD, this.tokenSource, monitor);
80+
Collection<EclipseProject> rootProjects = getRootProjects(monitor, modelProvider);
8181
EclipseProject eclipseProject = findProjectByName(rootProjects, project.getName());
8282
if (hasSpringFormatPlugin(eclipseProject)) {
8383
ProjectSettingsFilesLocator locator = new ProjectSettingsFilesLocator(getSearchFolders(rootProjects));
@@ -86,6 +86,13 @@ private void configureProject(IProject project, IProgressMonitor monitor) throws
8686
}
8787
}
8888

89+
@SuppressWarnings("unchecked")
90+
private Collection<EclipseProject> getRootProjects(IProgressMonitor monitor, ModelProvider modelProvider) {
91+
Object models = modelProvider.fetchModels(EclipseProject.class,
92+
FetchStrategy.FORCE_RELOAD, this.tokenSource, monitor);
93+
return (Collection<EclipseProject>) ((models instanceof Map) ? ((Map<?, ?>) models).values() : models);
94+
}
95+
8996
private EclipseProject findProjectByName(Iterable<? extends EclipseProject> candidates, String name) {
9097
for (EclipseProject candidate : candidates) {
9198
if (name.equals(candidate.getName())) {

0 commit comments

Comments
 (0)