From fdcfe3cfb5029a24d5c05196154b7ac0f81d03ce Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 24 Nov 2016 15:46:29 +0100 Subject: [PATCH] groovy intentions/fixes: make files writable outside write action --- .../groovy/annotator/intentions/QuickfixUtil.java | 12 ++++-------- .../plugins/groovy/codeInspection/GroovyFix.java | 7 ------- .../plugins/groovy/intentions/base/Intention.java | 4 ---- .../intentions/GroovyStaticImportMethodFix.java | 3 --- .../ConvertConcatenationToGstringIntention.java | 5 +++++ .../strings/ConvertStringToMultilineIntention.java | 5 +++++ 6 files changed, 14 insertions(+), 22 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/intentions/QuickfixUtil.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/intentions/QuickfixUtil.java index 3cfb038b725c..f0e4e1ffe192 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/intentions/QuickfixUtil.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/intentions/QuickfixUtil.java @@ -15,9 +15,10 @@ */ package org.jetbrains.plugins.groovy.annotator.intentions; -import com.intellij.codeInsight.FileModificationService; -import com.intellij.openapi.project.Project; -import com.intellij.psi.*; +import com.intellij.psi.CommonClassNames; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiClassType; +import com.intellij.psi.PsiType; import com.intellij.psi.util.PsiTypesUtil; import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.Nullable; @@ -82,11 +83,6 @@ public class QuickfixUtil { return false; } - - public static boolean ensureFileWritable(Project project, PsiFile file) { - return FileModificationService.getInstance().preparePsiElementsForWrite(file); - } - public static List swapArgumentsAndTypes(String[] names, PsiType[] types) { List result = new ArrayList<>(); diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/GroovyFix.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/GroovyFix.java index d45b44a4ae05..54456d1d4d1d 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/GroovyFix.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/codeInspection/GroovyFix.java @@ -15,7 +15,6 @@ */ package org.jetbrains.plugins.groovy.codeInspection; -import com.intellij.codeInsight.FileModificationService; import com.intellij.codeInspection.LocalQuickFix; import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.openapi.diagnostic.Logger; @@ -59,9 +58,6 @@ public abstract class GroovyFix implements LocalQuickFix { if (problemElement == null || !problemElement.isValid()) { return; } - if (isQuickFixOnReadOnlyFile(problemElement)) { - return; - } try { doFix(project, descriptor); } catch (IncorrectOperationException e) { @@ -75,9 +71,6 @@ public abstract class GroovyFix implements LocalQuickFix { protected abstract void doFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) throws IncorrectOperationException; - protected static boolean isQuickFixOnReadOnlyFile(PsiElement problemElement) { - return !FileModificationService.getInstance().preparePsiElementForWrite(problemElement); - } protected static void replaceExpression(GrExpression expression, String newExpression) { final GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(expression.getProject()); diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/intentions/base/Intention.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/intentions/base/Intention.java index 2dd6040f0c2d..ed27e9959723 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/intentions/base/Intention.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/intentions/base/Intention.java @@ -26,7 +26,6 @@ import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.GroovyLanguage; -import org.jetbrains.plugins.groovy.annotator.intentions.QuickfixUtil; import org.jetbrains.plugins.groovy.intentions.GroovyIntentionsBundle; import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression; @@ -47,9 +46,6 @@ public abstract class Intention implements IntentionAction { @Override public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException { - if (!QuickfixUtil.ensureFileWritable(project, file)) { - return; - } final PsiElement element = findMatchingElement(file, editor); if (element == null) { return; diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/GroovyStaticImportMethodFix.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/GroovyStaticImportMethodFix.java index 22e653be5ef6..25e6c93e7857 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/GroovyStaticImportMethodFix.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/GroovyStaticImportMethodFix.java @@ -15,7 +15,6 @@ */ package org.jetbrains.plugins.groovy.annotator.intentions; -import com.intellij.codeInsight.FileModificationService; import com.intellij.codeInsight.completion.JavaCompletionUtil; import com.intellij.codeInsight.daemon.QuickFixBundle; import com.intellij.ide.util.MethodCellRenderer; @@ -135,8 +134,6 @@ public class GroovyStaticImportMethodFix extends Intention { @Override protected void processIntention(@NotNull PsiElement element, @NotNull Project project, Editor editor) throws IncorrectOperationException { - final PsiFile file = element.getContainingFile(); - if (!FileModificationService.getInstance().prepareFileForWrite(file)) return; if (getCandidates().size() == 1) { final PsiMethod toImport = getCandidates().get(0); doImport(toImport); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertConcatenationToGstringIntention.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertConcatenationToGstringIntention.java index 51d8abdc0357..82ced1713790 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertConcatenationToGstringIntention.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertConcatenationToGstringIntention.java @@ -89,6 +89,11 @@ public class ConvertConcatenationToGstringIntention extends Intention { } } + @Override + public boolean shouldMakeCurrentFileWritable() { + return true; + } + @Override public boolean startInWriteAction() { return false; diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertStringToMultilineIntention.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertStringToMultilineIntention.java index f51917ade554..20b16e62cda7 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertStringToMultilineIntention.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/conversions/strings/ConvertStringToMultilineIntention.java @@ -252,6 +252,11 @@ public class ConvertStringToMultilineIntention extends Intention { }; } + @Override + public boolean shouldMakeCurrentFileWritable() { + return true; + } + @Override public boolean startInWriteAction() { return false;