From 19b8ba05ede25e0a6b136226e239ae112e7ac6be Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 4 Mar 2011 14:26:14 +0300 Subject: [PATCH] IDEA-66154: Resources from Web Facets not autocompleted across transitive module dependencies --- .../intellij/xml/index/ResourceRelevance.java | 39 ++++++++----------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/xml/impl/src/com/intellij/xml/index/ResourceRelevance.java b/xml/impl/src/com/intellij/xml/index/ResourceRelevance.java index 1c787d3f1516..49d2db39f1d1 100644 --- a/xml/impl/src/com/intellij/xml/index/ResourceRelevance.java +++ b/xml/impl/src/com/intellij/xml/index/ResourceRelevance.java @@ -18,14 +18,11 @@ package com.intellij.xml.index; import com.intellij.javaee.ExternalResourceManager; import com.intellij.javaee.ExternalResourceManagerImpl; import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleManager; -import com.intellij.openapi.roots.OrderEntry; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.Nullable; -import java.util.List; - /** * @author Dmitry Avdeev */ @@ -37,32 +34,28 @@ public enum ResourceRelevance { SOURCE, MAPPED; - public static ResourceRelevance getRelevance(VirtualFile file, @Nullable Module module, ProjectFileIndex fileIndex) { + public static ResourceRelevance getRelevance(VirtualFile resource, @Nullable Module module, ProjectFileIndex fileIndex) { + boolean inTest = fileIndex.isInTestSourceContent(resource); if (module != null) { - Module moduleForFile = fileIndex.getModuleForFile(file); - if (moduleForFile != null) { // in module content - return module.equals(moduleForFile) || ModuleManager.getInstance(module.getProject()).isModuleDependent(module, moduleForFile) ? SOURCE : NONE; + GlobalSearchScope scope = module.getModuleWithDependenciesAndLibrariesScope(inTest); + Module resourceModule = fileIndex.getModuleForFile(resource); + if (resourceModule != null && + (resourceModule == module || scope.isSearchInModuleContent(resourceModule)) || + scope.contains(resource)) { + return inTest || fileIndex.isInSource(resource) ? SOURCE : LIBRARY; } } - if (fileIndex.isInLibraryClasses(file)) { - List orderEntries = fileIndex.getOrderEntriesForFile(file); - if (orderEntries.isEmpty()) { - return NONE; - } - if (module != null) { - for (OrderEntry orderEntry : orderEntries) { - Module ownerModule = orderEntry.getOwnerModule(); - if (ownerModule.equals(module)) { - return LIBRARY; - } - } - } + else if (inTest || fileIndex.isInSource(resource)) { + return SOURCE; + } + else if (fileIndex.isInLibraryClasses(resource)) { + return LIBRARY; } ExternalResourceManagerImpl resourceManager = (ExternalResourceManagerImpl)ExternalResourceManager.getInstance(); - if (resourceManager.isUserResource(file)) { + if (resourceManager.isUserResource(resource)) { return MAPPED; } - if (ExternalResourceManagerImpl.isStandardResource(file)) { + if (ExternalResourceManagerImpl.isStandardResource(resource)) { return STANDARD; } return NONE;