@NotNull private PsiClass[] findClassesInDumbMode( @NotNull String qualifiedName, @NotNull GlobalSearchScope scope) { String packageName = StringUtil.getPackageName(qualifiedName); PsiJavaPackage pkg = findPackage(packageName, scope); String className = StringUtil.getShortName(qualifiedName); if (pkg == null && packageName.length() < qualifiedName.length()) { PsiClass[] containingClasses = findClassesInDumbMode(packageName, scope); if (containingClasses.length == 1) { return PsiElementFinder.filterByName(className, containingClasses[0].getInnerClasses()); } return PsiClass.EMPTY_ARRAY; } if (pkg == null || !pkg.containsClassNamed(className)) { return PsiClass.EMPTY_ARRAY; } return pkg.findClassByShortName(className, scope); }
@Override public String toString() { return finder.toString(); }
@Override public PsiJavaPackage findPackage( @NotNull String qualifiedName, @NotNull GlobalSearchScope scope) { // Original element finder can't search packages with scope return finder.findPackage(qualifiedName); }
@Override public PsiClass findClass(@NotNull String qualifiedName, @NotNull GlobalSearchScope scope) { return finder.findClass(qualifiedName, scope); }