Refactoring: extract methods

This commit is contained in:
Nikolay Krasko
2013-04-26 18:37:20 +04:00
parent aac7f84c25
commit 8752b417e5
@@ -33,30 +33,38 @@ import org.jetbrains.jet.lang.psi.JetNamedFunction;
public class KotlinDefinitionsSearcher extends QueryExecutorBase<PsiElement, PsiElement> {
@Override
public void processQuery(@NotNull final PsiElement queryParameters, @NotNull Processor<PsiElement> consumer) {
public void processQuery(@NotNull PsiElement queryParameters, @NotNull Processor<PsiElement> consumer) {
if (queryParameters instanceof JetClass) {
PsiClass psiClass = ApplicationManager.getApplication().runReadAction(new Computable<PsiClass>() {
@Override
public PsiClass compute() {
return LightClassUtil.getPsiClass((JetClass) queryParameters);
}
});
if (psiClass != null) {
ContainerUtil.process(ClassInheritorsSearch.search(psiClass, true), consumer);
}
processClassImplementations((JetClass) queryParameters, consumer);
}
if (queryParameters instanceof JetNamedFunction) {
PsiMethod psiMethod = ApplicationManager.getApplication().runReadAction(new Computable<PsiMethod>() {
@Override
public PsiMethod compute() {
return LightClassUtil.getLightClassMethod((JetNamedFunction) queryParameters);
}
});
processFunctionImplementations((JetNamedFunction) queryParameters, consumer);
}
}
if (psiMethod != null) {
ContainerUtil.process(MethodImplementationsSearch.getMethodImplementations(psiMethod), consumer);
private static void processClassImplementations(final JetClass queryParameters, Processor<PsiElement> consumer) {
PsiClass psiClass = ApplicationManager.getApplication().runReadAction(new Computable<PsiClass>() {
@Override
public PsiClass compute() {
return LightClassUtil.getPsiClass(queryParameters);
}
});
if (psiClass != null) {
ContainerUtil.process(ClassInheritorsSearch.search(psiClass, true), consumer);
}
}
private static void processFunctionImplementations(final JetNamedFunction queryParameters, Processor<PsiElement> consumer) {
PsiMethod psiMethod = ApplicationManager.getApplication().runReadAction(new Computable<PsiMethod>() {
@Override
public PsiMethod compute() {
return LightClassUtil.getLightClassMethod(queryParameters);
}
});
if (psiMethod != null) {
ContainerUtil.process(MethodImplementationsSearch.getMethodImplementations(psiMethod), consumer);
}
}
}