[java] extracts module virtual file detection routine

This commit is contained in:
Roman Shevchenko
2016-10-19 18:12:44 +02:00
parent f16fdceda1
commit d77241c459
3 changed files with 19 additions and 12 deletions
@@ -44,8 +44,8 @@ import com.intellij.openapi.vfs.JarFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileSystem;
import com.intellij.psi.*;
import com.intellij.psi.impl.PsiImplUtil;
import com.intellij.psi.impl.beanProperties.BeanPropertyElement;
import com.intellij.psi.impl.light.LightJavaModule;
import com.intellij.psi.impl.source.javadoc.PsiDocParamRef;
import com.intellij.psi.infos.CandidateInfo;
import com.intellij.psi.javadoc.PsiDocComment;
@@ -381,16 +381,7 @@ public class JavaDocumentationProvider extends DocumentationProviderEx implement
private static String generateModuleInfo(PsiJavaModule module) {
StringBuilder sb = new StringBuilder();
VirtualFile file = null;
if (module instanceof LightJavaModule) {
PsiElement target = module.getNavigationElement();
if (target instanceof PsiDirectory) {
file = ((PsiDirectory)target).getVirtualFile();
}
}
else {
file = module.getContainingFile().getVirtualFile();
}
VirtualFile file = PsiImplUtil.getModuleVirtualFile(module);
generateOrderEntryInfo(sb, file, module.getProject());
sb.append(LangBundle.message("java.terms.module")).append(' ').append(module.getModuleName());
@@ -25,9 +25,11 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.filters.ElementFilter;
import com.intellij.psi.impl.light.LightClassReference;
import com.intellij.psi.impl.light.LightJavaModule;
import com.intellij.psi.impl.source.PsiClassReferenceType;
import com.intellij.psi.impl.source.PsiImmediateClassType;
import com.intellij.psi.impl.source.resolve.ResolveCache;
@@ -735,4 +737,13 @@ public class PsiImplUtil {
ResolveCache.getInstance(project).resolveWithCaching(element, resolver, true, incompleteCode, psiFile);
return results.length == 0 ? JavaResolveResult.EMPTY_ARRAY : (JavaResolveResult[])results;
}
}
public static VirtualFile getModuleVirtualFile(@NotNull PsiJavaModule module) {
if (module instanceof LightJavaModule) {
return ((LightJavaModule)module).getRootVirtualFile();
}
else {
return module.getContainingFile().getVirtualFile();
}
}
}
@@ -50,6 +50,11 @@ public class LightJavaModule extends LightElement implements PsiJavaModule {
myRefElement = new LightJavaModuleReferenceElement(manager, moduleName(jarRoot.getNameWithoutExtension()));
}
@NotNull
public VirtualFile getRootVirtualFile() {
return myJarRoot;
}
@Nullable
@Override
public PsiDocComment getDocComment() {