diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerBootApp.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerBootApp.java index a2bc78570..e58b8f265 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerBootApp.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootLanguageServerBootApp.java @@ -15,6 +15,7 @@ import java.net.URI; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -38,6 +39,9 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.ide.vscode.boot.common.PropertyCompletionFactory; import org.springframework.ide.vscode.boot.common.RelaxedNameConfig; +import org.springframework.ide.vscode.boot.java.handlers.BootJavaCodeActionProvider; +import org.springframework.ide.vscode.boot.java.handlers.BootJavaReconcileEngine; +import org.springframework.ide.vscode.boot.java.handlers.JavaCodeActionHandler; import org.springframework.ide.vscode.boot.java.links.DefaultJavaElementLocationProvider; import org.springframework.ide.vscode.boot.java.links.EclipseJavaDocumentUriProvider; import org.springframework.ide.vscode.boot.java.links.JavaDocumentUriProvider; @@ -48,9 +52,11 @@ import org.springframework.ide.vscode.boot.java.links.SourceLinkFactory; import org.springframework.ide.vscode.boot.java.links.SourceLinks; import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnectorRemote; import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnectorRemote.RemoteBootAppData; -import org.springframework.ide.vscode.boot.java.reconcilers.JdtReconciler; import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnectorService; import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessLiveDataProvider; +import org.springframework.ide.vscode.boot.java.reconcilers.JavaReconciler; +import org.springframework.ide.vscode.boot.java.reconcilers.JdtReconciler; +import org.springframework.ide.vscode.boot.java.rewrite.RewriteRecipeRepository; import org.springframework.ide.vscode.boot.java.utils.CompilationUnitCache; import org.springframework.ide.vscode.boot.java.utils.SymbolCache; import org.springframework.ide.vscode.boot.java.utils.SymbolCacheOnDisc; @@ -331,4 +337,15 @@ public class BootLanguageServerBootApp { } }; } + + @Bean + BootJavaReconcileEngine getBootJavaReconcileEngine(JavaProjectFinder projectFinder, JavaReconciler[] javaReconcilers, SimpleLanguageServer server, + BootJavaConfig config, ProjectObserver projectObserver, Optional recipeRepoOpt) { + return new BootJavaReconcileEngine(projectFinder, javaReconcilers, server, config, projectObserver, recipeRepoOpt.orElse(null)); + } + + @Bean + BootJavaCodeActionProvider getBootJavaCodeActionProvider(JavaProjectFinder projectFinder, Collection codeActionHandlers) { + return new BootJavaCodeActionProvider(projectFinder, codeActionHandlers); + } } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java index 1364f7499..58aa9edef 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java @@ -14,7 +14,6 @@ import java.time.Duration; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; @@ -38,7 +37,6 @@ import org.springframework.ide.vscode.boot.java.handlers.BootJavaWorkspaceSymbol import org.springframework.ide.vscode.boot.java.handlers.CodeLensProvider; import org.springframework.ide.vscode.boot.java.handlers.HighlightProvider; import org.springframework.ide.vscode.boot.java.handlers.HoverProvider; -import org.springframework.ide.vscode.boot.java.handlers.JavaCodeActionHandler; import org.springframework.ide.vscode.boot.java.handlers.ReferenceProvider; import org.springframework.ide.vscode.boot.java.links.SourceLinks; import org.springframework.ide.vscode.boot.java.livehover.ActiveProfilesProvider; @@ -51,15 +49,10 @@ import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessConnec import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessLiveDataProvider; import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessLiveHoverUpdater; import org.springframework.ide.vscode.boot.java.livehover.v2.SpringProcessTracker; -import org.springframework.ide.vscode.boot.java.reconcilers.JavaReconciler; -import org.springframework.ide.vscode.boot.java.reconcilers.JdtReconciler; import org.springframework.ide.vscode.boot.java.requestmapping.LiveAppURLSymbolProvider; import org.springframework.ide.vscode.boot.java.requestmapping.RequestMappingHoverProvider; import org.springframework.ide.vscode.boot.java.requestmapping.WebfluxHandlerCodeLensProvider; import org.springframework.ide.vscode.boot.java.requestmapping.WebfluxRouteHighlightProdivder; -import org.springframework.ide.vscode.boot.java.rewrite.RewriteCompilationUnitCache; -import org.springframework.ide.vscode.boot.java.rewrite.RewriteRecipeRepository; -import org.springframework.ide.vscode.boot.java.rewrite.RewriteReconciler; import org.springframework.ide.vscode.boot.java.utils.CompilationUnitCache; import org.springframework.ide.vscode.boot.java.utils.SpringLiveChangeDetectionWatchdog; import org.springframework.ide.vscode.boot.java.value.ValueHoverProvider; @@ -188,16 +181,9 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent highlightsEngine = createDocumentHighlightEngine(indexer); documents.onDocumentHighlight(highlightsEngine); - Map recipeRepoBeans = appContext.getBeansOfType(RewriteRecipeRepository.class); - RewriteRecipeRepository recipeRepo = recipeRepoBeans.isEmpty() ? null : recipeRepoBeans.values().iterator().next(); + reconcileEngine = appContext.getBean(BootJavaReconcileEngine.class); - reconcileEngine = new BootJavaReconcileEngine(projectFinder, - appContext.getBeansOfType(JavaReconciler.class).values().toArray(new JavaReconciler[0]), - server, config, projectObserver, recipeRepo); - - codeActionProvider = new BootJavaCodeActionProvider( - projectFinder, - appContext.getBeansOfType(JavaCodeActionHandler.class).values()); + codeActionProvider = appContext.getBean(BootJavaCodeActionProvider.class); config.addListener(ignore -> { log.info("update live process tracker settings - start");