Skip to content

Commit 1a798c9

Browse files
authored
Replacing EP_NAME with getExtensionPoint (part 2). (#187)
1 parent 615a202 commit 1a798c9

10 files changed

Lines changed: 63 additions & 87 deletions

File tree

plugin/src/main/java/com/intellij/java/impl/codeInsight/javadoc/DocumentationDelegateProvider.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import consulo.annotation.component.ComponentScope;
2121
import consulo.annotation.component.ExtensionAPI;
2222
import consulo.component.extension.ExtensionPointName;
23-
2423
import jakarta.annotation.Nonnull;
2524
import jakarta.annotation.Nullable;
2625

@@ -60,12 +59,7 @@ public abstract class DocumentationDelegateProvider {
6059

6160
@Nullable
6261
public static PsiDocCommentOwner findDocumentationDelegate(@Nonnull PsiMember method) {
63-
for (DocumentationDelegateProvider delegator : EP_NAME.getExtensionList()) {
64-
PsiDocCommentOwner type = delegator.computeDocumentationDelegate(method);
65-
if (type != null) {
66-
return type;
67-
}
68-
}
69-
return null;
62+
return method.getApplication().getExtensionPoint(DocumentationDelegateProvider.class)
63+
.computeSafeIfAny(delegator -> delegator.computeDocumentationDelegate(method));
7064
}
7165
}

plugin/src/main/java/com/intellij/java/impl/codeInsight/template/macro/VariableTypeCalculator.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,8 @@ public abstract class VariableTypeCalculator {
3939
*/
4040
@Nonnull
4141
public static PsiType getVarTypeAt(@Nonnull PsiVariable var, @Nonnull PsiElement place) {
42-
for (VariableTypeCalculator calculator : EP_NAME.getExtensionList()) {
43-
PsiType type = calculator.inferVarTypeAt(var, place);
44-
if (type != null) {
45-
return type;
46-
}
47-
}
48-
49-
return var.getType();
42+
PsiType varType = var.getApplication().getExtensionPoint(VariableTypeCalculator.class)
43+
.computeSafeIfAny(calculator -> calculator.inferVarTypeAt(var, place));
44+
return varType != null ? varType : var.getType();
5045
}
5146
}

plugin/src/main/java/com/intellij/java/impl/codeInspection/uncheckedWarnings/UncheckedWarningLocalInspectionBase.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,13 @@ private static LocalQuickFix[] getChangeVariableTypeFixes(
7979
LOG.assertTrue(parameter.isValid());
8080
List<LocalQuickFix> result = new ArrayList<>();
8181
if (itemType != null) {
82-
for (ChangeVariableTypeQuickFixProvider fixProvider : ChangeVariableTypeQuickFixProvider.EP_NAME.getExtensionList()) {
82+
parameter.getApplication().getExtensionPoint(ChangeVariableTypeQuickFixProvider.class).forEach(fixProvider -> {
8383
for (IntentionAction action : fixProvider.getFixes(parameter, itemType)) {
8484
if (action instanceof LocalQuickFix fix) {
8585
result.add(fix);
8686
}
8787
}
88-
}
88+
});
8989
}
9090

9191
if (generifyFixes.length > 0) {

plugin/src/main/java/com/intellij/java/impl/codeInspection/visibility/VisibilityInspection.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import consulo.annotation.access.RequiredReadAction;
3535
import consulo.annotation.access.RequiredWriteAction;
3636
import consulo.annotation.component.ExtensionImpl;
37+
import consulo.application.Application;
3738
import consulo.java.deadCodeNotWorking.OldStyleInspection;
3839
import consulo.language.editor.FileModificationService;
3940
import consulo.language.editor.IdentifierUtil;
@@ -54,19 +55,14 @@
5455
import consulo.project.Project;
5556
import jakarta.annotation.Nonnull;
5657
import jakarta.annotation.Nullable;
58+
import jakarta.inject.Inject;
5759

5860
import javax.swing.*;
5961
import java.awt.*;
6062
import java.util.List;
6163

6264
@ExtensionImpl
6365
public class VisibilityInspection extends GlobalJavaInspectionTool implements OldStyleInspection {
64-
private static final Logger LOG = Logger.getInstance(VisibilityInspection.class);
65-
public boolean SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
66-
public boolean SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
67-
public boolean SUGGEST_PRIVATE_FOR_INNERS = false;
68-
private static final String SHORT_NAME = "WeakerAccess";
69-
7066
private class OptionsPanel extends JPanel {
7167
private final JCheckBox myPackageLocalForMembersCheckbox;
7268
private final JCheckBox myPrivateForInnersCheckbox;
@@ -109,6 +105,19 @@ private OptionsPanel() {
109105
}
110106
}
111107

108+
private static final Logger LOG = Logger.getInstance(VisibilityInspection.class);
109+
private static final String SHORT_NAME = "WeakerAccess";
110+
111+
private final Application myApplication;
112+
public boolean SUGGEST_PACKAGE_LOCAL_FOR_MEMBERS = true;
113+
public boolean SUGGEST_PACKAGE_LOCAL_FOR_TOP_CLASSES = true;
114+
public boolean SUGGEST_PRIVATE_FOR_INNERS = false;
115+
116+
@Inject
117+
public VisibilityInspection(Application application) {
118+
myApplication = application;
119+
}
120+
112121
@Override
113122
public JComponent createOptionsPanel() {
114123
return new OptionsPanel();
@@ -459,9 +468,8 @@ protected boolean queryExternalUsagesRequests(
459468
ignoreElement(processor, entryPoint);
460469
}
461470

462-
for (VisibilityExtension addin : VisibilityExtension.EP_NAME.getExtensions()) {
463-
addin.fillIgnoreList(manager, processor);
464-
}
471+
myApplication.getExtensionPoint(VisibilityExtension.class)
472+
.forEach(addin -> addin.fillIgnoreList(manager, processor));
465473
manager.iterate(new RefJavaVisitor() {
466474
@Override
467475
public void visitElement(@Nonnull RefEntity refEntity) {

plugin/src/main/java/com/intellij/java/impl/generate/GenerateToStringActionHandlerImpl.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,8 @@ private static PsiClass getSubjectClass(Editor editor, PsiFile file) {
200200
}
201201

202202
//exclude interfaces, non-java classes etc
203-
for (GenerateToStringClassFilter filter : GenerateToStringClassFilter.EP_NAME.getExtensionList()) {
204-
if (!filter.canGenerateToString(clazz)) {
205-
return null;
206-
}
207-
}
208-
return clazz;
203+
return file.getApplication().getExtensionPoint(GenerateToStringClassFilter.class)
204+
.allMatchSafe(filter -> filter.canGenerateToString(clazz)) ? clazz : null;
209205
}
210206

211207
public static class MemberChooserHeaderPanel extends JPanel {

plugin/src/main/java/com/intellij/java/impl/ide/favoritesTreeView/smartPointerPsiNodes/BaseSmartPointerPsiNode.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,13 @@
2828
import consulo.ui.ex.tree.PresentationData;
2929
import consulo.ui.image.Image;
3030
import consulo.virtualFileSystem.VirtualFile;
31-
3231
import jakarta.annotation.Nonnull;
3332

3433
import java.util.ArrayList;
3534
import java.util.Collection;
3635

37-
public abstract class BaseSmartPointerPsiNode<Type extends SmartPsiElementPointer> extends ProjectViewNode<Type> implements
38-
PsiElementNavigationItem {
36+
public abstract class BaseSmartPointerPsiNode<Type extends SmartPsiElementPointer> extends ProjectViewNode<Type>
37+
implements PsiElementNavigationItem {
3938
private static final Logger LOG = Logger.getInstance(BaseSmartPointerPsiNode.class);
4039

4140
protected BaseSmartPointerPsiNode(Project project, Type value, ViewSettings viewSettings) {
@@ -112,9 +111,8 @@ public void update(PresentationData data) {
112111
data.setAttributesKey(CodeInsightColors.DEPRECATED_ATTRIBUTES);
113112
}
114113
updateImpl(data);
115-
for (ProjectViewNodeDecorator decorator : ProjectViewNodeDecorator.EP_NAME.getExtensionList(myProject)) {
116-
decorator.decorate(this, data);
117-
}
114+
value.getProject().getExtensionPoint(ProjectViewNodeDecorator.class)
115+
.forEach(decorator -> decorator.decorate(this, data));
118116
}
119117

120118
private boolean isDeprecated() {

plugin/src/main/java/com/intellij/java/impl/openapi/roots/impl/JavaProjectModelModificationServiceImpl.java

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,10 @@
2525
import consulo.module.content.layer.orderEntry.DependencyScope;
2626
import consulo.project.Project;
2727
import consulo.util.concurrent.AsyncResult;
28+
import jakarta.annotation.Nonnull;
2829
import jakarta.inject.Inject;
2930
import jakarta.inject.Singleton;
3031

31-
import jakarta.annotation.Nonnull;
32-
3332
import java.util.Collection;
3433

3534
/**
@@ -38,22 +37,19 @@
3837
@Singleton
3938
@ServiceImpl
4039
public class JavaProjectModelModificationServiceImpl extends JavaProjectModelModificationService {
40+
@Nonnull
4141
private final Project myProject;
4242

4343
@Inject
44-
public JavaProjectModelModificationServiceImpl(Project project) {
44+
public JavaProjectModelModificationServiceImpl(@Nonnull Project project) {
4545
myProject = project;
4646
}
4747

4848
@Override
4949
public AsyncResult<Void> addDependency(@Nonnull Module from, @Nonnull Module to, @Nonnull DependencyScope scope) {
50-
for (JavaProjectModelModifier modifier : getModelModifiers()) {
51-
AsyncResult<Void> asyncResult = modifier.addModuleDependency(from, to, scope);
52-
if (asyncResult != null) {
53-
return asyncResult;
54-
}
55-
}
56-
return AsyncResult.rejected();
50+
AsyncResult<Void> asyncResult = myProject.getExtensionPoint(JavaProjectModelModifier.class)
51+
.computeSafeIfAny(modifier -> modifier.addModuleDependency(from, to, scope));
52+
return asyncResult != null ? asyncResult : AsyncResult.rejected();
5753
}
5854

5955
@Override
@@ -62,39 +58,22 @@ public AsyncResult<Void> addDependency(
6258
@Nonnull ExternalLibraryDescriptor libraryDescriptor,
6359
@Nonnull DependencyScope scope
6460
) {
65-
for (JavaProjectModelModifier modifier : getModelModifiers()) {
66-
AsyncResult<Void> asyncResult = modifier.addExternalLibraryDependency(from, libraryDescriptor, scope);
67-
if (asyncResult != null) {
68-
return asyncResult;
69-
}
70-
}
71-
return AsyncResult.rejected();
61+
AsyncResult<Void> asyncResult = myProject.getExtensionPoint(JavaProjectModelModifier.class)
62+
.computeSafeIfAny(modifier -> modifier.addExternalLibraryDependency(from, libraryDescriptor, scope));
63+
return asyncResult != null ? asyncResult : AsyncResult.rejected();
7264
}
7365

7466
@Override
7567
public AsyncResult<Void> addDependency(@Nonnull Module from, @Nonnull Library library, @Nonnull DependencyScope scope) {
76-
for (JavaProjectModelModifier modifier : getModelModifiers()) {
77-
AsyncResult<Void> asyncResult = modifier.addLibraryDependency(from, library, scope);
78-
if (asyncResult != null) {
79-
return asyncResult;
80-
}
81-
}
82-
return AsyncResult.rejected();
68+
AsyncResult<Void> asyncResult = myProject.getExtensionPoint(JavaProjectModelModifier.class)
69+
.computeSafeIfAny(modifier -> modifier.addLibraryDependency(from, library, scope));
70+
return asyncResult != null ? asyncResult : AsyncResult.rejected();
8371
}
8472

8573
@Override
8674
public AsyncResult<Void> changeLanguageLevel(@Nonnull Module module, @Nonnull LanguageLevel languageLevel) {
87-
for (JavaProjectModelModifier modifier : getModelModifiers()) {
88-
AsyncResult<Void> asyncResult = modifier.changeLanguageLevel(module, languageLevel);
89-
if (asyncResult != null) {
90-
return asyncResult;
91-
}
92-
}
93-
return AsyncResult.rejected();
94-
}
95-
96-
@Nonnull
97-
private JavaProjectModelModifier[] getModelModifiers() {
98-
return JavaProjectModelModifier.EP_NAME.getExtensions(myProject);
75+
AsyncResult<Void> asyncResult = myProject.getExtensionPoint(JavaProjectModelModifier.class)
76+
.computeSafeIfAny(modifier -> modifier.changeLanguageLevel(module, languageLevel));
77+
return asyncResult != null ? asyncResult : AsyncResult.rejected();
9978
}
10079
}

plugin/src/main/java/com/intellij/java/impl/psi/NonClasspathResolveScopeEnlarger.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public SearchScope getAdditionalResolveScope(@Nonnull VirtualFile file, Project
3131

3232
FileType fileType = file.getFileType();
3333
if (fileType == JavaFileType.INSTANCE || fileType == JavaClassFileType.INSTANCE) {
34-
for (PsiElementFinder finder : PsiElementFinder.EP_NAME.getExtensionList(project)) {
34+
return project.getExtensionPoint(PsiElementFinder.class).computeSafeIfAny(finder -> {
3535
if (finder instanceof NonClasspathClassFinder nonClasspathClassFinder) {
3636
List<VirtualFile> roots = nonClasspathClassFinder.getClassRoots();
3737
for (VirtualFile root : roots) {
@@ -40,7 +40,8 @@ public SearchScope getAdditionalResolveScope(@Nonnull VirtualFile file, Project
4040
}
4141
}
4242
}
43-
}
43+
return null;
44+
});
4445
}
4546
return null;
4647
}

plugin/src/main/java/com/intellij/java/impl/refactoring/changeSignature/ChangeSignatureProcessor.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import com.intellij.java.language.psi.*;
2626
import com.intellij.java.language.psi.util.*;
2727
import com.intellij.java.language.util.VisibilityUtil;
28+
import consulo.component.extension.ExtensionPoint;
2829
import consulo.java.impl.refactoring.changeSignature.ChangeSignatureUsageProcessorEx;
2930
import consulo.language.codeStyle.CodeStyleManager;
3031
import consulo.language.editor.refactoring.changeSignature.ChangeSignatureProcessorBase;
@@ -185,14 +186,19 @@ protected void refreshElements(PsiElement[] elements) {
185186
@Override
186187
@RequiredUIAccess
187188
protected boolean preprocessUsages(@Nonnull SimpleReference<UsageInfo[]> refUsages) {
188-
for (ChangeSignatureUsageProcessor processor : ChangeSignatureUsageProcessor.EP_NAME.getExtensions()) {
189-
if (processor instanceof ChangeSignatureUsageProcessorEx changeSignatureUsageProcessorEx
190-
&& changeSignatureUsageProcessorEx.setupDefaultValues(myChangeInfo, refUsages, myProject)) {
191-
return false;
192-
}
189+
ExtensionPoint<ChangeSignatureUsageProcessor> extensionPoint =
190+
myProject.getApplication().getExtensionPoint(ChangeSignatureUsageProcessor.class);
191+
192+
boolean defaultValuesSet = extensionPoint.noneMatchSafe(
193+
processor -> processor instanceof ChangeSignatureUsageProcessorEx changeSignatureUsageProcessorEx
194+
&& changeSignatureUsageProcessorEx.setupDefaultValues(myChangeInfo, refUsages, myProject)
195+
);
196+
if (defaultValuesSet) {
197+
return false;
193198
}
199+
194200
MultiMap<PsiElement, String> conflictDescriptions = new MultiMap<>();
195-
for (ChangeSignatureUsageProcessor usageProcessor : ChangeSignatureUsageProcessor.EP_NAME.getExtensions()) {
201+
extensionPoint.forEach(usageProcessor -> {
196202
MultiMap<PsiElement, String> conflicts = usageProcessor.findConflicts(myChangeInfo, refUsages);
197203
for (PsiElement key : conflicts.keySet()) {
198204
Collection<String> collection = conflictDescriptions.get(key);
@@ -202,7 +208,7 @@ protected boolean preprocessUsages(@Nonnull SimpleReference<UsageInfo[]> refUsag
202208
collection.addAll(conflicts.get(key));
203209
conflictDescriptions.put(key, collection);
204210
}
205-
}
211+
});
206212

207213
UsageInfo[] usagesIn = refUsages.get();
208214
RenameUtil.addConflictDescriptions(usagesIn, conflictDescriptions);

plugin/src/main/java/com/intellij/java/impl/refactoring/introduceParameter/IntroduceParameterProcessor.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,9 +280,8 @@ protected boolean preprocessUsages(SimpleReference<UsageInfo[]> refUsages) {
280280
}
281281
}
282282

283-
for (IntroduceParameterMethodUsagesProcessor processor : IntroduceParameterMethodUsagesProcessor.EP_NAME.getExtensions()) {
284-
processor.findConflicts(this, refUsages.get(), conflicts);
285-
}
283+
myProject.getApplication().getExtensionPoint(IntroduceParameterMethodUsagesProcessor.class)
284+
.forEach(processor -> processor.findConflicts(this, refUsages.get(), conflicts));
286285

287286
myHasConflicts = !conflicts.isEmpty();
288287
return showConflicts(conflicts, usagesIn);

0 commit comments

Comments
 (0)