mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
execution: extract check for alternative jre; check for working directory (IDEA-77754)
This commit is contained in:
+3
-9
@@ -24,6 +24,7 @@ import com.intellij.execution.junit.RefactoringListeners;
|
||||
import com.intellij.execution.process.OSProcessHandler;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.util.JavaParametersUtil;
|
||||
import com.intellij.execution.util.ProgramParametersUtil;
|
||||
import com.intellij.openapi.components.PathMacroManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
@@ -31,7 +32,6 @@ import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.options.SettingsEditor;
|
||||
import com.intellij.openapi.options.SettingsEditorGroup;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.DefaultJDOMExternalizer;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
@@ -138,19 +138,13 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
|
||||
}
|
||||
|
||||
public void checkConfiguration() throws RuntimeConfigurationException {
|
||||
if (ALTERNATIVE_JRE_PATH_ENABLED){
|
||||
if (ALTERNATIVE_JRE_PATH == null ||
|
||||
ALTERNATIVE_JRE_PATH.length() == 0 ||
|
||||
!JavaSdkImpl.checkForJre(ALTERNATIVE_JRE_PATH)){
|
||||
throw new RuntimeConfigurationWarning(ExecutionBundle.message("jre.path.is.not.valid.jre.home.error.mesage", ALTERNATIVE_JRE_PATH));
|
||||
}
|
||||
}
|
||||
JavaParametersUtil.checkAlternativeJRE(this);
|
||||
final JavaRunConfigurationModule configurationModule = getConfigurationModule();
|
||||
final PsiClass psiClass = configurationModule.checkModuleAndClassName(MAIN_CLASS_NAME, ExecutionBundle.message("no.main.class.specified.error.text"));
|
||||
if (!PsiMethodUtil.hasMainMethod(psiClass)) {
|
||||
throw new RuntimeConfigurationWarning(ExecutionBundle.message("main.method.not.found.in.class.error.message", MAIN_CLASS_NAME));
|
||||
}
|
||||
|
||||
ProgramParametersUtil.checkWorkingDirectoryExist(this, getProject(), configurationModule.getModule());
|
||||
JavaRunConfigurationExtensionManager.checkConfigurationIsValid(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,9 +17,11 @@ package com.intellij.execution.util;
|
||||
|
||||
import com.intellij.execution.CantRunException;
|
||||
import com.intellij.execution.CommonJavaRunConfigurationParameters;
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.JavaExecutionUtil;
|
||||
import com.intellij.execution.configurations.JavaParameters;
|
||||
import com.intellij.execution.configurations.RunConfigurationModule;
|
||||
import com.intellij.execution.configurations.RuntimeConfigurationWarning;
|
||||
import com.intellij.execution.configurations.SimpleJavaParameters;
|
||||
import com.intellij.execution.junit.JUnitUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -122,4 +124,15 @@ public class JavaParametersUtil {
|
||||
if (jdk == null) throw CantRunException.noJdkConfigured();
|
||||
return jdk;
|
||||
}
|
||||
|
||||
public static void checkAlternativeJRE(CommonJavaRunConfigurationParameters configuration) throws RuntimeConfigurationWarning {
|
||||
if (configuration.isAlternativeJrePathEnabled()) {
|
||||
if (configuration.getAlternativeJrePath() == null ||
|
||||
configuration.getAlternativeJrePath().length() == 0 ||
|
||||
!JavaSdk.checkForJre(configuration.getAlternativeJrePath())) {
|
||||
throw new RuntimeConfigurationWarning(
|
||||
ExecutionBundle.message("jre.path.is.not.valid.jre.home.error.mesage", configuration.getAlternativeJrePath()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ package com.intellij.execution.util;
|
||||
|
||||
import com.intellij.execution.CommonProgramRunConfigurationParameters;
|
||||
import com.intellij.execution.configurations.ModuleBasedConfiguration;
|
||||
import com.intellij.execution.configurations.RuntimeConfigurationWarning;
|
||||
import com.intellij.execution.configurations.SimpleProgramParameters;
|
||||
import com.intellij.openapi.components.PathMacroManager;
|
||||
import com.intellij.openapi.module.Module;
|
||||
@@ -26,6 +27,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.PathUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -36,6 +38,19 @@ public class ProgramParametersUtil {
|
||||
|
||||
parameters.getProgramParametersList().addParametersString(configuration.getProgramParameters());
|
||||
|
||||
parameters.setWorkingDirectory(getWorkingDir(configuration, project, module));
|
||||
|
||||
parameters.setupEnvs(configuration.getEnvs(), configuration.isPassParentEnvs());
|
||||
if (parameters.getEnv() != null) {
|
||||
Map<String, String> expanded = new HashMap<String, String>();
|
||||
for (Map.Entry<String, String> each : parameters.getEnv().entrySet()) {
|
||||
expanded.put(each.getKey(), expandPath(each.getValue(), module, project));
|
||||
}
|
||||
parameters.setEnv(expanded);
|
||||
}
|
||||
}
|
||||
|
||||
public static String getWorkingDir(CommonProgramRunConfigurationParameters configuration, Project project, Module module) {
|
||||
String workingDirectory = configuration.getWorkingDirectory();
|
||||
VirtualFile baseDir = project.getBaseDir();
|
||||
|
||||
@@ -46,15 +61,14 @@ public class ProgramParametersUtil {
|
||||
if (!FileUtil.isAbsolute(workingDirectory) && baseDir != null) {
|
||||
workingDirectory = baseDir.getPath() + "/" + workingDirectory;
|
||||
}
|
||||
parameters.setWorkingDirectory(workingDirectory);
|
||||
return workingDirectory;
|
||||
}
|
||||
|
||||
parameters.setupEnvs(configuration.getEnvs(), configuration.isPassParentEnvs());
|
||||
if (parameters.getEnv() != null) {
|
||||
Map<String, String> expanded = new HashMap<String, String>();
|
||||
for (Map.Entry<String, String> each : parameters.getEnv().entrySet()) {
|
||||
expanded.put(each.getKey(), expandPath(each.getValue(), module, project));
|
||||
}
|
||||
parameters.setEnv(expanded);
|
||||
public static void checkWorkingDirectoryExist(CommonProgramRunConfigurationParameters configuration, Project project, Module module)
|
||||
throws RuntimeConfigurationWarning {
|
||||
final String workingDir = getWorkingDir(configuration, project, module);
|
||||
if (!new File(workingDir).exists()) {
|
||||
throw new RuntimeConfigurationWarning("Working directory '" + workingDir + "' doesn't exist");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,16 +16,19 @@
|
||||
package com.intellij.execution.junit;
|
||||
|
||||
import com.intellij.execution.CantRunException;
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.testframework.SourceScope;
|
||||
import com.intellij.execution.util.JavaParametersUtil;
|
||||
import com.intellij.execution.util.ProgramParametersUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.JavaSdk;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.JavaDirectoryService;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.PsiPackage;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.GlobalSearchScopes;
|
||||
|
||||
@@ -80,14 +83,8 @@ class TestDirectory extends TestPackage {
|
||||
|
||||
@Override
|
||||
public void checkConfiguration() throws RuntimeConfigurationException {
|
||||
if (myConfiguration.isAlternativeJrePathEnabled()) {
|
||||
if (myConfiguration.getAlternativeJrePath() == null ||
|
||||
myConfiguration.getAlternativeJrePath().length() == 0 ||
|
||||
!JavaSdk.checkForJre(myConfiguration.getAlternativeJrePath())) {
|
||||
throw new RuntimeConfigurationWarning(
|
||||
ExecutionBundle.message("jre.path.is.not.valid.jre.home.error.mesage", myConfiguration.getAlternativeJrePath()));
|
||||
}
|
||||
}
|
||||
JavaParametersUtil.checkAlternativeJRE(myConfiguration);
|
||||
ProgramParametersUtil.checkWorkingDirectoryExist(myConfiguration, myConfiguration.getProject(), myConfiguration.getConfigurationModule().getModule());
|
||||
final String dirName = myConfiguration.getPersistentData().getDirName();
|
||||
if (dirName == null || dirName.isEmpty()) {
|
||||
throw new RuntimeConfigurationError("Directory is not specified");
|
||||
|
||||
@@ -36,13 +36,13 @@ import com.intellij.execution.runners.ProgramRunner;
|
||||
import com.intellij.execution.testframework.*;
|
||||
import com.intellij.execution.ui.ConsoleViewContentType;
|
||||
import com.intellij.execution.util.JavaParametersUtil;
|
||||
import com.intellij.execution.util.ProgramParametersUtil;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.JavaSdk;
|
||||
import com.intellij.openapi.projectRoots.JavaSdkType;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.ex.JavaSdkUtil;
|
||||
@@ -179,14 +179,8 @@ public abstract class TestObject implements JavaCommandLine {
|
||||
};
|
||||
|
||||
public void checkConfiguration() throws RuntimeConfigurationException{
|
||||
if (myConfiguration.isAlternativeJrePathEnabled()){
|
||||
if (myConfiguration.getAlternativeJrePath() == null ||
|
||||
myConfiguration.getAlternativeJrePath().length() == 0 ||
|
||||
!JavaSdk.checkForJre(myConfiguration.getAlternativeJrePath())){
|
||||
throw new RuntimeConfigurationWarning(
|
||||
ExecutionBundle.message("jre.path.is.not.valid.jre.home.error.mesage", myConfiguration.getAlternativeJrePath()));
|
||||
}
|
||||
}
|
||||
JavaParametersUtil.checkAlternativeJRE(myConfiguration);
|
||||
ProgramParametersUtil.checkWorkingDirectoryExist(myConfiguration, myConfiguration.getProject(), myConfiguration.getConfigurationModule().getModule());
|
||||
}
|
||||
|
||||
public SourceScope getSourceScope() {
|
||||
|
||||
@@ -29,6 +29,8 @@ import com.intellij.execution.configurations.*;
|
||||
import com.intellij.execution.junit.RefactoringListeners;
|
||||
import com.intellij.execution.runners.ExecutionEnvironment;
|
||||
import com.intellij.execution.testframework.SourceScope;
|
||||
import com.intellij.execution.util.JavaParametersUtil;
|
||||
import com.intellij.execution.util.ProgramParametersUtil;
|
||||
import com.intellij.openapi.components.PathMacroManager;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.options.SettingsEditor;
|
||||
@@ -338,6 +340,8 @@ public class TestNGConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
|
||||
}
|
||||
}
|
||||
JavaRunConfigurationExtensionManager.checkConfigurationIsValid(this);
|
||||
ProgramParametersUtil.checkWorkingDirectoryExist(this, getProject(), getConfigurationModule().getModule());
|
||||
JavaParametersUtil.checkAlternativeJRE(this);
|
||||
//TODO add various checks here
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user