summaryrefslogtreecommitdiff
path: root/java/java-psi-impl/src/com/intellij/codeInsight/generation/OverrideImplementExploreUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-psi-impl/src/com/intellij/codeInsight/generation/OverrideImplementExploreUtil.java')
-rw-r--r--java/java-psi-impl/src/com/intellij/codeInsight/generation/OverrideImplementExploreUtil.java31
1 files changed, 24 insertions, 7 deletions
diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/generation/OverrideImplementExploreUtil.java b/java/java-psi-impl/src/com/intellij/codeInsight/generation/OverrideImplementExploreUtil.java
index 6c273b2b8316..f8991e62cbc5 100644
--- a/java/java-psi-impl/src/com/intellij/codeInsight/generation/OverrideImplementExploreUtil.java
+++ b/java/java-psi-impl/src/com/intellij/codeInsight/generation/OverrideImplementExploreUtil.java
@@ -1,8 +1,10 @@
package com.intellij.codeInsight.generation;
import com.intellij.codeInsight.MemberImplementorExplorer;
+import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.extensions.Extensions;
+import com.intellij.openapi.util.NullableLazyValue;
+import com.intellij.openapi.util.VolatileNullableLazyValue;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.*;
@@ -111,6 +113,17 @@ public class OverrideImplementExploreUtil {
}
}
+ public interface MemberImplementorExplorersProvider {
+ MemberImplementorExplorer[] getExplorers();
+ }
+
+ private static final NullableLazyValue<MemberImplementorExplorersProvider> ourExplorersProvider = new VolatileNullableLazyValue<MemberImplementorExplorersProvider>() {
+ @Override
+ protected MemberImplementorExplorersProvider compute() {
+ return ServiceManager.getService(MemberImplementorExplorersProvider.class);
+ }
+ };
+
public static void collectMethodsToImplement(PsiClass aClass,
Map<MethodSignature, PsiMethod> abstracts,
Map<MethodSignature, PsiMethod> finals,
@@ -132,12 +145,16 @@ public class OverrideImplementExploreUtil {
}
}
- for (final MemberImplementorExplorer implementor : Extensions.getExtensions(MemberImplementorExplorer.EXTENSION_POINT_NAME)) {
- for (final PsiMethod method : implementor.getMethodsToImplement(aClass)) {
- MethodSignature signature = MethodSignatureUtil.createMethodSignature(method.getName(), method.getParameterList(),
- method.getTypeParameterList(), PsiSubstitutor.EMPTY, method.isConstructor());
- CandidateInfo info = new CandidateInfo(method, PsiSubstitutor.EMPTY);
- result.put(signature, info);
+ MemberImplementorExplorersProvider explorersProvider = ourExplorersProvider.getValue();
+ if (explorersProvider != null) {
+ for (final MemberImplementorExplorer implementor : explorersProvider.getExplorers()) {
+ for (final PsiMethod method : implementor.getMethodsToImplement(aClass)) {
+ MethodSignature signature = MethodSignatureUtil.createMethodSignature(method.getName(), method.getParameterList(),
+ method.getTypeParameterList(), PsiSubstitutor.EMPTY,
+ method.isConstructor());
+ CandidateInfo info = new CandidateInfo(method, PsiSubstitutor.EMPTY);
+ result.put(signature, info);
+ }
}
}
}