Skip to content

Commit d0892b2

Browse files
committed
structure view command handler can now deal with requests for specific projects
1 parent 3724b64 commit d0892b2

File tree

1 file changed

+16
-3
lines changed
  • headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/commands

1 file changed

+16
-3
lines changed

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/commands/SpringIndexCommands.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.util.Objects;
1818
import java.util.Set;
1919
import java.util.stream.Collectors;
20+
import java.util.stream.Stream;
2021

2122
import org.eclipse.lsp4j.ExecuteCommandParams;
2223
import org.slf4j.Logger;
@@ -59,7 +60,13 @@ public SpringIndexCommands(SimpleLanguageServer server, SpringMetamodelIndex spr
5960
StructureCommandArgs args = StructureCommandArgs.parseFrom(params);
6061

6162
CachedSpringMetamodelIndex cachedIndex = new CachedSpringMetamodelIndex(springIndex);
62-
return projectFinder.all().stream()
63+
64+
Stream<? extends IJavaProject> projects = projectFinder.all().stream();
65+
if (args.affectedProjects != null && args.affectedProjects.size() > 0) {
66+
projects = projects.filter(project -> args.affectedProjects.contains(project.getElementName()));
67+
}
68+
69+
return projects
6370
.sorted(Comparator.comparing(IJavaProject::getElementName))
6471
.map(project -> nodeFrom(project, cachedIndex, args.updateMetadata,
6572
args.selectedGroups == null ? null : args.selectedGroups.get(project.getElementName())))
@@ -122,11 +129,12 @@ private Node nodeFrom(IJavaProject project, CachedSpringMetamodelIndex springInd
122129
}
123130
}
124131

125-
private static record StructureCommandArgs(boolean updateMetadata, Map<String, Set<String>> selectedGroups) {
132+
private static record StructureCommandArgs(boolean updateMetadata, List<String> affectedProjects, Map<String, Set<String>> selectedGroups) {
126133

127134
public static StructureCommandArgs parseFrom(ExecuteCommandParams params) {
128135
boolean updateMetadata = false;
129136
Map<String, Set<String>> selectedGroups = null;
137+
List<String> affectedProjects = null;
130138

131139
List<Object> arguments = params.getArguments();
132140
if (arguments != null && arguments.size() == 1) {
@@ -137,14 +145,19 @@ public static StructureCommandArgs parseFrom(ExecuteCommandParams params) {
137145
JsonElement jsonElement = paramObject.get("updateMetadata");
138146
updateMetadata = jsonElement != null && jsonElement instanceof JsonPrimitive ? jsonElement.getAsBoolean() : false;
139147

148+
JsonElement affectedProjectsElement = paramObject.get("affectedProjects");
149+
if (affectedProjectsElement != null) {
150+
affectedProjects = new Gson().fromJson(affectedProjectsElement, new TypeToken<List<String>>(){}.getType());
151+
}
152+
140153
JsonElement groupsElement = paramObject.get("groups");
141154
if (groupsElement != null) {
142155
selectedGroups = new Gson().fromJson(groupsElement, new TypeToken<Map<String, Set<String>>>() {});
143156
}
144157
}
145158
}
146159

147-
return new StructureCommandArgs(updateMetadata, selectedGroups);
160+
return new StructureCommandArgs(updateMetadata, affectedProjects, selectedGroups);
148161
}
149162
}
150163

0 commit comments

Comments
 (0)