diff --git a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java index 676216df8981..59c14c293de1 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaDocumentationProvider.java @@ -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()); diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java index cd7e533190eb..7fe84830d8aa 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiImplUtil.java @@ -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(); + } + } +} \ No newline at end of file diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/light/LightJavaModule.java b/java/java-psi-impl/src/com/intellij/psi/impl/light/LightJavaModule.java index e7b14c52504c..a3a297dc0264 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/light/LightJavaModule.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/light/LightJavaModule.java @@ -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() {