ON/OFF support for auto-config reconciling in factories file
This commit is contained in:
@@ -137,7 +137,7 @@ public class BootLanguageServerInitializer implements InitializingBean {
|
||||
BootJavaLanguageServerComponents bootJavaLanguageServerComponent = new BootJavaLanguageServerComponents(appContext);
|
||||
builder.add(bootJavaLanguageServerComponent);
|
||||
builder.add(new SpringXMLLanguageServerComponents(server, springIndexer, params, config));
|
||||
builder.add(new SpringFactoriesLanguageServerComponents(projectFinder, springIndexer));
|
||||
builder.add(new SpringFactoriesLanguageServerComponents(projectFinder, springIndexer, config));
|
||||
components = builder.build(server);
|
||||
|
||||
projectReconciler = (IJavaProjectReconcileEngine) bootJavaLanguageServerComponent.getReconcileEngine().get();
|
||||
|
||||
@@ -13,6 +13,7 @@ package org.springframework.ide.vscode.boot.factories;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
import org.springframework.ide.vscode.boot.app.BootJavaConfig;
|
||||
import org.springframework.ide.vscode.boot.app.SpringSymbolIndex;
|
||||
import org.springframework.ide.vscode.commons.languageserver.composable.LanguageServerComponents;
|
||||
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
|
||||
@@ -26,9 +27,9 @@ public class SpringFactoriesLanguageServerComponents implements LanguageServerCo
|
||||
private SpringFactoriesReconcileEngine reconciler;
|
||||
private SpringSymbolIndex springIndex;
|
||||
|
||||
public SpringFactoriesLanguageServerComponents(JavaProjectFinder projectFinder, SpringSymbolIndex springIndex) {
|
||||
public SpringFactoriesLanguageServerComponents(JavaProjectFinder projectFinder, SpringSymbolIndex springIndex, BootJavaConfig config) {
|
||||
this.springIndex = springIndex;
|
||||
reconciler = new SpringFactoriesReconcileEngine(projectFinder);
|
||||
reconciler = new SpringFactoriesReconcileEngine(projectFinder, config);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
package org.springframework.ide.vscode.boot.factories;
|
||||
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2022 VMware, Inc.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
@@ -10,15 +8,19 @@ package org.springframework.ide.vscode.boot.factories;
|
||||
* Contributors:
|
||||
* VMware, Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.boot.factories;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.eclipse.lsp4j.TextDocumentIdentifier;
|
||||
import org.springframework.ide.vscode.boot.app.BootJavaConfig;
|
||||
import org.springframework.ide.vscode.boot.java.Boot3JavaProblemType;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
import org.springframework.ide.vscode.commons.java.SpringProjectUtil;
|
||||
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.IProblemCollector;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.IReconcileEngine;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemCategory.Toggle.Option;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ReconcileProblemImpl;
|
||||
import org.springframework.ide.vscode.commons.util.text.IDocument;
|
||||
import org.springframework.ide.vscode.java.properties.antlr.parser.AntlrParser;
|
||||
@@ -33,23 +35,25 @@ public class SpringFactoriesReconcileEngine implements IReconcileEngine {
|
||||
}
|
||||
|
||||
private final JavaProjectFinder projectFinder;
|
||||
private AntlrParser parser = new AntlrParser();
|
||||
|
||||
private final Map<String, KeyValuePairReconciler> keyValuePairReconcilers = Map.of(
|
||||
"org.springframework.boot.autoconfigure.EnableAutoConfiguration", (project, pair, problemCollector) -> {
|
||||
if (SpringProjectUtil.springBootVersionGreaterOrEqual(3, 0, 0).test(project)) {
|
||||
ReconcileProblemImpl problem = new ReconcileProblemImpl(
|
||||
Boot3JavaProblemType.FACTORIES_KEY_NOT_SUPPORTED,
|
||||
"Key is not supported as of Spring Boot 3. See Boot 3 documentation topic \"Locating Auto-configuration Candidates\"",
|
||||
pair.getOffset(),
|
||||
pair.getLength());
|
||||
problemCollector.accept(problem);
|
||||
}
|
||||
}
|
||||
);
|
||||
private final AntlrParser parser = new AntlrParser();
|
||||
private final Map<String, KeyValuePairReconciler> keyValuePairReconcilers;
|
||||
|
||||
public SpringFactoriesReconcileEngine(JavaProjectFinder projectFinder) {
|
||||
public SpringFactoriesReconcileEngine(JavaProjectFinder projectFinder, BootJavaConfig config) {
|
||||
this.projectFinder = projectFinder;
|
||||
|
||||
keyValuePairReconcilers = Map.of(
|
||||
"org.springframework.boot.autoconfigure.EnableAutoConfiguration", (project, pair, problemCollector) -> {
|
||||
Option applicability = config.getProblemApplicability(Boot3JavaProblemType.FACTORIES_KEY_NOT_SUPPORTED);
|
||||
if (applicability == Option.ON || (applicability == Option.AUTO && SpringProjectUtil.springBootVersionGreaterOrEqual(3, 0, 0).test(project))) {
|
||||
ReconcileProblemImpl problem = new ReconcileProblemImpl(
|
||||
Boot3JavaProblemType.FACTORIES_KEY_NOT_SUPPORTED,
|
||||
"Key is not supported as of Spring Boot 3. See Boot 3 documentation topic \"Locating Auto-configuration Candidates\"",
|
||||
pair.getOffset(),
|
||||
pair.getLength());
|
||||
problemCollector.accept(problem);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user