Skip to content

Commit ae43ae9

Browse files
committed
ON/OFF support for auto-config reconciling in factories file
1 parent 6aa25ef commit ae43ae9

File tree

3 files changed

+25
-20
lines changed

3 files changed

+25
-20
lines changed

Diff for: headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerInitializer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public void afterPropertiesSet() throws Exception {
137137
BootJavaLanguageServerComponents bootJavaLanguageServerComponent = new BootJavaLanguageServerComponents(appContext);
138138
builder.add(bootJavaLanguageServerComponent);
139139
builder.add(new SpringXMLLanguageServerComponents(server, springIndexer, params, config));
140-
builder.add(new SpringFactoriesLanguageServerComponents(projectFinder, springIndexer));
140+
builder.add(new SpringFactoriesLanguageServerComponents(projectFinder, springIndexer, config));
141141
components = builder.build(server);
142142

143143
projectReconciler = (IJavaProjectReconcileEngine) bootJavaLanguageServerComponent.getReconcileEngine().get();

Diff for: headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/factories/SpringFactoriesLanguageServerComponents.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import java.util.Optional;
1414
import java.util.Set;
1515

16+
import org.springframework.ide.vscode.boot.app.BootJavaConfig;
1617
import org.springframework.ide.vscode.boot.app.SpringSymbolIndex;
1718
import org.springframework.ide.vscode.commons.languageserver.composable.LanguageServerComponents;
1819
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
@@ -26,9 +27,9 @@ public class SpringFactoriesLanguageServerComponents implements LanguageServerCo
2627
private SpringFactoriesReconcileEngine reconciler;
2728
private SpringSymbolIndex springIndex;
2829

29-
public SpringFactoriesLanguageServerComponents(JavaProjectFinder projectFinder, SpringSymbolIndex springIndex) {
30+
public SpringFactoriesLanguageServerComponents(JavaProjectFinder projectFinder, SpringSymbolIndex springIndex, BootJavaConfig config) {
3031
this.springIndex = springIndex;
31-
reconciler = new SpringFactoriesReconcileEngine(projectFinder);
32+
reconciler = new SpringFactoriesReconcileEngine(projectFinder, config);
3233
}
3334

3435
@Override

Diff for: headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/factories/SpringFactoriesReconcileEngine.java

+21-17
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
package org.springframework.ide.vscode.boot.factories;
2-
31
/*******************************************************************************
42
* Copyright (c) 2022 VMware, Inc.
53
* All rights reserved. This program and the accompanying materials
@@ -10,15 +8,19 @@
108
* Contributors:
119
* VMware, Inc. - initial API and implementation
1210
*******************************************************************************/
11+
package org.springframework.ide.vscode.boot.factories;
12+
1313
import java.util.Map;
1414

1515
import org.eclipse.lsp4j.TextDocumentIdentifier;
16+
import org.springframework.ide.vscode.boot.app.BootJavaConfig;
1617
import org.springframework.ide.vscode.boot.java.Boot3JavaProblemType;
1718
import org.springframework.ide.vscode.commons.java.IJavaProject;
1819
import org.springframework.ide.vscode.commons.java.SpringProjectUtil;
1920
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
2021
import org.springframework.ide.vscode.commons.languageserver.reconcile.IProblemCollector;
2122
import org.springframework.ide.vscode.commons.languageserver.reconcile.IReconcileEngine;
23+
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemCategory.Toggle.Option;
2224
import org.springframework.ide.vscode.commons.languageserver.reconcile.ReconcileProblemImpl;
2325
import org.springframework.ide.vscode.commons.util.text.IDocument;
2426
import org.springframework.ide.vscode.java.properties.antlr.parser.AntlrParser;
@@ -33,23 +35,25 @@ interface KeyValuePairReconciler {
3335
}
3436

3537
private final JavaProjectFinder projectFinder;
36-
private AntlrParser parser = new AntlrParser();
37-
38-
private final Map<String, KeyValuePairReconciler> keyValuePairReconcilers = Map.of(
39-
"org.springframework.boot.autoconfigure.EnableAutoConfiguration", (project, pair, problemCollector) -> {
40-
if (SpringProjectUtil.springBootVersionGreaterOrEqual(3, 0, 0).test(project)) {
41-
ReconcileProblemImpl problem = new ReconcileProblemImpl(
42-
Boot3JavaProblemType.FACTORIES_KEY_NOT_SUPPORTED,
43-
"Key is not supported as of Spring Boot 3. See Boot 3 documentation topic \"Locating Auto-configuration Candidates\"",
44-
pair.getOffset(),
45-
pair.getLength());
46-
problemCollector.accept(problem);
47-
}
48-
}
49-
);
38+
private final AntlrParser parser = new AntlrParser();
39+
private final Map<String, KeyValuePairReconciler> keyValuePairReconcilers;
5040

51-
public SpringFactoriesReconcileEngine(JavaProjectFinder projectFinder) {
41+
public SpringFactoriesReconcileEngine(JavaProjectFinder projectFinder, BootJavaConfig config) {
5242
this.projectFinder = projectFinder;
43+
44+
keyValuePairReconcilers = Map.of(
45+
"org.springframework.boot.autoconfigure.EnableAutoConfiguration", (project, pair, problemCollector) -> {
46+
Option applicability = config.getProblemApplicability(Boot3JavaProblemType.FACTORIES_KEY_NOT_SUPPORTED);
47+
if (applicability == Option.ON || (applicability == Option.AUTO && SpringProjectUtil.springBootVersionGreaterOrEqual(3, 0, 0).test(project))) {
48+
ReconcileProblemImpl problem = new ReconcileProblemImpl(
49+
Boot3JavaProblemType.FACTORIES_KEY_NOT_SUPPORTED,
50+
"Key is not supported as of Spring Boot 3. See Boot 3 documentation topic \"Locating Auto-configuration Candidates\"",
51+
pair.getOffset(),
52+
pair.getLength());
53+
problemCollector.accept(problem);
54+
}
55+
}
56+
);
5357
}
5458

5559
@Override

0 commit comments

Comments
 (0)