From f4e148f0d5b1fecda84064b1f08ed78848437ed0 Mon Sep 17 00:00:00 2001 From: anna Date: Wed, 13 Jan 2010 21:11:19 +0300 Subject: [PATCH] escape $ in short names only (IDEA-27168); cleanup utils --- .../com/intellij/execution/JavaExecutionUtil.java | 12 +++++-- .../intellij/execution/PsiClassLocationUtil.java | 37 ---------------------- .../configurations/JavaRunConfigurationModule.java | 3 +- .../execution/junit/JUnitConfiguration.java | 6 +--- .../com/intellij/execution/junit/TestClass.java | 6 ++-- .../com/intellij/execution/junit/TestMethod.java | 9 +++--- .../execution/junit2/info/PsiClassLocator.java | 10 ++++-- .../theoryinpractice/testng/model/TestData.java | 4 --- 8 files changed, 29 insertions(+), 58 deletions(-) delete mode 100644 java/execution/openapi/src/com/intellij/execution/PsiClassLocationUtil.java diff --git a/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java b/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java index 493d50a78c..370c5325d6 100644 --- a/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java +++ b/java/execution/openapi/src/com/intellij/execution/JavaExecutionUtil.java @@ -27,6 +27,7 @@ import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.project.Project; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleUtil; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiClassUtil; @@ -134,9 +135,16 @@ public class JavaExecutionUtil { @Nullable public static PsiClass findMainClass(final Module module, final String mainClassName) { - final PsiManager psiManager = PsiManager.getInstance(module.getProject()); + return findMainClass(module.getProject(), mainClassName, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module)); + } + + @Nullable + public static PsiClass findMainClass(final Project project, final String mainClassName, final GlobalSearchScope scope) { + final PsiManager psiManager = PsiManager.getInstance(project); + final String shortName = StringUtil.getShortName(mainClassName); + final String packageName = StringUtil.getPackageName(mainClassName); return JavaPsiFacade.getInstance(psiManager.getProject()) - .findClass(mainClassName.replace('$', '.'), GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module)); + .findClass(StringUtil.getQualifiedName(packageName, shortName.replace('$', '.')), scope); } diff --git a/java/execution/openapi/src/com/intellij/execution/PsiClassLocationUtil.java b/java/execution/openapi/src/com/intellij/execution/PsiClassLocationUtil.java deleted file mode 100644 index ad99b971a6..0000000000 --- a/java/execution/openapi/src/com/intellij/execution/PsiClassLocationUtil.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2000-2009 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.execution; - -import com.intellij.openapi.project.Project; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiClass; -import com.intellij.psi.search.GlobalSearchScope; -import org.jetbrains.annotations.Nullable; - -/** - * @author spleaner - */ -public class PsiClassLocationUtil { - private PsiClassLocationUtil() { - } - - @Nullable - public static Location fromClassQualifiedName(final Project project, final String qualifiedName) { - final PsiClass psiClass = - JavaPsiFacade.getInstance(project).findClass(qualifiedName.replace('$', '.'), GlobalSearchScope.allScope(project)); - return psiClass != null ? new PsiLocation(project, psiClass) : null; - } -} diff --git a/java/execution/openapi/src/com/intellij/execution/configurations/JavaRunConfigurationModule.java b/java/execution/openapi/src/com/intellij/execution/configurations/JavaRunConfigurationModule.java index c45ebc12f3..0e83b49c8a 100644 --- a/java/execution/openapi/src/com/intellij/execution/configurations/JavaRunConfigurationModule.java +++ b/java/execution/openapi/src/com/intellij/execution/configurations/JavaRunConfigurationModule.java @@ -16,6 +16,7 @@ package com.intellij.execution.configurations; import com.intellij.execution.ExecutionBundle; +import com.intellij.execution.JavaExecutionUtil; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.ModuleUtil; @@ -57,7 +58,7 @@ public class JavaRunConfigurationModule extends RunConfigurationModule { else { scope = myClassesInLibraries ? GlobalSearchScope.allScope(getProject()) : GlobalSearchScope.projectScope(getProject()); } - return JavaPsiFacade.getInstance(getProject()).findClass(qualifiedName.replace('$', '.'), scope); + return JavaExecutionUtil.findMainClass(getProject(), qualifiedName, scope); } public static Collection getModulesForClass(@NotNull final Project project, final String className) { diff --git a/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java b/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java index c2a074fe6d..c12d79f5c1 100644 --- a/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java +++ b/plugins/junit/src/com/intellij/execution/junit/JUnitConfiguration.java @@ -194,7 +194,7 @@ public class JUnitConfiguration extends ModuleBasedConfiguration classLocation = PsiClassLocationUtil.fromClassQualifiedName(module.getProject(), data.getMainClassPsiName()); - if (JUnitUtil.isJUnit4TestClass(classLocation.getPsiElement())) { + final Project project = module.getProject(); + final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, data.getMainClassName(), GlobalSearchScope.allScope(project)); + if (JUnitUtil.isJUnit4TestClass(psiClass)) { myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER); } myJavaParameters.getProgramParametersList().add(data.getMainClassName()); diff --git a/plugins/junit/src/com/intellij/execution/junit/TestMethod.java b/plugins/junit/src/com/intellij/execution/junit/TestMethod.java index 418eab24a6..bc8ac55928 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestMethod.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestMethod.java @@ -24,6 +24,7 @@ import com.intellij.openapi.util.Comparing; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.listeners.RefactoringElementListener; import com.intellij.rt.execution.junit.JUnitStarter; import org.jetbrains.annotations.NotNull; @@ -51,14 +52,14 @@ class TestMethod extends TestObject { } protected void addJUnit4Parameter(final JUnitConfiguration.Data data, Project project) { - Location classLocation = PsiClassLocationUtil.fromClassQualifiedName(project, data.getMainClassPsiName()); - PsiClass aClass = classLocation.getPsiElement(); - if (JUnitUtil.isJUnit4TestClass(aClass)) { + final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, data.getMainClassName(), GlobalSearchScope.allScope(project)); + LOG.assertTrue(psiClass != null); + if (JUnitUtil.isJUnit4TestClass(psiClass)) { myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER); return; } final String methodName = data.getMethodName(); - PsiMethod[] methods = aClass.findMethodsByName(methodName, true); + PsiMethod[] methods = psiClass.findMethodsByName(methodName, true); for (PsiMethod method : methods) { if (JUnitUtil.isTestAnnotated(method)) { myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER); diff --git a/plugins/junit/src/com/intellij/execution/junit2/info/PsiClassLocator.java b/plugins/junit/src/com/intellij/execution/junit2/info/PsiClassLocator.java index 0066a8e7ec..2e140a29dc 100644 --- a/plugins/junit/src/com/intellij/execution/junit2/info/PsiClassLocator.java +++ b/plugins/junit/src/com/intellij/execution/junit2/info/PsiClassLocator.java @@ -16,10 +16,13 @@ package com.intellij.execution.junit2.info; +import com.intellij.execution.JavaExecutionUtil; import com.intellij.execution.Location; -import com.intellij.execution.PsiClassLocationUtil; +import com.intellij.execution.PsiLocation; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiClass; +import com.intellij.psi.search.GlobalSearchScope; public class PsiClassLocator implements PsiLocator { private final String myName; @@ -39,7 +42,8 @@ public class PsiClassLocator implements PsiLocator { } public Location getLocation(final Project project) { - return PsiClassLocationUtil.fromClassQualifiedName(project, getQualifiedName()); + final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, getQualifiedName(), GlobalSearchScope.allScope(project)); + return psiClass != null ? new PsiLocation(project, psiClass) : null; } public String getPackage() { @@ -51,6 +55,6 @@ public class PsiClassLocator implements PsiLocator { } public String getQualifiedName() { - return (myPackage.length() > 0 ? myPackage + "." : "") + myName; + return StringUtil.getQualifiedName(myPackage, myName); } } diff --git a/plugins/testng/src/com/theoryinpractice/testng/model/TestData.java b/plugins/testng/src/com/theoryinpractice/testng/model/TestData.java index 6764606241..4b6cc0a145 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/model/TestData.java +++ b/plugins/testng/src/com/theoryinpractice/testng/model/TestData.java @@ -208,10 +208,6 @@ public class TestData implements Cloneable return MAIN_CLASS_NAME == null ? "" : MAIN_CLASS_NAME; } - public String getMainClassPsiName() { - return getMainClassName().replace('$', '.'); - } - public Module setTestMethod(Location location) { final PsiMethod method = location.getPsiElement(); METHOD_NAME = method.getName(); -- 2.11.4.GIT