From 352649569d23b4cdd079cb49ab344b1f89dead4b Mon Sep 17 00:00:00 2001 From: aboyko Date: Wed, 25 Jan 2023 17:43:30 -0500 Subject: [PATCH] Unit tests failures fixed --- .../boot/app/BootLanguageServerBootApp.java | 8 +++-- .../ide/vscode/boot/app/RewriteConfig.java | 4 ++- .../BootJavaLanguageServerComponents.java | 30 ++++++++++--------- 3 files changed, 25 insertions(+), 17 deletions(-) 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 555c40390..58b2a8949 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 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2018, 2022 Pivotal, Inc. + * Copyright (c) 2018, 2023 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass; import org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; @@ -221,7 +222,8 @@ public class BootLanguageServerBootApp { return SourceLinkFactory.createSourceLinks(server, cuCache, params.projectFinder); } - @Bean RewriteCompilationUnitCache orcuCache(SimpleLanguageServer server, BootLanguageServerParams params, RewriteRecipeRepository repo) { + @ConditionalOnBean(RewriteRecipeRepository.class) + @Bean RewriteCompilationUnitCache orcuCache(SimpleLanguageServer server, BootLanguageServerParams params) { return new RewriteCompilationUnitCache(params.projectFinder, server, params.projectObserver); } @@ -297,6 +299,7 @@ public class BootLanguageServerBootApp { return new FutureProjectFinder(projectFinder, projectObserver); } + @ConditionalOnBean(RewriteRecipeRepository.class) @Bean RewriteRefactorings rewriteRefactorings(SimpleLanguageServer server, JavaProjectFinder projectFinder, RewriteRecipeRepository recipeRepo, RewriteCompilationUnitCache cuCache) { return new RewriteRefactorings(server.getTextDocumentService(), projectFinder, recipeRepo, cuCache); } @@ -312,6 +315,7 @@ public class BootLanguageServerBootApp { }; } + @ConditionalOnMissingClass("org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness") @Bean RewriteRecipeRepository rewriteRecipesRepository(SimpleLanguageServer server, JavaProjectFinder projectFinder, BootJavaConfig config) { return new RewriteRecipeRepository(server, projectFinder, config); } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/RewriteConfig.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/RewriteConfig.java index 0d7e8e634..e9609fcdc 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/RewriteConfig.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/RewriteConfig.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2022 VMware, Inc. + * Copyright (c) 2022, 2023 VMware, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -12,6 +12,7 @@ package org.springframework.ide.vscode.boot.app; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.ide.vscode.boot.java.rewrite.RewriteCodeActionHandler; @@ -23,6 +24,7 @@ import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFin import org.springframework.ide.vscode.commons.languageserver.quickfix.QuickfixRegistry; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; +@ConditionalOnBean(RewriteRecipeRepository.class) @Configuration public class RewriteConfig implements InitializingBean { 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 09ab24c80..9c035eae4 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,6 +14,7 @@ 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; @@ -187,23 +188,24 @@ public class BootJavaLanguageServerComponents implements LanguageServerComponent highlightsEngine = createDocumentHighlightEngine(indexer); documents.onDocumentHighlight(highlightsEngine); + List javaReconcilers = new ArrayList<>(); JdtReconciler jdtReconciler = new JdtReconciler(cuCache, config); + javaReconcilers.add(jdtReconciler); - RewriteCompilationUnitCache orCompilationUnitCache = appContext.getBean(RewriteCompilationUnitCache.class); + Map rewriteCuCacheBeans = appContext.getBeansOfType(RewriteCompilationUnitCache.class); + RewriteCompilationUnitCache orCompilationUnitCache = rewriteCuCacheBeans.isEmpty() ? null : rewriteCuCacheBeans.values().iterator().next(); + Map recipeRepoBeans = appContext.getBeansOfType(RewriteRecipeRepository.class); + RewriteRecipeRepository recipeRepo = recipeRepoBeans.isEmpty() ? null : recipeRepoBeans.values().iterator().next(); + if (recipeRepo != null && orCompilationUnitCache != null) { + javaReconcilers.add(new RewriteReconciler( + recipeRepo, + orCompilationUnitCache, + server.getQuickfixRegistry(), + config + )); + } - RewriteRecipeRepository recipeRepo = appContext.getBean(RewriteRecipeRepository.class); - - RewriteReconciler rewriteJavaReconciler = new RewriteReconciler( - recipeRepo, - orCompilationUnitCache, - server.getQuickfixRegistry(), - config - ); - - reconcileEngine = new BootJavaReconcileEngine(projectFinder, new JavaReconciler[] { - jdtReconciler, - rewriteJavaReconciler - }, server, config, projectObserver, recipeRepo); + reconcileEngine = new BootJavaReconcileEngine(projectFinder, javaReconcilers.toArray(new JavaReconciler[javaReconcilers.size()]), server, config, projectObserver, recipeRepo); codeActionProvider = new BootJavaCodeActionProvider( projectFinder,