Skip to content

Commit 9879326

Browse files
committed
Reformatting MergeModuleStatementsFix, MergePackageAccessibilityStatementsFix, MergeProvidesStatementsFix.
1 parent 04f057b commit 9879326

3 files changed

Lines changed: 201 additions & 185 deletions

File tree

java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInsight/daemon/impl/quickfix/MergeModuleStatementsFix.java

Lines changed: 63 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import jakarta.annotation.Nonnull;
2828

2929
import jakarta.annotation.Nullable;
30+
3031
import java.util.HashSet;
3132
import java.util.List;
3233
import java.util.Set;
@@ -36,67 +37,79 @@
3637
* @author Pavel.Dolgov
3738
*/
3839
public abstract class MergeModuleStatementsFix<T extends PsiElement> extends LocalQuickFixAndIntentionActionOnPsiElement {
40+
protected MergeModuleStatementsFix(@Nonnull PsiJavaModule javaModule) {
41+
super(javaModule);
42+
}
3943

40-
protected MergeModuleStatementsFix(@Nonnull PsiJavaModule javaModule) {
41-
super(javaModule);
42-
}
43-
44-
@Override
45-
public boolean isAvailable(@Nonnull Project project, @Nonnull PsiFile file, @Nonnull PsiElement startElement, @Nonnull PsiElement endElement) {
46-
return PsiUtil.isLanguageLevel9OrHigher(file);
47-
}
44+
@Override
45+
public boolean isAvailable(
46+
@Nonnull Project project,
47+
@Nonnull PsiFile file,
48+
@Nonnull PsiElement startElement,
49+
@Nonnull PsiElement endElement
50+
) {
51+
return PsiUtil.isLanguageLevel9OrHigher(file);
52+
}
4853

49-
@Override
50-
public void invoke(@Nonnull Project project, @Nonnull PsiFile file, @Nullable Editor editor, @Nonnull PsiElement startElement, @Nonnull PsiElement endElement) {
51-
if (startElement instanceof PsiJavaModule) {
52-
final PsiJavaModule javaModule = (PsiJavaModule) startElement;
53-
final List<T> statementsToMerge = getStatementsToMerge(javaModule);
54-
LOG.assertTrue(!statementsToMerge.isEmpty());
54+
@Override
55+
public void invoke(
56+
@Nonnull Project project,
57+
@Nonnull PsiFile file,
58+
@Nullable Editor editor,
59+
@Nonnull PsiElement startElement,
60+
@Nonnull PsiElement endElement
61+
) {
62+
if (startElement instanceof PsiJavaModule) {
63+
final PsiJavaModule javaModule = (PsiJavaModule) startElement;
64+
final List<T> statementsToMerge = getStatementsToMerge(javaModule);
65+
LOG.assertTrue(!statementsToMerge.isEmpty());
5566

56-
final String tempModuleText = PsiKeyword.MODULE + " " + javaModule.getName() + " {" + getReplacementText(statementsToMerge) + "}";
57-
final PsiJavaModule tempModule = JavaPsiFacade.getInstance(project).getElementFactory().createModuleFromText(tempModuleText);
67+
final String tempModuleText =
68+
PsiKeyword.MODULE + " " + javaModule.getName() + " {" + getReplacementText(statementsToMerge) + "}";
69+
final PsiJavaModule tempModule = JavaPsiFacade.getInstance(project).getElementFactory().createModuleFromText(tempModuleText);
5870

59-
final List<T> tempStatements = getStatementsToMerge(tempModule);
60-
LOG.assertTrue(!tempStatements.isEmpty());
61-
final T replacement = tempStatements.get(0);
71+
final List<T> tempStatements = getStatementsToMerge(tempModule);
72+
LOG.assertTrue(!tempStatements.isEmpty());
73+
final T replacement = tempStatements.get(0);
6274

63-
final T firstStatement = statementsToMerge.get(0);
64-
final CommentTracker commentTracker = new CommentTracker();
65-
final CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(project);
66-
final PsiElement resultingStatement = codeStyleManager.reformat(commentTracker.replace(firstStatement, replacement));
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));
6779

68-
for (int i = 1; i < statementsToMerge.size(); i++) {
69-
T statement = statementsToMerge.get(i);
70-
commentTracker.delete(statement);
71-
}
72-
commentTracker.insertCommentsBefore(resultingStatement);
80+
for (int i = 1; i < statementsToMerge.size(); i++) {
81+
T statement = statementsToMerge.get(i);
82+
commentTracker.delete(statement);
83+
}
84+
commentTracker.insertCommentsBefore(resultingStatement);
7385

74-
if (editor != null) {
75-
final int offset = resultingStatement.getTextRange().getEndOffset();
76-
editor.getCaretModel().moveToOffset(offset);
77-
}
86+
if (editor != null) {
87+
final int offset = resultingStatement.getTextRange().getEndOffset();
88+
editor.getCaretModel().moveToOffset(offset);
89+
}
90+
}
7891
}
79-
}
8092

81-
@Nonnull
82-
protected abstract String getReplacementText(List<T> statementsToMerge);
93+
@Nonnull
94+
protected abstract String getReplacementText(List<T> statementsToMerge);
8395

84-
@Nonnull
85-
protected abstract List<T> getStatementsToMerge(@Nonnull PsiJavaModule javaModule);
96+
@Nonnull
97+
protected abstract List<T> getStatementsToMerge(@Nonnull PsiJavaModule javaModule);
8698

87-
@Nonnull
88-
protected static String joinUniqueNames(@Nonnull List<String> names) {
89-
final Set<String> unique = new HashSet<>();
90-
return names.stream().filter(name -> unique.add(name)).collect(Collectors.joining(","));
91-
}
99+
@Nonnull
100+
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(","));
103+
}
92104

93-
@Nullable
94-
public static MergeModuleStatementsFix createFix(@Nullable PsiElement statement) {
95-
if (statement instanceof PsiPackageAccessibilityStatement) {
96-
return MergePackageAccessibilityStatementsFix.createFix((PsiPackageAccessibilityStatement) statement);
97-
} else if (statement instanceof PsiProvidesStatement) {
98-
return MergeProvidesStatementsFix.createFix((PsiProvidesStatement) statement);
105+
@Nullable
106+
public static MergeModuleStatementsFix createFix(@Nullable PsiElement statement) {
107+
if (statement instanceof PsiPackageAccessibilityStatement) {
108+
return MergePackageAccessibilityStatementsFix.createFix((PsiPackageAccessibilityStatement) statement);
109+
}
110+
else if (statement instanceof PsiProvidesStatement) {
111+
return MergeProvidesStatementsFix.createFix((PsiProvidesStatement) statement);
112+
}
113+
return null;
99114
}
100-
return null;
101-
}
102115
}

java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInsight/daemon/impl/quickfix/MergePackageAccessibilityStatementsFix.java

Lines changed: 78 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import jakarta.annotation.Nonnull;
2828
import jakarta.annotation.Nullable;
29+
2930
import java.util.ArrayList;
3031
import java.util.Collections;
3132
import java.util.List;
@@ -36,95 +37,96 @@
3637
* @author Pavel.Dolgov
3738
*/
3839
public class MergePackageAccessibilityStatementsFix extends MergeModuleStatementsFix<PsiPackageAccessibilityStatement> {
40+
private static final Logger LOG = Logger.getInstance(MergePackageAccessibilityStatementsFix.class);
41+
private final String myPackageName;
42+
private final Role myRole;
3943

40-
private static final Logger LOG = Logger.getInstance(MergePackageAccessibilityStatementsFix.class);
41-
private final String myPackageName;
42-
private final Role myRole;
43-
44-
protected MergePackageAccessibilityStatementsFix(@Nonnull PsiJavaModule javaModule, @Nonnull String packageName, @Nonnull Role role) {
45-
super(javaModule);
46-
myPackageName = packageName;
47-
myRole = role;
48-
}
44+
protected MergePackageAccessibilityStatementsFix(@Nonnull PsiJavaModule javaModule, @Nonnull String packageName, @Nonnull Role role) {
45+
super(javaModule);
46+
myPackageName = packageName;
47+
myRole = role;
48+
}
4949

50-
@Nls
51-
@Nonnull
52-
@Override
53-
public String getText() {
54-
return JavaQuickFixBundle.message("java.9.merge.module.statements.fix.name", getKeyword(), myPackageName);
55-
}
50+
@Nls
51+
@Nonnull
52+
@Override
53+
public String getText() {
54+
return JavaQuickFixBundle.message("java.9.merge.module.statements.fix.name", getKeyword(), myPackageName);
55+
}
5656

57-
@Nls
58-
@Nonnull
59-
@Override
60-
public String getFamilyName() {
61-
return JavaQuickFixBundle.message("java.9.merge.module.statements.fix.family.name", getKeyword());
62-
}
57+
@Nls
58+
@Nonnull
59+
@Override
60+
public String getFamilyName() {
61+
return JavaQuickFixBundle.message("java.9.merge.module.statements.fix.family.name", getKeyword());
62+
}
6363

64-
@Nonnull
65-
@Override
66-
protected String getReplacementText(@Nonnull List<PsiPackageAccessibilityStatement> statementsToMerge) {
67-
final List<String> moduleNames = getModuleNames(statementsToMerge);
68-
if (!moduleNames.isEmpty()) {
69-
return getKeyword() + " " + myPackageName + " " + PsiKeyword.TO + " " + joinUniqueNames(moduleNames) + ";";
64+
@Nonnull
65+
@Override
66+
protected String getReplacementText(@Nonnull List<PsiPackageAccessibilityStatement> statementsToMerge) {
67+
final List<String> moduleNames = getModuleNames(statementsToMerge);
68+
if (!moduleNames.isEmpty()) {
69+
return getKeyword() + " " + myPackageName + " " + PsiKeyword.TO + " " + joinUniqueNames(moduleNames) + ";";
70+
}
71+
return getKeyword() + " " + myPackageName + ";";
7072
}
71-
return getKeyword() + " " + myPackageName + ";";
72-
}
7373

74-
@Nonnull
75-
private static List<String> getModuleNames(@Nonnull List<PsiPackageAccessibilityStatement> statements) {
76-
final List<String> result = new ArrayList<>();
77-
for (PsiPackageAccessibilityStatement statement : statements) {
78-
final List<String> moduleNames = statement.getModuleNames();
79-
if (moduleNames.isEmpty()) {
80-
return Collections.emptyList();
81-
}
82-
result.addAll(moduleNames);
74+
@Nonnull
75+
private static List<String> getModuleNames(@Nonnull List<PsiPackageAccessibilityStatement> statements) {
76+
final List<String> result = new ArrayList<>();
77+
for (PsiPackageAccessibilityStatement statement : statements) {
78+
final List<String> moduleNames = statement.getModuleNames();
79+
if (moduleNames.isEmpty()) {
80+
return Collections.emptyList();
81+
}
82+
result.addAll(moduleNames);
83+
}
84+
return result;
8385
}
84-
return result;
85-
}
8686

87-
@Nonnull
88-
@Override
89-
protected List<PsiPackageAccessibilityStatement> getStatementsToMerge(@Nonnull PsiJavaModule javaModule) {
90-
return StreamSupport.stream(getStatements(javaModule, myRole).spliterator(), false).filter(statement -> myPackageName.equals(statement.getPackageName())).collect(Collectors.toList());
91-
}
87+
@Nonnull
88+
@Override
89+
protected List<PsiPackageAccessibilityStatement> getStatementsToMerge(@Nonnull PsiJavaModule javaModule) {
90+
return StreamSupport.stream(getStatements(javaModule, myRole).spliterator(), false)
91+
.filter(statement -> myPackageName.equals(statement.getPackageName()))
92+
.collect(Collectors.toList());
93+
}
9294

93-
@Nullable
94-
public static MergeModuleStatementsFix createFix(@Nullable PsiPackageAccessibilityStatement statement) {
95-
if (statement != null) {
96-
final PsiElement parent = statement.getParent();
97-
if (parent instanceof PsiJavaModule) {
98-
final String packageName = statement.getPackageName();
99-
if (packageName != null) {
100-
return new MergePackageAccessibilityStatementsFix((PsiJavaModule) parent, packageName, statement.getRole());
95+
@Nullable
96+
public static MergeModuleStatementsFix createFix(@Nullable PsiPackageAccessibilityStatement statement) {
97+
if (statement != null) {
98+
final PsiElement parent = statement.getParent();
99+
if (parent instanceof PsiJavaModule) {
100+
final String packageName = statement.getPackageName();
101+
if (packageName != null) {
102+
return new MergePackageAccessibilityStatementsFix((PsiJavaModule) parent, packageName, statement.getRole());
103+
}
104+
}
101105
}
102-
}
106+
return null;
103107
}
104-
return null;
105-
}
106108

107-
@Nonnull
108-
private static Iterable<PsiPackageAccessibilityStatement> getStatements(@Nonnull PsiJavaModule javaModule, @Nonnull Role role) {
109-
switch (role) {
110-
case OPENS:
111-
return javaModule.getOpens();
112-
case EXPORTS:
113-
return javaModule.getExports();
109+
@Nonnull
110+
private static Iterable<PsiPackageAccessibilityStatement> getStatements(@Nonnull PsiJavaModule javaModule, @Nonnull Role role) {
111+
switch (role) {
112+
case OPENS:
113+
return javaModule.getOpens();
114+
case EXPORTS:
115+
return javaModule.getExports();
116+
}
117+
LOG.error("Unexpected role " + role);
118+
return Collections.emptyList();
114119
}
115-
LOG.error("Unexpected role " + role);
116-
return Collections.emptyList();
117-
}
118120

119-
@Nonnull
120-
private String getKeyword() {
121-
switch (myRole) {
122-
case OPENS:
123-
return PsiKeyword.OPENS;
124-
case EXPORTS:
125-
return PsiKeyword.EXPORTS;
121+
@Nonnull
122+
private String getKeyword() {
123+
switch (myRole) {
124+
case OPENS:
125+
return PsiKeyword.OPENS;
126+
case EXPORTS:
127+
return PsiKeyword.EXPORTS;
128+
}
129+
LOG.error("Unexpected role " + myRole);
130+
return "";
126131
}
127-
LOG.error("Unexpected role " + myRole);
128-
return "";
129-
}
130132
}

0 commit comments

Comments
 (0)