Ignored problem marker + quick fix becomes CodeAction.
This commit is contained in:
@@ -32,10 +32,15 @@ public interface DiagnosticSeverityProvider {
|
||||
}
|
||||
}
|
||||
|
||||
DiagnosticSeverity getDiagnosticSeverity(ReconcileProblem problem);
|
||||
DiagnosticSeverity getDiagnosticSeverity(ProblemType problem);
|
||||
|
||||
default DiagnosticSeverity getDiagnosticSeverity(ReconcileProblem problem) {
|
||||
return getDiagnosticSeverity(problem.getType());
|
||||
}
|
||||
|
||||
static final DiagnosticSeverityProvider DEFAULT = (problem) -> {
|
||||
ProblemSeverity severity = problem.getType().getDefaultSeverity();
|
||||
ProblemSeverity severity = problem.getDefaultSeverity();
|
||||
return diagnosticSeverity(severity);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -753,7 +753,7 @@ public final class SimpleLanguageServer implements Sts4LanguageServer, LanguageC
|
||||
@Override
|
||||
public void accept(ReconcileProblem problem) {
|
||||
try {
|
||||
DiagnosticSeverity severity = getDiagnosticSeverity(problem);
|
||||
DiagnosticSeverity severity = severityProvider.getDiagnosticSeverity(problem);
|
||||
if (severity!=null) {
|
||||
Diagnostic d = new Diagnostic();
|
||||
d.setCode(problem.getCode());
|
||||
@@ -788,10 +788,6 @@ public final class SimpleLanguageServer implements Sts4LanguageServer, LanguageC
|
||||
};
|
||||
}
|
||||
|
||||
public DiagnosticSeverity getDiagnosticSeverity(ReconcileProblem problem) {
|
||||
return severityProvider.getDiagnosticSeverity(problem);
|
||||
}
|
||||
|
||||
/**
|
||||
* If reconciling is in progress, waits until reconciling has caught up to
|
||||
* all the document changes.
|
||||
@@ -824,6 +820,10 @@ public final class SimpleLanguageServer implements Sts4LanguageServer, LanguageC
|
||||
public DiagnosticService getDiagnosticService() {
|
||||
return diagnosticService;
|
||||
}
|
||||
|
||||
public DiagnosticSeverityProvider getDiagnosticSeverityProvider() {
|
||||
return severityProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleLanguageServer getServer() {
|
||||
|
||||
@@ -27,11 +27,10 @@ import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemTy
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemTypes;
|
||||
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.RecipeSpringJavaProblemDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor;
|
||||
|
||||
public class HelloMethodRenameProblemDescriptor implements RecipeSpringJavaProblemDescriptor {
|
||||
public class HelloMethodRenameProblemDescriptor implements RecipeCodeActionDescriptor {
|
||||
|
||||
private static final String LABEL = "Switch hello method into bye";
|
||||
private static final String RECIPE_ID = "org.springframework.rewrite.test.HelloMethodRenameRecipe";
|
||||
|
||||
@@ -10,22 +10,15 @@
|
||||
*******************************************************************************/
|
||||
package org.springframework.rewrite.test;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.CodeActionRepository;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.RecipeCodeActionDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.RecipeSpringJavaProblemDescriptor;
|
||||
|
||||
public class StsTestCodeActionRepo extends CodeActionRepository {
|
||||
|
||||
@Override
|
||||
public List<RecipeCodeActionDescriptor> getCodeActionDescriptors() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RecipeSpringJavaProblemDescriptor> getProblemDescriptors() {
|
||||
return List.of(new HelloMethodRenameProblemDescriptor());
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,4 @@ public abstract class CodeActionRepository {
|
||||
|
||||
public abstract List<RecipeCodeActionDescriptor> getCodeActionDescriptors();
|
||||
|
||||
public abstract List<RecipeSpringJavaProblemDescriptor> getProblemDescriptors();
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import org.openrewrite.ExecutionContext;
|
||||
import org.openrewrite.java.JavaVisitor;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemType;
|
||||
|
||||
public interface RecipeCodeActionDescriptor {
|
||||
|
||||
@@ -24,6 +25,10 @@ public interface RecipeCodeActionDescriptor {
|
||||
JavaVisitor<ExecutionContext> getMarkerVisitor(ApplicationContext applicationContext);
|
||||
|
||||
boolean isApplicable(IJavaProject project);
|
||||
|
||||
default ProblemType getProblemType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
static String buildLabel(String label, RecipeScope s) {
|
||||
switch (s) {
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
/*******************************************************************************
|
||||
* Copyright (c) 2022 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
|
||||
* https://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* VMware, Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.commons.rewrite.config;
|
||||
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemType;
|
||||
|
||||
public interface RecipeSpringJavaProblemDescriptor extends RecipeCodeActionDescriptor {
|
||||
|
||||
ProblemType getProblemType();
|
||||
|
||||
}
|
||||
@@ -77,10 +77,6 @@ public class StsEnvironment extends Environment {
|
||||
return codeActionRepos.get().flatMap(r -> r.getCodeActionDescriptors().stream()).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public List<RecipeSpringJavaProblemDescriptor> listProblemDescriptors() {
|
||||
return codeActionRepos.get().flatMap(r -> r.getProblemDescriptors().stream()).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new Builder(new Properties());
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ package org.springframework.ide.vscode.concourse;
|
||||
import org.eclipse.lsp4j.DiagnosticSeverity;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.DiagnosticSeverityProvider;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemType;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ReconcileProblem;
|
||||
import org.springframework.ide.vscode.commons.yaml.reconcile.YamlSchemaProblems;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@@ -21,12 +20,11 @@ import org.springframework.stereotype.Component;
|
||||
public class ConcourseDiagnosticSeverities implements DiagnosticSeverityProvider {
|
||||
|
||||
@Override
|
||||
public DiagnosticSeverity getDiagnosticSeverity(ReconcileProblem problem) {
|
||||
ProblemType type = problem.getType();
|
||||
public DiagnosticSeverity getDiagnosticSeverity(ProblemType type) {
|
||||
if (YamlSchemaProblems.PROPERTY_CONSTRAINT.contains(type)) {
|
||||
return DiagnosticSeverity.Warning;
|
||||
}
|
||||
return DEFAULT.getDiagnosticSeverity(problem);
|
||||
return DEFAULT.getDiagnosticSeverity(type);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ import org.springframework.beans.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.DiagnosticSeverityProvider;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemSeverity;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ReconcileProblem;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemType;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.Settings;
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
||||
import org.springframework.ide.vscode.commons.util.Assert;
|
||||
@@ -51,10 +51,10 @@ public class ProblemSeverityConfigurer implements InitializingBean {
|
||||
severityOverrides.put(code, ProblemSeverity.valueOf(severity));
|
||||
}
|
||||
}
|
||||
server.setDiagnosticSeverityProvider((ReconcileProblem problem) -> {
|
||||
ProblemSeverity severity = severityOverrides.get(problem.getType().getCode());
|
||||
server.setDiagnosticSeverityProvider((ProblemType problem) -> {
|
||||
ProblemSeverity severity = severityOverrides.get(problem.getCode());
|
||||
if (severity==null) {
|
||||
severity = problem.getType().getDefaultSeverity();
|
||||
severity = problem.getDefaultSeverity();
|
||||
}
|
||||
return DiagnosticSeverityProvider.diagnosticSeverity(severity);
|
||||
});
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.boot.java;
|
||||
|
||||
import static org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemSeverity.IGNORE;
|
||||
import static org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemSeverity.HINT;
|
||||
import static org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemSeverity.WARNING;
|
||||
|
||||
@@ -24,7 +25,11 @@ public enum Boot2JavaProblemType implements ProblemType {
|
||||
|
||||
JAVA_PUBLIC_BEAN_METHOD(HINT, "Public modifier on `@Bean` method. They no longer have to be public visibility to be usable by Spring.", "public `@Bean` method"),
|
||||
|
||||
JAVA_TEST_SPRING_EXTENSION(WARNING, "`@SpringBootTest` and all test slice annotations already applies `@SpringExtension` as of Spring Boot 2.1.0.", "Unnecessary `@SpringExtension`");
|
||||
JAVA_TEST_SPRING_EXTENSION(WARNING, "`@SpringBootTest` and all test slice annotations already applies `@SpringExtension` as of Spring Boot 2.1.0.", "Unnecessary `@SpringExtension`"),
|
||||
|
||||
JAVA_CONSTRUCTOR_PARAMETER_INJECTION(IGNORE, "Use constrcutor parameter injection", "Use constrcutor parameter injection"),
|
||||
|
||||
JAVA_PRECISE_REQUEST_MAPPING(HINT, "Use precise mapping annotation, i.e. '@GetMapping', '@PostMapping', etc.", "Use precise mapping annotation, i.e. '@GetMapping', '@PostMapping', etc.");
|
||||
|
||||
private final ProblemSeverity defaultSeverity;
|
||||
private String description;
|
||||
|
||||
@@ -12,31 +12,22 @@ package org.springframework.ide.vscode.boot.java.rewrite;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.codeaction.AutowiredFieldIntoConstructorParameterCodeAction;
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.codeaction.NoRequestMappingAnnotationCodeAction;
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.reconcile.AutowiredFieldIntoConstructorParameterCodeAction;
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.reconcile.BeanMethodNotPublicProblem;
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.reconcile.BeanPostProcessingIgnoreInAotProblem;
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.reconcile.Boot3NotSupportedTypeProblem;
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.reconcile.NoAutowiredOnConstructorProblem;
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.reconcile.NoRequestMappingAnnotationCodeAction;
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.reconcile.NotRegisteredBeansProblem;
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.reconcile.PreciseBeanTypeProblem;
|
||||
import org.springframework.ide.vscode.boot.java.rewrite.reconcile.UnnecessarySpringExtensionProblem;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.CodeActionRepository;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.RecipeCodeActionDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.RecipeSpringJavaProblemDescriptor;
|
||||
|
||||
public class BootCodeActionRepository extends CodeActionRepository {
|
||||
|
||||
@Override
|
||||
public List<RecipeCodeActionDescriptor> getCodeActionDescriptors() {
|
||||
return List.of(
|
||||
new AutowiredFieldIntoConstructorParameterCodeAction(),
|
||||
new NoRequestMappingAnnotationCodeAction()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RecipeSpringJavaProblemDescriptor> getProblemDescriptors() {
|
||||
return List.of(
|
||||
new BeanMethodNotPublicProblem(),
|
||||
new NoAutowiredOnConstructorProblem(),
|
||||
@@ -44,7 +35,9 @@ public class BootCodeActionRepository extends CodeActionRepository {
|
||||
new PreciseBeanTypeProblem(),
|
||||
new BeanPostProcessingIgnoreInAotProblem(),
|
||||
new NotRegisteredBeansProblem(),
|
||||
new Boot3NotSupportedTypeProblem()
|
||||
new Boot3NotSupportedTypeProblem(),
|
||||
new NoRequestMappingAnnotationCodeAction(),
|
||||
new AutowiredFieldIntoConstructorParameterCodeAction()
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -70,7 +70,6 @@ import org.springframework.ide.vscode.commons.rewrite.LoadUtils;
|
||||
import org.springframework.ide.vscode.commons.rewrite.LoadUtils.DurationTypeConverter;
|
||||
import org.springframework.ide.vscode.commons.rewrite.ORDocUtils;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.RecipeCodeActionDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.RecipeSpringJavaProblemDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.StsEnvironment;
|
||||
import org.springframework.ide.vscode.commons.rewrite.maven.MavenProjectParser;
|
||||
|
||||
@@ -99,8 +98,6 @@ public class RewriteRecipeRepository implements ApplicationContextAware {
|
||||
|
||||
final private List<RecipeCodeActionDescriptor> codeActionDescriptors;
|
||||
|
||||
final private List<RecipeSpringJavaProblemDescriptor> javaProblemDescriptors;
|
||||
|
||||
final private ListenerList<Void> loadListeners;
|
||||
|
||||
private ApplicationContext applicationContext;
|
||||
@@ -121,7 +118,6 @@ public class RewriteRecipeRepository implements ApplicationContextAware {
|
||||
this.recipes = new HashMap<>();
|
||||
this.globalCommandRecipes = new ArrayList<>();
|
||||
this.codeActionDescriptors = new ArrayList<>();
|
||||
this.javaProblemDescriptors = new ArrayList<>();
|
||||
this.loadListeners = new ListenerList<>();
|
||||
|
||||
server.doOnInitialized(() -> {
|
||||
@@ -159,7 +155,6 @@ public class RewriteRecipeRepository implements ApplicationContextAware {
|
||||
recipes.clear();
|
||||
globalCommandRecipes.clear();
|
||||
codeActionDescriptors.clear();
|
||||
javaProblemDescriptors.clear();
|
||||
}
|
||||
|
||||
private synchronized void loadRecipes() {
|
||||
@@ -180,7 +175,6 @@ public class RewriteRecipeRepository implements ApplicationContextAware {
|
||||
}
|
||||
}
|
||||
}
|
||||
javaProblemDescriptors.addAll(env.listProblemDescriptors());
|
||||
codeActionDescriptors.addAll(env.listCodeActionDescriptors());
|
||||
log.info("Done loading Rewrite Recipes");
|
||||
} catch (Throwable t) {
|
||||
@@ -264,15 +258,6 @@ public class RewriteRecipeRepository implements ApplicationContextAware {
|
||||
return Optional.ofNullable(recipes.get(name));
|
||||
}
|
||||
|
||||
public RecipeSpringJavaProblemDescriptor getProblemRecipeDescriptor(String id) {
|
||||
for (RecipeSpringJavaProblemDescriptor d : javaProblemDescriptors) {
|
||||
if (id.equals(d.getId())) {
|
||||
return d;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public RecipeCodeActionDescriptor getCodeActionRecipeDescriptor(String id) {
|
||||
for (RecipeCodeActionDescriptor d : codeActionDescriptors) {
|
||||
if (id.equals(d.getId())) {
|
||||
@@ -282,12 +267,24 @@ public class RewriteRecipeRepository implements ApplicationContextAware {
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<RecipeSpringJavaProblemDescriptor> getProblemRecipeDescriptors() {
|
||||
return javaProblemDescriptors;
|
||||
public List<RecipeCodeActionDescriptor> getProblemRecipeDescriptors() {
|
||||
List<RecipeCodeActionDescriptor> l = new ArrayList<>(codeActionDescriptors.size());
|
||||
for (RecipeCodeActionDescriptor d : codeActionDescriptors) {
|
||||
if (d.getProblemType() != null && server.getDiagnosticSeverityProvider().getDiagnosticSeverity(d.getProblemType()) != null) {
|
||||
l.add(d);
|
||||
}
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
public List<RecipeCodeActionDescriptor> getCodeActionRecipeDescriptors() {
|
||||
return codeActionDescriptors;
|
||||
List<RecipeCodeActionDescriptor> l = new ArrayList<>(codeActionDescriptors.size());
|
||||
for (RecipeCodeActionDescriptor d : codeActionDescriptors) {
|
||||
if (d.getProblemType() == null || server.getDiagnosticSeverityProvider().getDiagnosticSeverity(d.getProblemType()) == null) {
|
||||
l.add(d);
|
||||
}
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
public List<RecipeCodeActionDescriptor> getApplicableCodeActionRecipeDescriptors(IJavaProject project, List<RecipeCodeActionDescriptor> descriptors) {
|
||||
|
||||
@@ -46,7 +46,7 @@ import org.springframework.ide.vscode.commons.languageserver.reconcile.IProblemC
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemType;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ReconcileProblem;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ReconcileProblemImpl;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.RecipeSpringJavaProblemDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.RecipeCodeActionDescriptor;
|
||||
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.ORAstUtils;
|
||||
@@ -81,7 +81,7 @@ public class RewriteReconciler implements JavaReconciler {
|
||||
try {
|
||||
problemCollector.beginCollecting();
|
||||
|
||||
List<RecipeSpringJavaProblemDescriptor> descriptors = getProblemRecipeDescriptors(project);
|
||||
List<RecipeCodeActionDescriptor> descriptors = getProblemRecipeDescriptors(project);
|
||||
|
||||
if (!descriptors.isEmpty()) {
|
||||
CompilationUnit cu = cuCache.getCU(project, URI.create(doc.getUri()));
|
||||
@@ -104,7 +104,7 @@ public class RewriteReconciler implements JavaReconciler {
|
||||
if (astNode != null) {
|
||||
Range range = astNode.getMarkers().findFirst(Range.class).orElse(null);
|
||||
if (range != null) {
|
||||
RecipeSpringJavaProblemDescriptor recipeFixDescriptor = recipeRepo.getProblemRecipeDescriptor(m.getDescriptorId());
|
||||
RecipeCodeActionDescriptor recipeFixDescriptor = recipeRepo.getCodeActionRecipeDescriptor(m.getDescriptorId());
|
||||
if (recipeFixDescriptor != null) {
|
||||
return List.of(createProblem(doc, recipeFixDescriptor, m, range));
|
||||
}
|
||||
@@ -113,7 +113,7 @@ public class RewriteReconciler implements JavaReconciler {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
private ReconcileProblemImpl createProblem(IDocument doc, RecipeSpringJavaProblemDescriptor recipeFixDescriptor,
|
||||
private ReconcileProblemImpl createProblem(IDocument doc, RecipeCodeActionDescriptor recipeFixDescriptor,
|
||||
FixAssistMarker m, Range range) {
|
||||
ProblemType problemType = recipeFixDescriptor.getProblemType();
|
||||
ReconcileProblemImpl problem = new ReconcileProblemImpl(problemType, m.getLabel() == null ? problemType.getLabel() : m.getLabel(), range.getStart().getOffset(), range.getEnd().getOffset() - range.getStart().getOffset());
|
||||
@@ -139,7 +139,7 @@ public class RewriteReconciler implements JavaReconciler {
|
||||
|
||||
if (config.isRewriteReconcileEnabled()) {
|
||||
try {
|
||||
List<RecipeSpringJavaProblemDescriptor> descriptors = getProblemRecipeDescriptors(project);
|
||||
List<RecipeCodeActionDescriptor> descriptors = getProblemRecipeDescriptors(project);
|
||||
|
||||
JavaParser javaParser = ORAstUtils.createJavaParser(project);
|
||||
if (javaParser != null) {
|
||||
@@ -170,7 +170,7 @@ public class RewriteReconciler implements JavaReconciler {
|
||||
return allProblems;
|
||||
}
|
||||
|
||||
private List<RecipeSpringJavaProblemDescriptor> getProblemRecipeDescriptors(IJavaProject project)
|
||||
private List<RecipeCodeActionDescriptor> getProblemRecipeDescriptors(IJavaProject project)
|
||||
throws InterruptedException, ExecutionException {
|
||||
return recipeRepo.getProblemRecipeDescriptors().stream().filter(d -> d.getProblemType() != null).filter(d -> {
|
||||
switch (config.getProblemApplicability(d.getProblemType())) {
|
||||
@@ -184,7 +184,7 @@ public class RewriteReconciler implements JavaReconciler {
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private void collectProblems(List<RecipeSpringJavaProblemDescriptor> descriptors, IDocument doc, CompilationUnit compilationUnit, Consumer<ReconcileProblem> problemHandler) {
|
||||
private void collectProblems(List<RecipeCodeActionDescriptor> descriptors, IDocument doc, CompilationUnit compilationUnit, Consumer<ReconcileProblem> problemHandler) {
|
||||
CompilationUnit cu = recipeRepo.mark(descriptors, compilationUnit);
|
||||
|
||||
new JavaIsoVisitor<ExecutionContext>() {
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* Contributors:
|
||||
* VMware, Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.boot.java.rewrite.codeaction;
|
||||
package org.springframework.ide.vscode.boot.java.rewrite.reconcile;
|
||||
|
||||
import static org.springframework.ide.vscode.commons.java.SpringProjectUtil.springBootVersionGreaterOrEqual;
|
||||
|
||||
@@ -32,7 +32,9 @@ import org.openrewrite.java.tree.JavaType.FullyQualified;
|
||||
import org.openrewrite.java.tree.TypeUtils;
|
||||
import org.openrewrite.marker.Range;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.ide.vscode.boot.java.Boot2JavaProblemType;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemType;
|
||||
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;
|
||||
@@ -107,4 +109,9 @@ public class AutowiredFieldIntoConstructorParameterCodeAction implements RecipeC
|
||||
return springBootVersionGreaterOrEqual(2, 0, 0).test(project);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProblemType getProblemType() {
|
||||
return Boot2JavaProblemType.JAVA_CONSTRUCTOR_PARAMETER_INJECTION;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -28,11 +28,10 @@ import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
import org.springframework.ide.vscode.commons.java.SpringProjectUtil;
|
||||
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.RecipeSpringJavaProblemDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor;
|
||||
|
||||
public class BeanMethodNotPublicProblem implements RecipeSpringJavaProblemDescriptor {
|
||||
public class BeanMethodNotPublicProblem implements RecipeCodeActionDescriptor {
|
||||
|
||||
private static final String ID = "org.openrewrite.java.spring.BeanMethodsNotPublic";
|
||||
|
||||
|
||||
@@ -29,12 +29,11 @@ import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemType;
|
||||
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.RecipeSpringJavaProblemDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.BeanPostProcessingIgnoreInAot;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor;
|
||||
|
||||
public class BeanPostProcessingIgnoreInAotProblem implements RecipeSpringJavaProblemDescriptor {
|
||||
public class BeanPostProcessingIgnoreInAotProblem implements RecipeCodeActionDescriptor {
|
||||
|
||||
private static final String RECIPE_ID = "org.springframework.ide.vscode.commons.rewrite.java.BeanPostProcessingIgnoreInAot";
|
||||
private static final String LABEL = "Add method 'isBeanExcludedFromAotProcessing' that returns 'false'";
|
||||
|
||||
@@ -29,10 +29,10 @@ import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.ide.vscode.boot.java.Boot3JavaProblemType;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemType;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.RecipeSpringJavaProblemDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.config.RecipeCodeActionDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker;
|
||||
|
||||
public class Boot3NotSupportedTypeProblem implements RecipeSpringJavaProblemDescriptor {
|
||||
public class Boot3NotSupportedTypeProblem implements RecipeCodeActionDescriptor {
|
||||
|
||||
private static final List<String> TYPE_FQNAMES = List.of(
|
||||
"org.springframework.web.multipart.commons.CommonsMultipartResolver",
|
||||
|
||||
@@ -24,20 +24,20 @@ import org.openrewrite.java.tree.J;
|
||||
import org.openrewrite.java.tree.J.ClassDeclaration;
|
||||
import org.openrewrite.java.tree.J.MethodDeclaration;
|
||||
import org.openrewrite.java.tree.JavaType.FullyQualified;
|
||||
import org.openrewrite.marker.Range;
|
||||
import org.openrewrite.java.tree.Statement;
|
||||
import org.openrewrite.java.tree.TypeUtils;
|
||||
import org.openrewrite.marker.Range;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.ide.vscode.boot.java.Annotations;
|
||||
import org.springframework.ide.vscode.boot.java.Boot2JavaProblemType;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
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.RecipeSpringJavaProblemDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.AnnotationHierarchies;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor;
|
||||
|
||||
public class NoAutowiredOnConstructorProblem implements RecipeSpringJavaProblemDescriptor {
|
||||
public class NoAutowiredOnConstructorProblem implements RecipeCodeActionDescriptor {
|
||||
|
||||
private static final String ID = "org.openrewrite.java.spring.NoAutowiredOnConstructor";
|
||||
private static final String LABEL = "Remove Unnecessary @Autowired";
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* Contributors:
|
||||
* VMware, Inc. - initial API and implementation
|
||||
*******************************************************************************/
|
||||
package org.springframework.ide.vscode.boot.java.rewrite.codeaction;
|
||||
package org.springframework.ide.vscode.boot.java.rewrite.reconcile;
|
||||
|
||||
import static org.springframework.ide.vscode.commons.java.SpringProjectUtil.springBootVersionGreaterOrEqual;
|
||||
|
||||
@@ -23,7 +23,9 @@ import org.openrewrite.java.JavaVisitor;
|
||||
import org.openrewrite.java.tree.J;
|
||||
import org.openrewrite.marker.Range;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.ide.vscode.boot.java.Boot2JavaProblemType;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemType;
|
||||
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.FixAssistMarker;
|
||||
@@ -66,4 +68,9 @@ public class NoRequestMappingAnnotationCodeAction implements RecipeCodeActionDes
|
||||
return springBootVersionGreaterOrEqual(2, 0, 0).test(project);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProblemType getProblemType() {
|
||||
return Boot2JavaProblemType.JAVA_PRECISE_REQUEST_MAPPING;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -40,8 +40,8 @@ import org.springframework.ide.vscode.commons.java.IClasspathUtil;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
|
||||
import org.springframework.ide.vscode.commons.languageserver.reconcile.ProblemType;
|
||||
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.RecipeSpringJavaProblemDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor;
|
||||
|
||||
@@ -49,7 +49,7 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableList.Builder;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
public class NotRegisteredBeansProblem implements RecipeSpringJavaProblemDescriptor {
|
||||
public class NotRegisteredBeansProblem implements RecipeCodeActionDescriptor {
|
||||
|
||||
private static final String DEFINE_METHOD_RECIPE = "org.springframework.ide.vscode.commons.rewrite.java.DefineMethod";
|
||||
|
||||
|
||||
@@ -30,11 +30,10 @@ import org.springframework.ide.vscode.boot.java.Boot3JavaProblemType;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
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.RecipeSpringJavaProblemDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor;
|
||||
|
||||
public class PreciseBeanTypeProblem implements RecipeSpringJavaProblemDescriptor {
|
||||
public class PreciseBeanTypeProblem implements RecipeCodeActionDescriptor {
|
||||
|
||||
private static final String RECIPE_ID = "org.openrewrite.java.spring.boot3.PreciseBeanType";
|
||||
|
||||
|
||||
@@ -30,11 +30,10 @@ import org.springframework.ide.vscode.boot.java.Boot2JavaProblemType;
|
||||
import org.springframework.ide.vscode.commons.java.IJavaProject;
|
||||
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.RecipeSpringJavaProblemDescriptor;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixAssistMarker;
|
||||
import org.springframework.ide.vscode.commons.rewrite.java.FixDescriptor;
|
||||
|
||||
public class UnnecessarySpringExtensionProblem implements RecipeSpringJavaProblemDescriptor {
|
||||
public class UnnecessarySpringExtensionProblem implements RecipeCodeActionDescriptor {
|
||||
|
||||
private static final String LABEL = "Remove unnecessary @SpringExtension";
|
||||
private static final String ID = "org.openrewrite.java.spring.boot2.UnnecessarySpringExtension";
|
||||
|
||||
@@ -31,6 +31,18 @@
|
||||
"label": "Unnecessary `@SpringExtension`",
|
||||
"description": "`@SpringBootTest` and all test slice annotations already applies `@SpringExtension` as of Spring Boot 2.1.0.",
|
||||
"defaultSeverity": "WARNING"
|
||||
},
|
||||
{
|
||||
"code": "JAVA_CONSTRUCTOR_PARAMETER_INJECTION",
|
||||
"label": "Use constrcutor parameter injection",
|
||||
"description": "Use constrcutor parameter injection",
|
||||
"defaultSeverity": "IGNORE"
|
||||
},
|
||||
{
|
||||
"code": "JAVA_PRECISE_REQUEST_MAPPING",
|
||||
"label": "Use precise mapping annotation, i.e. '@GetMapping', '@PostMapping', etc.",
|
||||
"description": "Use precise mapping annotation, i.e. '@GetMapping', '@PostMapping', etc.",
|
||||
"defaultSeverity": "HINT"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -336,6 +336,30 @@
|
||||
"HINT",
|
||||
"ERROR"
|
||||
]
|
||||
},
|
||||
"spring-boot.ls.problem.boot2.JAVA_CONSTRUCTOR_PARAMETER_INJECTION": {
|
||||
"type": "string",
|
||||
"default": "IGNORE",
|
||||
"description": "Use constrcutor parameter injection",
|
||||
"enum": [
|
||||
"IGNORE",
|
||||
"INFO",
|
||||
"WARNING",
|
||||
"HINT",
|
||||
"ERROR"
|
||||
]
|
||||
},
|
||||
"spring-boot.ls.problem.boot2.JAVA_PRECISE_REQUEST_MAPPING": {
|
||||
"type": "string",
|
||||
"default": "HINT",
|
||||
"description": "Use precise mapping annotation, i.e. '@GetMapping', '@PostMapping', etc.",
|
||||
"enum": [
|
||||
"IGNORE",
|
||||
"INFO",
|
||||
"WARNING",
|
||||
"HINT",
|
||||
"ERROR"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user