diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRefactorings.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRefactorings.java index 464e0bdce..d8656015d 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRefactorings.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/RewriteRefactorings.java @@ -148,6 +148,9 @@ public class RewriteRefactorings implements CodeActionResolver, QuickfixHandler if (project.isPresent()) { boolean projectWide = data.getRecipeScope() == RecipeScope.PROJECT; Recipe r = createRecipe(data); + if (r == null) { + log.warn("Code Action failed to resolve. Could not create recipe created with id '" + data.getRecipeId() + "'."); + } List cus = Collections.emptyList(); if (projectWide) { JavaParser jp = ORAstUtils.createJavaParserBuilder(project.get()).dependsOn(data.getTypeStubs()).build(); diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AddConfigurationIfBeansPresentCodeAction.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AddConfigurationIfBeansPresentCodeAction.java index e278c093c..e5da9ced3 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AddConfigurationIfBeansPresentCodeAction.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AddConfigurationIfBeansPresentCodeAction.java @@ -34,7 +34,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; public class AddConfigurationIfBeansPresentCodeAction implements RecipeCodeActionDescriptor { - private static final String ID = "org.openrewrite.java.spring.boot2.AddConfigurationAnnotationIfBeansPresent"; + private static final String ID = AddConfigurationAnnotationIfBeansPresent.class.getName(); private static final String PROBLEM_LABEL = "'@Configuration' is missing on a class defining Spring Beans"; diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AuthorizeHttpRequestsCodeAction.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AuthorizeHttpRequestsCodeAction.java index ad2764007..142a7afc4 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AuthorizeHttpRequestsCodeAction.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AuthorizeHttpRequestsCodeAction.java @@ -17,6 +17,7 @@ import org.openrewrite.SourceFile; import org.openrewrite.Tree; import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.MethodMatcher; +import org.openrewrite.java.spring.boot2.AuthorizeHttpRequests; import org.openrewrite.java.tree.J.MethodInvocation; import org.openrewrite.java.tree.J.VariableDeclarations; import org.openrewrite.java.tree.JavaType.FullyQualified; @@ -34,7 +35,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; public class AuthorizeHttpRequestsCodeAction implements RecipeCodeActionDescriptor { - private static final String ID = "org.openrewrite.java.spring.boot2.AuthorizeHttpRequests"; + private static final String ID = AuthorizeHttpRequests.class.getName(); private static final MethodMatcher MATCH_AUTHORIZE_REQUESTS = new MethodMatcher( "org.springframework.security.config.annotation.web.builders.HttpSecurity authorizeRequests(..)"); diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AutowiredFieldIntoConstructorParameterCodeAction.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AutowiredFieldIntoConstructorParameterCodeAction.java index f053a8686..f71ffb2c3 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AutowiredFieldIntoConstructorParameterCodeAction.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/AutowiredFieldIntoConstructorParameterCodeAction.java @@ -39,6 +39,7 @@ import org.springframework.ide.vscode.commons.rewrite.config.MarkerVisitorContex import org.springframework.ide.vscode.commons.rewrite.config.RecipeCodeActionDescriptor; import org.springframework.ide.vscode.commons.rewrite.config.RecipeScope; import org.springframework.ide.vscode.commons.rewrite.java.AnnotationHierarchies; +import org.springframework.ide.vscode.commons.rewrite.java.ConvertAutowiredFieldIntoConstructorParameter; import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker; import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor; import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; @@ -48,7 +49,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.ProjectParser; public class AutowiredFieldIntoConstructorParameterCodeAction implements RecipeCodeActionDescriptor { private static final String LABEL = "Convert @Autowired field into Constructor Parameter"; - private static final String ID = "org.springframework.ide.vscode.commons.rewrite.java.ConvertAutowiredFieldIntoConstructorParameter"; + private static final String ID = ConvertAutowiredFieldIntoConstructorParameter.class.getName(); private static final String AUTOWIRED = "org.springframework.beans.factory.annotation.Autowired"; @Override diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/BeanMethodNotPublicProblem.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/BeanMethodNotPublicProblem.java index adedf3283..bddc2e6da 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/BeanMethodNotPublicProblem.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/BeanMethodNotPublicProblem.java @@ -18,6 +18,7 @@ import org.openrewrite.Tree; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.AnnotationMatcher; import org.openrewrite.java.JavaVisitor; +import org.openrewrite.java.spring.BeanMethodsNotPublic; import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.TypeUtils; import org.openrewrite.marker.Range; @@ -33,7 +34,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; public class BeanMethodNotPublicProblem implements RecipeCodeActionDescriptor { - private static final String ID = "org.openrewrite.java.spring.BeanMethodsNotPublic"; + private static final String ID = BeanMethodsNotPublic.class.getName(); private static final String LABEL = "Remove 'public' from @Bean method"; diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/BeanPostProcessingIgnoreInAotProblem.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/BeanPostProcessingIgnoreInAotProblem.java index 389ebe923..4ea787323 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/BeanPostProcessingIgnoreInAotProblem.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/BeanPostProcessingIgnoreInAotProblem.java @@ -35,7 +35,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; public class BeanPostProcessingIgnoreInAotProblem implements RecipeCodeActionDescriptor { - private static final String RECIPE_ID = "org.springframework.ide.vscode.commons.rewrite.java.BeanPostProcessingIgnoreInAot"; + private static final String RECIPE_ID = BeanPostProcessingIgnoreInAot.class.getName(); private static final String LABEL = "Add method 'isBeanExcludedFromAotProcessing' that returns 'false'"; @Override diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/EntityIdForRepoProblem.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/EntityIdForRepoProblem.java index 1dd8ea023..dca716934 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/EntityIdForRepoProblem.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/EntityIdForRepoProblem.java @@ -28,7 +28,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker; public class EntityIdForRepoProblem implements RecipeCodeActionDescriptor { - private static final String ID = "org.openrewrite.java.spring.boot2.search.EntityIdForRepositoryVisitor"; + private static final String ID = EntityIdForRepositoryVisitor.class.getName(); @Override public JavaVisitor getMarkerVisitor(MarkerVisitorContext context) { diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoAutowiredOnConstructorProblem.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoAutowiredOnConstructorProblem.java index d52bda26e..5ba966a88 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoAutowiredOnConstructorProblem.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoAutowiredOnConstructorProblem.java @@ -20,6 +20,7 @@ import org.openrewrite.Tree; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.AnnotationMatcher; import org.openrewrite.java.JavaVisitor; +import org.openrewrite.java.spring.NoAutowiredOnConstructor; import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.J.ClassDeclaration; import org.openrewrite.java.tree.J.MethodDeclaration; @@ -41,7 +42,7 @@ public class NoAutowiredOnConstructorProblem implements RecipeCodeActionDescript private static final AnnotationMatcher BOOT_TEST_ANNOTATION_MATCHER = new AnnotationMatcher( "@org.springframework.boot.test.context.SpringBootTest", true); - private static final String ID = "org.openrewrite.java.spring.NoAutowiredOnConstructor"; + private static final String ID = NoAutowiredOnConstructor.class.getName(); private static final String LABEL = "Remove Unnecessary @Autowired"; @Override diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoRepoAnnotationProblem.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoRepoAnnotationProblem.java index e32aa83da..721e139ef 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoRepoAnnotationProblem.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoRepoAnnotationProblem.java @@ -19,6 +19,7 @@ import org.openrewrite.SourceFile; import org.openrewrite.Tree; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.JavaVisitor; +import org.openrewrite.java.spring.NoRepoAnnotationOnRepoInterface; import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.J.ClassDeclaration; import org.openrewrite.java.tree.JavaType; @@ -36,7 +37,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; public class NoRepoAnnotationProblem implements RecipeCodeActionDescriptor { - private static final String ID = "org.openrewrite.java.spring.NoRepoAnnotationOnRepoInterface"; + private static final String ID = NoRepoAnnotationOnRepoInterface.class.getName(); private static final String LABEL = "Remove Unnecessary @Repository"; private static final String INTERFACE_REPOSITORY = "org.springframework.data.repository.Repository"; private static final String ANNOTATION_REPOSITORY = Annotations.REPOSITORY; diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoRequestMappingAnnotationCodeAction.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoRequestMappingAnnotationCodeAction.java index 5164dda5f..2a95eb75c 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoRequestMappingAnnotationCodeAction.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NoRequestMappingAnnotationCodeAction.java @@ -19,6 +19,7 @@ import org.openrewrite.SourceFile; import org.openrewrite.Tree; import org.openrewrite.java.AnnotationMatcher; import org.openrewrite.java.JavaVisitor; +import org.openrewrite.java.spring.NoRequestMappingAnnotation; import org.openrewrite.java.tree.J; import org.openrewrite.marker.Range; import org.springframework.ide.vscode.boot.java.Boot2JavaProblemType; @@ -34,7 +35,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; public class NoRequestMappingAnnotationCodeAction implements RecipeCodeActionDescriptor { private static final String LABEL = "Replace @RequestMapping with specific @GetMapping, @PostMapping etc."; - private static final String ID = "org.openrewrite.java.spring.NoRequestMappingAnnotation"; + private static final String ID = NoRequestMappingAnnotation.class.getName(); private static final AnnotationMatcher REQUEST_MAPPING_ANNOTATION_MATCHER = new AnnotationMatcher("@org.springframework.web.bind.annotation.RequestMapping"); @Override diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NotRegisteredBeansProblem.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NotRegisteredBeansProblem.java index 12c414403..c6d460765 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NotRegisteredBeansProblem.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/NotRegisteredBeansProblem.java @@ -39,6 +39,7 @@ import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemTy import org.springframework.ide.vscode.commons.rewrite.config.MarkerVisitorContext; import org.springframework.ide.vscode.commons.rewrite.config.RecipeCodeActionDescriptor; import org.springframework.ide.vscode.commons.rewrite.config.RecipeScope; +import org.springframework.ide.vscode.commons.rewrite.java.DefineMethod; import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker; import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor; import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; @@ -49,7 +50,7 @@ import com.google.common.collect.ImmutableSet; public class NotRegisteredBeansProblem implements RecipeCodeActionDescriptor { - private static final String DEFINE_METHOD_RECIPE = "org.springframework.ide.vscode.commons.rewrite.java.DefineMethod"; + private static final String DEFINE_METHOD_RECIPE = DefineMethod.class.getName(); private static final List AOT_BEANS = List.of( "org.springframework.beans.factory.aot.BeanFactoryInitializationAotProcessor", diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/PreciseBeanTypeProblem.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/PreciseBeanTypeProblem.java index e90069008..9126375b1 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/PreciseBeanTypeProblem.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/PreciseBeanTypeProblem.java @@ -19,6 +19,7 @@ import org.openrewrite.ExecutionContext; import org.openrewrite.SourceFile; import org.openrewrite.Tree; import org.openrewrite.java.JavaVisitor; +import org.openrewrite.java.spring.boot3.PreciseBeanType; import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.J.Return; import org.openrewrite.java.tree.JavaType; @@ -35,7 +36,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; public class PreciseBeanTypeProblem implements RecipeCodeActionDescriptor { - private static final String RECIPE_ID = "org.openrewrite.java.spring.boot3.PreciseBeanType"; + private static final String RECIPE_ID = PreciseBeanType.class.getName(); private static final String LABEL = "Ensure concrete bean type"; diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/UnnecessarySpringExtensionProblem.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/UnnecessarySpringExtensionProblem.java index 02de24a5d..fd88a7bb2 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/UnnecessarySpringExtensionProblem.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/UnnecessarySpringExtensionProblem.java @@ -21,6 +21,7 @@ import org.openrewrite.Tree; import org.openrewrite.internal.ListUtils; import org.openrewrite.java.AnnotationMatcher; import org.openrewrite.java.JavaVisitor; +import org.openrewrite.java.spring.boot2.UnnecessarySpringExtension; import org.openrewrite.java.tree.J.ClassDeclaration; import org.openrewrite.java.tree.JavaType.FullyQualified; import org.openrewrite.java.tree.TypeUtils; @@ -36,7 +37,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; public class UnnecessarySpringExtensionProblem implements RecipeCodeActionDescriptor { private static final String LABEL = "Remove unnecessary @SpringExtension"; - private static final String ID = "org.openrewrite.java.spring.boot2.UnnecessarySpringExtension"; + private static final String ID = UnnecessarySpringExtension.class.getName(); private static final List SPRING_BOOT_TEST_ANNOTATIONS = Arrays.asList( "org.springframework.boot.test.context.SpringBootTest", "org.springframework.boot.test.autoconfigure.jdbc.JdbcTest", diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/WebSecurityConfigurerAdapterCodeAction.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/WebSecurityConfigurerAdapterCodeAction.java index bf3d7ee40..a2cb998ce 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/WebSecurityConfigurerAdapterCodeAction.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/rewrite/reconcile/WebSecurityConfigurerAdapterCodeAction.java @@ -17,6 +17,7 @@ import org.openrewrite.ExecutionContext; import org.openrewrite.SourceFile; import org.openrewrite.Tree; import org.openrewrite.java.JavaVisitor; +import org.openrewrite.java.spring.security5.WebSecurityConfigurerAdapter; import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.J.ClassDeclaration; import org.openrewrite.java.tree.JavaType; @@ -37,7 +38,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; public class WebSecurityConfigurerAdapterCodeAction implements RecipeCodeActionDescriptor { - private static final String ID = "org.openrewrite.java.spring.boot2.WebSecurityConfigurerAdapter"; + private static final String ID = WebSecurityConfigurerAdapter.class.getName(); private static final String FQN_WEB_SECURITY_CONFIGURER_ADAPTER = "org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter";