1818import com .intellij .java .language .psi .*;
1919import com .intellij .java .language .psi .util .PsiUtil ;
2020import com .siyeh .ig .psiutils .CommentTracker ;
21+ import consulo .annotation .access .RequiredReadAction ;
22+ import consulo .annotation .access .RequiredWriteAction ;
2123import consulo .codeEditor .Editor ;
2224import consulo .language .codeStyle .CodeStyleManager ;
2325import consulo .language .editor .inspection .LocalQuickFixAndIntentionActionOnPsiElement ;
@@ -42,6 +44,7 @@ protected MergeModuleStatementsFix(@Nonnull PsiJavaModule javaModule) {
4244 }
4345
4446 @ Override
47+ @ RequiredReadAction
4548 public boolean isAvailable (
4649 @ Nonnull Project project ,
4750 @ Nonnull PsiFile file ,
@@ -52,30 +55,30 @@ public boolean isAvailable(
5255 }
5356
5457 @ Override
58+ @ RequiredWriteAction
5559 public void invoke (
5660 @ Nonnull Project project ,
5761 @ Nonnull PsiFile file ,
5862 @ Nullable Editor editor ,
5963 @ Nonnull PsiElement startElement ,
6064 @ Nonnull PsiElement endElement
6165 ) {
62- if (startElement instanceof PsiJavaModule ) {
63- final PsiJavaModule javaModule = (PsiJavaModule ) startElement ;
64- final List <T > statementsToMerge = getStatementsToMerge (javaModule );
66+ if (startElement instanceof PsiJavaModule javaModule ) {
67+ List <T > statementsToMerge = getStatementsToMerge (javaModule );
6568 LOG .assertTrue (!statementsToMerge .isEmpty ());
6669
67- final String tempModuleText =
70+ String tempModuleText =
6871 PsiKeyword .MODULE + " " + javaModule .getName () + " {" + getReplacementText (statementsToMerge ) + "}" ;
69- final PsiJavaModule tempModule = JavaPsiFacade .getInstance (project ).getElementFactory ().createModuleFromText (tempModuleText );
72+ PsiJavaModule tempModule = JavaPsiFacade .getInstance (project ).getElementFactory ().createModuleFromText (tempModuleText );
7073
71- final List <T > tempStatements = getStatementsToMerge (tempModule );
74+ List <T > tempStatements = getStatementsToMerge (tempModule );
7275 LOG .assertTrue (!tempStatements .isEmpty ());
73- final T replacement = tempStatements .get (0 );
76+ T replacement = tempStatements .get (0 );
7477
75- final T firstStatement = statementsToMerge .get (0 );
76- final CommentTracker commentTracker = new CommentTracker ();
77- final CodeStyleManager codeStyleManager = CodeStyleManager .getInstance (project );
78- final PsiElement resultingStatement = codeStyleManager .reformat (commentTracker .replace (firstStatement , replacement ));
78+ T firstStatement = statementsToMerge .get (0 );
79+ CommentTracker commentTracker = new CommentTracker ();
80+ CodeStyleManager codeStyleManager = CodeStyleManager .getInstance (project );
81+ PsiElement resultingStatement = codeStyleManager .reformat (commentTracker .replace (firstStatement , replacement ));
7982
8083 for (int i = 1 ; i < statementsToMerge .size (); i ++) {
8184 T statement = statementsToMerge .get (i );
@@ -84,7 +87,7 @@ public void invoke(
8487 commentTracker .insertCommentsBefore (resultingStatement );
8588
8689 if (editor != null ) {
87- final int offset = resultingStatement .getTextRange ().getEndOffset ();
90+ int offset = resultingStatement .getTextRange ().getEndOffset ();
8891 editor .getCaretModel ().moveToOffset (offset );
8992 }
9093 }
@@ -98,17 +101,16 @@ public void invoke(
98101
99102 @ Nonnull
100103 protected static String joinUniqueNames (@ Nonnull List <String > names ) {
101- final Set <String > unique = new HashSet <>();
102- return names .stream ().filter (name -> unique .add (name )).collect (Collectors .joining ("," ));
104+ return names .stream ().distinct ().collect (Collectors .joining ("," ));
103105 }
104106
105107 @ Nullable
106108 public static MergeModuleStatementsFix createFix (@ Nullable PsiElement statement ) {
107- if (statement instanceof PsiPackageAccessibilityStatement ) {
108- return MergePackageAccessibilityStatementsFix .createFix (( PsiPackageAccessibilityStatement ) statement );
109+ if (statement instanceof PsiPackageAccessibilityStatement packageAccessibilityStmt ) {
110+ return MergePackageAccessibilityStatementsFix .createFix (packageAccessibilityStmt );
109111 }
110- else if (statement instanceof PsiProvidesStatement ) {
111- return MergeProvidesStatementsFix .createFix (( PsiProvidesStatement ) statement );
112+ else if (statement instanceof PsiProvidesStatement providesStmt ) {
113+ return MergeProvidesStatementsFix .createFix (providesStmt );
112114 }
113115 return null ;
114116 }
0 commit comments