More robust rewrite recipe ids for code actions

This commit is contained in:
aboyko
2023-06-15 16:05:07 -04:00
parent b981c63817
commit d15433e1c3
14 changed files with 26 additions and 13 deletions

View File

@@ -148,6 +148,9 @@ public class RewriteRefactorings implements CodeActionResolver, QuickfixHandler
if (project.isPresent()) { if (project.isPresent()) {
boolean projectWide = data.getRecipeScope() == RecipeScope.PROJECT; boolean projectWide = data.getRecipeScope() == RecipeScope.PROJECT;
Recipe r = createRecipe(data); Recipe r = createRecipe(data);
if (r == null) {
log.warn("Code Action failed to resolve. Could not create recipe created with id '" + data.getRecipeId() + "'.");
}
List<CompilationUnit> cus = Collections.emptyList(); List<CompilationUnit> cus = Collections.emptyList();
if (projectWide) { if (projectWide) {
JavaParser jp = ORAstUtils.createJavaParserBuilder(project.get()).dependsOn(data.getTypeStubs()).build(); JavaParser jp = ORAstUtils.createJavaParserBuilder(project.get()).dependsOn(data.getTypeStubs()).build();

View File

@@ -34,7 +34,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor;
public class AddConfigurationIfBeansPresentCodeAction implements RecipeCodeActionDescriptor { 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"; private static final String PROBLEM_LABEL = "'@Configuration' is missing on a class defining Spring Beans";

View File

@@ -17,6 +17,7 @@ import org.openrewrite.SourceFile;
import org.openrewrite.Tree; import org.openrewrite.Tree;
import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.JavaVisitor;
import org.openrewrite.java.MethodMatcher; 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.MethodInvocation;
import org.openrewrite.java.tree.J.VariableDeclarations; import org.openrewrite.java.tree.J.VariableDeclarations;
import org.openrewrite.java.tree.JavaType.FullyQualified; 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 { 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( private static final MethodMatcher MATCH_AUTHORIZE_REQUESTS = new MethodMatcher(
"org.springframework.security.config.annotation.web.builders.HttpSecurity authorizeRequests(..)"); "org.springframework.security.config.annotation.web.builders.HttpSecurity authorizeRequests(..)");

View File

@@ -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.RecipeCodeActionDescriptor;
import org.springframework.ide.vscode.commons.rewrite.config.RecipeScope; 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.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.FixAssistMarker;
import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor; import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor;
import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; 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 { public class AutowiredFieldIntoConstructorParameterCodeAction implements RecipeCodeActionDescriptor {
private static final String LABEL = "Convert @Autowired field into Constructor Parameter"; 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"; private static final String AUTOWIRED = "org.springframework.beans.factory.annotation.Autowired";
@Override @Override

View File

@@ -18,6 +18,7 @@ import org.openrewrite.Tree;
import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.ListUtils;
import org.openrewrite.java.AnnotationMatcher; import org.openrewrite.java.AnnotationMatcher;
import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.JavaVisitor;
import org.openrewrite.java.spring.BeanMethodsNotPublic;
import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.J;
import org.openrewrite.java.tree.TypeUtils; import org.openrewrite.java.tree.TypeUtils;
import org.openrewrite.marker.Range; import org.openrewrite.marker.Range;
@@ -33,7 +34,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor;
public class BeanMethodNotPublicProblem implements RecipeCodeActionDescriptor { 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"; private static final String LABEL = "Remove 'public' from @Bean method";

View File

@@ -35,7 +35,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor;
public class BeanPostProcessingIgnoreInAotProblem implements RecipeCodeActionDescriptor { 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'"; private static final String LABEL = "Add method 'isBeanExcludedFromAotProcessing' that returns 'false'";
@Override @Override

View File

@@ -28,7 +28,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker;
public class EntityIdForRepoProblem implements RecipeCodeActionDescriptor { 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 @Override
public JavaVisitor<ExecutionContext> getMarkerVisitor(MarkerVisitorContext context) { public JavaVisitor<ExecutionContext> getMarkerVisitor(MarkerVisitorContext context) {

View File

@@ -20,6 +20,7 @@ import org.openrewrite.Tree;
import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.ListUtils;
import org.openrewrite.java.AnnotationMatcher; import org.openrewrite.java.AnnotationMatcher;
import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.JavaVisitor;
import org.openrewrite.java.spring.NoAutowiredOnConstructor;
import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.J;
import org.openrewrite.java.tree.J.ClassDeclaration; import org.openrewrite.java.tree.J.ClassDeclaration;
import org.openrewrite.java.tree.J.MethodDeclaration; 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( private static final AnnotationMatcher BOOT_TEST_ANNOTATION_MATCHER = new AnnotationMatcher(
"@org.springframework.boot.test.context.SpringBootTest", true); "@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"; private static final String LABEL = "Remove Unnecessary @Autowired";
@Override @Override

View File

@@ -19,6 +19,7 @@ import org.openrewrite.SourceFile;
import org.openrewrite.Tree; import org.openrewrite.Tree;
import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.ListUtils;
import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.JavaVisitor;
import org.openrewrite.java.spring.NoRepoAnnotationOnRepoInterface;
import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.J;
import org.openrewrite.java.tree.J.ClassDeclaration; import org.openrewrite.java.tree.J.ClassDeclaration;
import org.openrewrite.java.tree.JavaType; import org.openrewrite.java.tree.JavaType;
@@ -36,7 +37,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor;
public class NoRepoAnnotationProblem implements RecipeCodeActionDescriptor { 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 LABEL = "Remove Unnecessary @Repository";
private static final String INTERFACE_REPOSITORY = "org.springframework.data.repository.Repository"; private static final String INTERFACE_REPOSITORY = "org.springframework.data.repository.Repository";
private static final String ANNOTATION_REPOSITORY = Annotations.REPOSITORY; private static final String ANNOTATION_REPOSITORY = Annotations.REPOSITORY;

View File

@@ -19,6 +19,7 @@ import org.openrewrite.SourceFile;
import org.openrewrite.Tree; import org.openrewrite.Tree;
import org.openrewrite.java.AnnotationMatcher; import org.openrewrite.java.AnnotationMatcher;
import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.JavaVisitor;
import org.openrewrite.java.spring.NoRequestMappingAnnotation;
import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.J;
import org.openrewrite.marker.Range; import org.openrewrite.marker.Range;
import org.springframework.ide.vscode.boot.java.Boot2JavaProblemType; 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 { public class NoRequestMappingAnnotationCodeAction implements RecipeCodeActionDescriptor {
private static final String LABEL = "Replace @RequestMapping with specific @GetMapping, @PostMapping etc."; 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"); private static final AnnotationMatcher REQUEST_MAPPING_ANNOTATION_MATCHER = new AnnotationMatcher("@org.springframework.web.bind.annotation.RequestMapping");
@Override @Override

View File

@@ -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.MarkerVisitorContext;
import org.springframework.ide.vscode.commons.rewrite.config.RecipeCodeActionDescriptor; 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.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.FixAssistMarker;
import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor; import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor;
import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor; import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor;
@@ -49,7 +50,7 @@ import com.google.common.collect.ImmutableSet;
public class NotRegisteredBeansProblem implements RecipeCodeActionDescriptor { 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<String> AOT_BEANS = List.of( private static final List<String> AOT_BEANS = List.of(
"org.springframework.beans.factory.aot.BeanFactoryInitializationAotProcessor", "org.springframework.beans.factory.aot.BeanFactoryInitializationAotProcessor",

View File

@@ -19,6 +19,7 @@ import org.openrewrite.ExecutionContext;
import org.openrewrite.SourceFile; import org.openrewrite.SourceFile;
import org.openrewrite.Tree; import org.openrewrite.Tree;
import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.JavaVisitor;
import org.openrewrite.java.spring.boot3.PreciseBeanType;
import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.J;
import org.openrewrite.java.tree.J.Return; import org.openrewrite.java.tree.J.Return;
import org.openrewrite.java.tree.JavaType; import org.openrewrite.java.tree.JavaType;
@@ -35,7 +36,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor;
public class PreciseBeanTypeProblem implements RecipeCodeActionDescriptor { 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"; private static final String LABEL = "Ensure concrete bean type";

View File

@@ -21,6 +21,7 @@ import org.openrewrite.Tree;
import org.openrewrite.internal.ListUtils; import org.openrewrite.internal.ListUtils;
import org.openrewrite.java.AnnotationMatcher; import org.openrewrite.java.AnnotationMatcher;
import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.JavaVisitor;
import org.openrewrite.java.spring.boot2.UnnecessarySpringExtension;
import org.openrewrite.java.tree.J.ClassDeclaration; import org.openrewrite.java.tree.J.ClassDeclaration;
import org.openrewrite.java.tree.JavaType.FullyQualified; import org.openrewrite.java.tree.JavaType.FullyQualified;
import org.openrewrite.java.tree.TypeUtils; import org.openrewrite.java.tree.TypeUtils;
@@ -36,7 +37,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor;
public class UnnecessarySpringExtensionProblem implements RecipeCodeActionDescriptor { public class UnnecessarySpringExtensionProblem implements RecipeCodeActionDescriptor {
private static final String LABEL = "Remove unnecessary @SpringExtension"; 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<String> SPRING_BOOT_TEST_ANNOTATIONS = Arrays.asList( private static final List<String> SPRING_BOOT_TEST_ANNOTATIONS = Arrays.asList(
"org.springframework.boot.test.context.SpringBootTest", "org.springframework.boot.test.context.SpringBootTest",
"org.springframework.boot.test.autoconfigure.jdbc.JdbcTest", "org.springframework.boot.test.autoconfigure.jdbc.JdbcTest",

View File

@@ -17,6 +17,7 @@ import org.openrewrite.ExecutionContext;
import org.openrewrite.SourceFile; import org.openrewrite.SourceFile;
import org.openrewrite.Tree; import org.openrewrite.Tree;
import org.openrewrite.java.JavaVisitor; import org.openrewrite.java.JavaVisitor;
import org.openrewrite.java.spring.security5.WebSecurityConfigurerAdapter;
import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.J;
import org.openrewrite.java.tree.J.ClassDeclaration; import org.openrewrite.java.tree.J.ClassDeclaration;
import org.openrewrite.java.tree.JavaType; import org.openrewrite.java.tree.JavaType;
@@ -37,7 +38,7 @@ import org.springframework.ide.vscode.commons.rewrite.java.JavaMarkerVisitor;
public class WebSecurityConfigurerAdapterCodeAction implements RecipeCodeActionDescriptor { 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"; private static final String FQN_WEB_SECURITY_CONFIGURER_ADAPTER = "org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter";