From 87655972d048caee4b5d90661c7ecd8480e9a3b6 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Tue, 29 May 2012 17:40:31 +0400 Subject: [PATCH] IDEA-78410 Maven provided scope dependency is not resolved properly --- .../scopes/LibraryRuntimeClasspathScope.java | 90 +++++++------------ 1 file changed, 34 insertions(+), 56 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/openapi/module/impl/scopes/LibraryRuntimeClasspathScope.java b/platform/lang-impl/src/com/intellij/openapi/module/impl/scopes/LibraryRuntimeClasspathScope.java index 00c16f26dfcb..d02c7bf96610 100644 --- a/platform/lang-impl/src/com/intellij/openapi/module/impl/scopes/LibraryRuntimeClasspathScope.java +++ b/platform/lang-impl/src/com/intellij/openapi/module/impl/scopes/LibraryRuntimeClasspathScope.java @@ -46,20 +46,40 @@ public class LibraryRuntimeClasspathScope extends GlobalSearchScope { myIndex = ProjectRootManager.getInstance(project).getFileIndex(); final Set processedSdk = new THashSet(); final Set processedLibraries = new THashSet(); - final Set processedModules = new THashSet(); - final Condition condition = new Condition() { - @Override - public boolean value(OrderEntry orderEntry) { - if (orderEntry instanceof ModuleOrderEntry) { - final Module module = ((ModuleOrderEntry)orderEntry).getModule(); - return module != null && processedModules.add(module); - } - return true; - } - }; - for (Module module : modules) { - buildEntries(module, processedModules, processedLibraries, processedSdk, condition); - } + + ProjectRootManager.getInstance(project).orderEntries(modules).recursively().process(new RootPolicy>() { + public LinkedHashSet visitLibraryOrderEntry(final LibraryOrderEntry libraryOrderEntry, + final LinkedHashSet value) { + final Library library = libraryOrderEntry.getLibrary(); + if (library != null && processedLibraries.add(library)) { + ContainerUtil.addAll(value, libraryOrderEntry.getRootFiles(OrderRootType.CLASSES)); + } + return value; + } + + public LinkedHashSet visitModuleSourceOrderEntry(final ModuleSourceOrderEntry moduleSourceOrderEntry, + final LinkedHashSet value) { + ContainerUtil.addAll(value, moduleSourceOrderEntry.getFiles(OrderRootType.SOURCES)); + return value; + } + + @Override + public LinkedHashSet visitModuleOrderEntry(ModuleOrderEntry moduleOrderEntry, LinkedHashSet value) { + final Module depModule = moduleOrderEntry.getModule(); + if (depModule != null) { + ContainerUtil.addAll(value, ModuleRootManager.getInstance(depModule).getSourceRoots()); + } + return value; + } + + public LinkedHashSet visitJdkOrderEntry(final JdkOrderEntry jdkOrderEntry, final LinkedHashSet value) { + final Sdk jdk = jdkOrderEntry.getJdk(); + if (jdk != null && processedSdk.add(jdk)) { + ContainerUtil.addAll(value, jdkOrderEntry.getRootFiles(OrderRootType.CLASSES)); + } + return value; + } + }, myEntries); } public LibraryRuntimeClasspathScope(Project project, LibraryOrderEntry entry) { @@ -80,48 +100,6 @@ public class LibraryRuntimeClasspathScope extends GlobalSearchScope { return that.myEntries.equals(myEntries); } - private void buildEntries(@NotNull final Module module, - @NotNull final Set processedModules, - @NotNull final Set processedLibraries, - @NotNull final Set processedSdk, - Condition condition) { - if (!processedModules.add(module)) return; - - ModuleRootManager.getInstance(module).orderEntries().recursively().satisfying(condition).process(new RootPolicy>() { - public LinkedHashSet visitLibraryOrderEntry(final LibraryOrderEntry libraryOrderEntry, - final LinkedHashSet value) { - final Library library = libraryOrderEntry.getLibrary(); - if (library != null && processedLibraries.add(library)) { - ContainerUtil.addAll(value, libraryOrderEntry.getRootFiles(OrderRootType.CLASSES)); - } - return value; - } - - public LinkedHashSet visitModuleSourceOrderEntry(final ModuleSourceOrderEntry moduleSourceOrderEntry, - final LinkedHashSet value) { - ContainerUtil.addAll(value, moduleSourceOrderEntry.getFiles(OrderRootType.SOURCES)); - return value; - } - - @Override - public LinkedHashSet visitModuleOrderEntry(ModuleOrderEntry moduleOrderEntry, LinkedHashSet value) { - final Module depModule = moduleOrderEntry.getModule(); - if (depModule != null) { - ContainerUtil.addAll(value, ModuleRootManager.getInstance(depModule).getSourceRoots()); - } - return value; - } - - public LinkedHashSet visitJdkOrderEntry(final JdkOrderEntry jdkOrderEntry, final LinkedHashSet value) { - final Sdk jdk = jdkOrderEntry.getJdk(); - if (jdk != null && processedSdk.add(jdk)) { - ContainerUtil.addAll(value, jdkOrderEntry.getRootFiles(OrderRootType.CLASSES)); - } - return value; - } - }, myEntries); - } - public boolean contains(VirtualFile file) { return myEntries.contains(getFileRoot(file)); }