From 4bd3f834b05705ef608a71f946bcc2800045e93a Mon Sep 17 00:00:00 2001 From: UNV Date: Wed, 26 Nov 2025 16:53:44 +0300 Subject: [PATCH 1/2] Fixing NPE in GenerifyFileFix.getText. --- .../daemon/impl/quickfix/GenerifyFileFix.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/GenerifyFileFix.java b/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/GenerifyFileFix.java index ad947e418..d9a945ce3 100644 --- a/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/GenerifyFileFix.java +++ b/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/GenerifyFileFix.java @@ -16,6 +16,7 @@ package com.intellij.java.impl.codeInsight.daemon.impl.quickfix; import com.intellij.java.impl.refactoring.actions.TypeCookAction; +import consulo.annotation.access.RequiredReadAction; import consulo.application.Result; import consulo.codeEditor.Editor; import consulo.fileEditor.FileEditorManager; @@ -30,10 +31,12 @@ import consulo.language.psi.PsiManager; import consulo.localize.LocalizeValue; import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; import jakarta.annotation.Nonnull; public class GenerifyFileFix implements SyntheticIntentionAction, LocalQuickFix { - private String myFileName; + @Nonnull + private String myFileName = ""; @Nonnull @Override @@ -48,8 +51,9 @@ public LocalizeValue getName() { } @Override - public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor descriptor) { - final PsiElement element = descriptor.getPsiElement(); + @RequiredUIAccess + public void applyFix(@Nonnull final Project project, @Nonnull ProblemDescriptor descriptor) { + PsiElement element = descriptor.getPsiElement(); if (element == null) { return; } @@ -58,6 +62,7 @@ public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescr myFileName = file.getName(); new WriteCommandAction(project) { @Override + @RequiredUIAccess protected void run(Result result) throws Throwable { invoke(project, FileEditorManager.getInstance(project).getSelectedTextEditor(), file); } @@ -66,6 +71,7 @@ protected void run(Result result) throws Throwable { } @Override + @RequiredReadAction public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { if (file != null && file.isValid()) { myFileName = file.getName(); @@ -77,6 +83,7 @@ public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file } @Override + @RequiredUIAccess public void invoke(@Nonnull Project project, Editor editor, PsiFile file) { if (!FileModificationService.getInstance().prepareFileForWrite(file)) { return; From 2b8ad9e2a11f4e03686d71a3f941e30a72ef5456 Mon Sep 17 00:00:00 2001 From: UNV Date: Thu, 27 Nov 2025 09:31:14 +0300 Subject: [PATCH 2/2] Refactoring of GenerifyFileFix. --- .../daemon/impl/quickfix/GenerifyFileFix.java | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/GenerifyFileFix.java b/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/GenerifyFileFix.java index d9a945ce3..19a92a420 100644 --- a/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/GenerifyFileFix.java +++ b/plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/GenerifyFileFix.java @@ -17,12 +17,10 @@ import com.intellij.java.impl.refactoring.actions.TypeCookAction; import consulo.annotation.access.RequiredReadAction; -import consulo.application.Result; import consulo.codeEditor.Editor; import consulo.fileEditor.FileEditorManager; import consulo.java.analysis.impl.localize.JavaQuickFixLocalize; import consulo.language.editor.FileModificationService; -import consulo.language.editor.WriteCommandAction; import consulo.language.editor.inspection.LocalQuickFix; import consulo.language.editor.inspection.ProblemDescriptor; import consulo.language.editor.intention.SyntheticIntentionAction; @@ -32,16 +30,17 @@ import consulo.localize.LocalizeValue; import consulo.project.Project; import consulo.ui.annotation.RequiredUIAccess; +import consulo.undoRedo.CommandProcessor; import jakarta.annotation.Nonnull; public class GenerifyFileFix implements SyntheticIntentionAction, LocalQuickFix { @Nonnull - private String myFileName = ""; + private LocalizeValue myText = LocalizeValue.empty(); @Nonnull @Override public LocalizeValue getText() { - return JavaQuickFixLocalize.generifyText(myFileName); + return myText; } @Nonnull @@ -52,21 +51,17 @@ public LocalizeValue getName() { @Override @RequiredUIAccess - public void applyFix(@Nonnull final Project project, @Nonnull ProblemDescriptor descriptor) { + public void applyFix(@Nonnull Project project, @Nonnull ProblemDescriptor descriptor) { PsiElement element = descriptor.getPsiElement(); if (element == null) { return; } - final PsiFile file = element.getContainingFile(); + PsiFile file = element.getContainingFile(); if (isAvailable(project, null, file)) { - myFileName = file.getName(); - new WriteCommandAction(project) { - @Override - @RequiredUIAccess - protected void run(Result result) throws Throwable { - invoke(project, FileEditorManager.getInstance(project).getSelectedTextEditor(), file); - } - }.execute(); + CommandProcessor.getInstance().newCommand() + .project(project) + .inWriteAction() + .run(() -> invoke(project, FileEditorManager.getInstance(project).getSelectedTextEditor(), file)); } } @@ -74,10 +69,11 @@ protected void run(Result result) throws Throwable { @RequiredReadAction public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) { if (file != null && file.isValid()) { - myFileName = file.getName(); + myText = JavaQuickFixLocalize.generifyText(file.getName()); return PsiManager.getInstance(project).isInProject(file); } else { + myText = LocalizeValue.empty(); return false; } }