import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
+import com.intellij.psi.util.ClassUtil;
import com.intellij.psi.util.PsiClassUtil;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
@Nullable
public static String getRuntimeQualifiedName(final PsiClass aClass) {
- final PsiClass containingClass = aClass.getContainingClass();
- if (containingClass != null) {
- final String parentName = getRuntimeQualifiedName(containingClass);
- return parentName + "$" + aClass.getName();
- } else {
- return aClass.getQualifiedName();
- }
+ return ClassUtil.getJVMClassName(aClass);
}
@Nullable
@Nullable
public static String getJVMClassName(PsiClass aClass) {
- final String qName = aClass.getQualifiedName();
- if (qName == null) return null;
- return replaceDotsWithDollars(qName, aClass);
- }
-
- private static String replaceDotsWithDollars(final String qName, PsiClass aClass) {
- StringBuilder qNameBuffer = new StringBuilder(qName);
-
- int fromIndex = qNameBuffer.length();
- PsiElement parent = aClass.getParent();
- while (parent instanceof PsiClass) {
- final int dotIndex = qNameBuffer.lastIndexOf(".", fromIndex);
- if (dotIndex < 0) break;
- qNameBuffer.replace(dotIndex, dotIndex + 1, "$");
- fromIndex = dotIndex - 1;
- parent = parent.getParent();
+ final PsiClass containingClass = aClass.getContainingClass();
+ if (containingClass != null) {
+ String parentName = getJVMClassName(containingClass);
+ if (parentName == null) {
+ return null;
+ }
+
+ return parentName + "$" + aClass.getName();
}
- return qNameBuffer.toString();
+ return aClass.getQualifiedName();
}
+
@Nullable
public static PsiClass findPsiClassByJVMName(final PsiManager manager, final String jvmClassName) {
return findPsiClass(manager, jvmClassName.replace('/', '.'), null, true);