diff options
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.java | 31 |
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); + } } } } |