From b6f4496d0ebd030e37dc9e376bdd5398cb5fb1a3 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 22 Dec 2015 16:33:13 +0100 Subject: [PATCH] remove java-psi->projectModel dependency to minimize kotlinc (IDEA-CR-7075) --- java/java-psi-api/java-psi-api.iml | 1 - .../com/intellij/psi/util/PsiClassUtil.java | 42 ------------- .../psi/impl/cache/impl/FindClassTest.java | 6 +- .../com/intellij/psi/util/FindClassUtil.java | 61 +++++++++++++++++++ .../shell/DefaultGroovyShellRunner.java | 4 +- 5 files changed, 66 insertions(+), 48 deletions(-) create mode 100644 java/openapi/src/com/intellij/psi/util/FindClassUtil.java diff --git a/java/java-psi-api/java-psi-api.iml b/java/java-psi-api/java-psi-api.iml index 1f3d4b57e001..743b9d4e9676 100644 --- a/java/java-psi-api/java-psi-api.iml +++ b/java/java-psi-api/java-psi-api.iml @@ -8,6 +8,5 @@ - \ No newline at end of file diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiClassUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiClassUtil.java index bdc71934dc59..1f2d47996384 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiClassUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiClassUtil.java @@ -16,24 +16,9 @@ package com.intellij.psi.util; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.roots.OrderEntry; -import com.intellij.openapi.roots.ProjectFileIndex; -import com.intellij.openapi.roots.ProjectRootManager; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiAnonymousClass; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiModifier; -import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.util.containers.ContainerUtil; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; -import java.util.Collections; -import java.util.Set; /** * @author mike @@ -57,31 +42,4 @@ public class PsiClassUtil { if (mustNotBeAbstract && aClass.hasModifierProperty(PsiModifier.ABSTRACT)) return false; return aClass.getContainingClass() == null || aClass.hasModifierProperty(PsiModifier.STATIC); } - - /** - * Searches the project for modules that contain the class with the specified full-qualified name within - * the module dependencies or libraries. - * - * @param qualifiedName the full-qualified name of the class to find. - * @return the modules that contain the given class in dependencies or libraries. - */ - @NotNull - public static Collection findModulesWithClass(@NotNull Project project, @NonNls @NotNull String qualifiedName) { - GlobalSearchScope allScope = GlobalSearchScope.allScope(project); - JavaPsiFacade facade = JavaPsiFacade.getInstance(project); - PsiClass[] possibleClasses = facade.findClasses(qualifiedName, allScope); - if (possibleClasses.length == 0) { - return Collections.emptyList(); - } - Set relevantModules = ContainerUtil.newLinkedHashSet(); - ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex(); - for (PsiClass aClass : possibleClasses) { - VirtualFile classFile = aClass.getContainingFile().getVirtualFile(); - for (OrderEntry orderEntry : fileIndex.getOrderEntriesForFile(classFile)) { - relevantModules.add(orderEntry.getOwnerModule()); - } - } - return relevantModules; - } - } diff --git a/java/java-tests/testSrc/com/intellij/psi/impl/cache/impl/FindClassTest.java b/java/java-tests/testSrc/com/intellij/psi/impl/cache/impl/FindClassTest.java index d292d339346f..f1fb852999f3 100644 --- a/java/java-tests/testSrc/com/intellij/psi/impl/cache/impl/FindClassTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/impl/cache/impl/FindClassTest.java @@ -34,7 +34,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.psi.util.PsiClassUtil; +import com.intellij.psi.util.FindClassUtil; import com.intellij.testFramework.PsiTestCase; import com.intellij.testFramework.PsiTestUtil; import com.intellij.util.containers.ContainerUtil; @@ -182,12 +182,12 @@ public class FindClassTest extends PsiTestCase { assertNotNull(psiClass); PsiClass psiClass2 = myJavaFacade.findClass("p.A", otherModules.get(0).getModuleWithDependenciesAndLibrariesScope(true)); assertNotNull(psiClass2); - Collection modules = PsiClassUtil.findModulesWithClass(myProject, "p.A"); + Collection modules = FindClassUtil.findModulesWithClass(myProject, "p.A"); assertSameElements(modules, getModule(), otherModules.get(0)); PsiClass packClass = myJavaFacade.findClass("pack.MyClass", otherModules.get(0).getModuleWithDependenciesAndLibrariesScope(true)); assertNotNull(packClass); - Collection packModules = PsiClassUtil.findModulesWithClass(myProject, "pack.MyClass"); + Collection packModules = FindClassUtil.findModulesWithClass(myProject, "pack.MyClass"); assertSameElements(packModules, otherModules.get(0)); } diff --git a/java/openapi/src/com/intellij/psi/util/FindClassUtil.java b/java/openapi/src/com/intellij/psi/util/FindClassUtil.java new file mode 100644 index 000000000000..9660012b6160 --- /dev/null +++ b/java/openapi/src/com/intellij/psi/util/FindClassUtil.java @@ -0,0 +1,61 @@ +/* + * Copyright 2000-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.psi.util; + +import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.OrderEntry; +import com.intellij.openapi.roots.ProjectFileIndex; +import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.PsiClass; +import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; +import java.util.Set; + +public class FindClassUtil { + /** + * Searches the project for modules that contain the class with the specified full-qualified name within + * the module dependencies or libraries. + * + * @param qualifiedName the full-qualified name of the class to find. + * @return the modules that contain the given class in dependencies or libraries. + */ + @NotNull + public static Collection findModulesWithClass(@NotNull Project project, @NonNls @NotNull String qualifiedName) { + GlobalSearchScope allScope = GlobalSearchScope.allScope(project); + JavaPsiFacade facade = JavaPsiFacade.getInstance(project); + PsiClass[] possibleClasses = facade.findClasses(qualifiedName, allScope); + if (possibleClasses.length == 0) { + return Collections.emptyList(); + } + Set relevantModules = ContainerUtil.newLinkedHashSet(); + ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex(); + for (PsiClass aClass : possibleClasses) { + VirtualFile classFile = aClass.getContainingFile().getVirtualFile(); + for (OrderEntry orderEntry : fileIndex.getOrderEntriesForFile(classFile)) { + relevantModules.add(orderEntry.getOwnerModule()); + } + } + return relevantModules; + } +} diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/shell/DefaultGroovyShellRunner.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/shell/DefaultGroovyShellRunner.java index 7657f3b4a675..915e40b8d5cb 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/shell/DefaultGroovyShellRunner.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/shell/DefaultGroovyShellRunner.java @@ -23,7 +23,7 @@ import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.search.GlobalSearchScope; -import com.intellij.psi.util.PsiClassUtil; +import com.intellij.psi.util.FindClassUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.groovy.config.AbstractConfigUtils; @@ -97,7 +97,7 @@ public class DefaultGroovyShellRunner extends GroovyShellConfig { public Collection getPossiblySuitableModules(Project project) { Set results = null; for (String className : REQUIRED_GROOVY_CLASSES) { - Collection someModules = PsiClassUtil.findModulesWithClass(project, className); + Collection someModules = FindClassUtil.findModulesWithClass(project, className); if (results == null) { results = ContainerUtil.newLinkedHashSet(someModules); } else {