mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
escape $ in short names only (IDEA-27168); cleanup utils
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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<PsiClass> fromClassQualifiedName(final Project project, final String qualifiedName) {
|
||||
final PsiClass psiClass =
|
||||
JavaPsiFacade.getInstance(project).findClass(qualifiedName.replace('$', '.'), GlobalSearchScope.allScope(project));
|
||||
return psiClass != null ? new PsiLocation<PsiClass>(project, psiClass) : null;
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -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<Module> getModulesForClass(@NotNull final Project project, final String className) {
|
||||
|
||||
@@ -194,7 +194,7 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
|
||||
}
|
||||
|
||||
public PsiClass getPsiElement() {
|
||||
return getConfigurationModule().findClass(myData.getMainClassPsiName());
|
||||
return getConfigurationModule().findClass(myData.getMainClassName());
|
||||
}
|
||||
|
||||
public void setPsiElement(final PsiClass psiClass) {
|
||||
@@ -398,10 +398,6 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
|
||||
return MAIN_CLASS_NAME != null ? MAIN_CLASS_NAME : "";
|
||||
}
|
||||
|
||||
public String getMainClassPsiName() {
|
||||
return getMainClassName().replace('$', '.');
|
||||
}
|
||||
|
||||
public String getPackageName() {
|
||||
return PACKAGE_NAME != null ? PACKAGE_NAME : "";
|
||||
}
|
||||
|
||||
@@ -23,6 +23,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;
|
||||
|
||||
@@ -39,8 +40,9 @@ class TestClass extends TestObject {
|
||||
final JUnitConfiguration.Data data = myConfiguration.getPersistentData();
|
||||
RunConfigurationModule module = myConfiguration.getConfigurationModule();
|
||||
configureModule(myJavaParameters, module, data.getMainClassName());
|
||||
Location<PsiClass> 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());
|
||||
|
||||
@@ -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<PsiClass> 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);
|
||||
|
||||
@@ -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<PsiClass> getLocation(final Project project) {
|
||||
return PsiClassLocationUtil.fromClassQualifiedName(project, getQualifiedName());
|
||||
final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, getQualifiedName(), GlobalSearchScope.allScope(project));
|
||||
return psiClass != null ? new PsiLocation<PsiClass>(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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<PsiMethod> location) {
|
||||
final PsiMethod method = location.getPsiElement();
|
||||
METHOD_NAME = method.getName();
|
||||
|
||||
Reference in New Issue
Block a user