implicitly written field: fix to register annotations (IDEA-164948)

This commit is contained in:
Anna.Kozlova
2016-12-02 17:52:28 +01:00
parent 955ed1e8b2
commit ea5cfbb0d9
5 changed files with 55 additions and 2 deletions
@@ -241,6 +241,9 @@ public abstract class QuickFixFactory {
@NotNull
public abstract IntentionAction createAddToDependencyInjectionAnnotationsFix(@NotNull Project project, @NotNull String qualifiedName, @NotNull String element);
@NotNull
public abstract IntentionAction createAddToImplicitlyWrittenFieldsFix(Project project, @NotNull String qualifiedName);
@NotNull
public abstract IntentionAction createCreateGetterOrSetterFix(boolean createGetter, boolean createSetter, @NotNull PsiField field);
@@ -336,7 +336,7 @@ class PostHighlightingVisitor {
quickFixFactory.createCreateConstructorParameterFromFieldFix(field));
}
SpecialAnnotationsUtilBase.createAddToSpecialAnnotationFixes(field, annoName -> {
QuickFixAction.registerQuickFixAction(info, quickFixFactory.createAddToDependencyInjectionAnnotationsFix(project, annoName, "fields"));
QuickFixAction.registerQuickFixAction(info, quickFixFactory.createAddToImplicitlyWrittenFieldsFix(project, annoName));
return true;
});
return info;
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -547,6 +547,12 @@ public class EmptyQuickFixFactory extends QuickFixFactory {
return QuickFixes.EMPTY_FIX;
}
@NotNull
@Override
public IntentionAction createAddToImplicitlyWrittenFieldsFix(Project project, @NotNull String qualifiedName) {
return QuickFixes.EMPTY_FIX;
}
@NotNull
@Override
public IntentionAction createCreateGetterOrSetterFix(boolean b, boolean b2, @NotNull PsiField psiField) {
@@ -18,11 +18,14 @@ package com.intellij.codeInspection.ex;
import com.intellij.ToolExtensionPoints;
import com.intellij.codeInsight.AnnotationUtil;
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
import com.intellij.codeInsight.daemon.QuickFixBundle;
import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.codeInspection.reference.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.components.PersistentStateComponent;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.components.State;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.extensions.ExtensionPoint;
import com.intellij.openapi.extensions.ExtensionPointListener;
import com.intellij.openapi.extensions.Extensions;
@@ -33,6 +36,7 @@ import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.JDOMExternalizableStringList;
import com.intellij.profile.codeInspection.ProjectInspectionProfileManager;
import com.intellij.psi.*;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.ui.UIUtil;
import com.intellij.util.xmlb.SkipDefaultsSerializationFilter;
@@ -645,6 +649,39 @@ public abstract class EntryPointsManagerBase extends EntryPointsManager implemen
public boolean readWriteAccess = true;
public String pattern = "";
}
public class AddImplicitlyWriteAnnotation implements IntentionAction {
private final String myQualifiedName;
public AddImplicitlyWriteAnnotation(String qualifiedName) {myQualifiedName = qualifiedName;}
@Override
@NotNull
public String getText() {
return QuickFixBundle.message("fix.unused.symbol.injection.text", "fields", myQualifiedName);
}
@Override
@NotNull
public String getFamilyName() {
return QuickFixBundle.message("fix.unused.symbol.injection.family");
}
@Override
public boolean isAvailable(@NotNull Project project1, Editor editor, PsiFile file) {
return true;
}
@Override
public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
myWriteAnnotations.add(myQualifiedName);
ProjectInspectionProfileManager.getInstance(project).fireProfileChanged();
}
@Override
public boolean startInWriteAction() {
return false;
}
}
}
@@ -681,6 +681,13 @@ public class QuickFixFactoryImpl extends QuickFixFactory {
entryPointsManager.ADDITIONAL_ANNOTATIONS, qualifiedName);
}
@NotNull
@Override
public IntentionAction createAddToImplicitlyWrittenFieldsFix(Project project, @NotNull final String qualifiedName) {
EntryPointsManagerBase entryPointsManagerBase = EntryPointsManagerBase.getInstance(project);
return entryPointsManagerBase.new AddImplicitlyWriteAnnotation(qualifiedName);
}
@NotNull
@Override
public IntentionAction createCreateGetterOrSetterFix(boolean createGetter, boolean createSetter, @NotNull PsiField field) {