This commit is contained in:
Vladimir Krivosheev
2014-12-17 16:33:29 +01:00
parent f87157464c
commit a4ba663e06
17 changed files with 71 additions and 62 deletions
@@ -26,6 +26,7 @@ public interface CommonJavaRunConfigurationParameters extends CommonProgramRunCo
void setAlternativeJrePathEnabled(boolean enabled);
@Nullable
String getAlternativeJrePath();
void setAlternativeJrePath(String path);
@@ -214,6 +214,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
ALTERNATIVE_JRE_PATH_ENABLED = enabled;
}
@Nullable
@Override
public String getAlternativeJrePath() {
return ALTERNATIVE_JRE_PATH;
@@ -145,6 +145,7 @@ public class JarApplicationConfiguration extends LocatableConfigurationBase impl
myBean.ALTERNATIVE_JRE_PATH_ENABLED = enabled;
}
@Nullable
@Override
public String getAlternativeJrePath() {
return myBean.ALTERNATIVE_JRE_PATH;
@@ -29,7 +29,9 @@ import com.intellij.ui.InsertPathAction;
import com.intellij.ui.PanelWithAnchor;
import com.intellij.ui.TextFieldWithHistory;
import com.intellij.ui.components.JBCheckBox;
import com.intellij.util.PathUtil;
import net.miginfocom.swing.MigLayout;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.event.ActionEvent;
@@ -115,8 +117,8 @@ public class AlternativeJREPanel extends JPanel implements PanelWithAnchor {
return FileUtil.toSystemIndependentName(myPathField.getChildComponent().getText().trim());
}
private void setPath(final String path) {
myPathField.getChildComponent().setText(FileUtil.toSystemDependentName(path == null ? "" : path));
private void setPath(@Nullable String path) {
myPathField.getChildComponent().setText(StringUtil.notNullize(PathUtil.toSystemDependentName(path)));
}
public boolean isPathEnabled() {
@@ -128,7 +130,7 @@ public class AlternativeJREPanel extends JPanel implements PanelWithAnchor {
enabledChanged();
}
public void init(String path, boolean isEnabled){
public void init(@Nullable String path, boolean isEnabled){
setPathEnabled(isEnabled);
setPath(path);
}
@@ -36,6 +36,8 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiFile;
import org.intellij.lang.annotations.MagicConstant;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.List;
@@ -96,7 +98,7 @@ public class JavaParametersUtil {
public static void configureModule(final RunConfigurationModule runConfigurationModule,
final JavaParameters parameters,
@MagicConstant(valuesFromClass = JavaParameters.class) final int classPathType,
final String jreHome) throws CantRunException {
@Nullable String jreHome) throws CantRunException {
Module module = runConfigurationModule.getModule();
if (module == null) {
throw CantRunException.noModuleConfigured(runConfigurationModule.getModuleName());
@@ -104,20 +106,20 @@ public class JavaParametersUtil {
configureModule(module, parameters, classPathType, jreHome);
}
public static void configureModule(Module module, JavaParameters parameters, @MagicConstant(valuesFromClass = JavaParameters.class) int classPathType, String jreHome) throws CantRunException {
public static void configureModule(Module module, JavaParameters parameters, @MagicConstant(valuesFromClass = JavaParameters.class) int classPathType, @Nullable String jreHome) throws CantRunException {
parameters.configureByModule(module, classPathType, createModuleJdk(module, jreHome));
}
public static void configureProject(Project project, final JavaParameters parameters, @MagicConstant(valuesFromClass = JavaParameters.class) final int classPathType, final String jreHome)
public static void configureProject(Project project, final JavaParameters parameters, @MagicConstant(valuesFromClass = JavaParameters.class) final int classPathType, @Nullable String jreHome)
throws CantRunException {
parameters.configureByProject(project, classPathType, createProjectJdk(project, jreHome));
}
private static Sdk createModuleJdk(final Module module, final String jreHome) throws CantRunException {
private static Sdk createModuleJdk(final Module module, @Nullable String jreHome) throws CantRunException {
return jreHome == null ? JavaParameters.getModuleJdk(module) : createAlternativeJdk(jreHome);
}
public static Sdk createProjectJdk(final Project project, final String jreHome) throws CantRunException {
public static Sdk createProjectJdk(final Project project, @Nullable String jreHome) throws CantRunException {
return jreHome == null ? createProjectJdk(project) : createAlternativeJdk(jreHome);
}
@@ -129,7 +131,7 @@ public class JavaParametersUtil {
return jdk;
}
private static Sdk createAlternativeJdk(final String jreHome) throws CantRunException {
private static Sdk createAlternativeJdk(@NotNull String jreHome) throws CantRunException {
final Sdk configuredJdk = ProjectJdkTable.getInstance().findJdk(jreHome);
if (configuredJdk != null) {
return configuredJdk;
@@ -145,9 +147,8 @@ public class JavaParametersUtil {
public static void checkAlternativeJRE(CommonJavaRunConfigurationParameters configuration) throws RuntimeConfigurationWarning {
if (configuration.isAlternativeJrePathEnabled()) {
final String alternativeJrePath = configuration.getAlternativeJrePath();
if (alternativeJrePath == null ||
alternativeJrePath.length() == 0 ||
String alternativeJrePath = configuration.getAlternativeJrePath();
if (StringUtil.isEmpty(alternativeJrePath) ||
ProjectJdkTable.getInstance().findJdk(alternativeJrePath) == null && !JavaSdk.checkForJre(alternativeJrePath)) {
throw new RuntimeConfigurationWarning(
ExecutionBundle.message("jre.path.is.not.valid.jre.home.error.mesage", alternativeJrePath));
@@ -30,28 +30,26 @@ import com.intellij.openapi.projectRoots.JavaSdkVersion;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.Comparing;
import org.jetbrains.annotations.Nullable;
public class JreVersionDetector {
private String myLastAlternativeJrePath = null; //awful hack
private String myLastAlternativeJrePath ; //awful hack
private boolean myLastIsJre50;
public boolean isModuleJre50Configured(final ModuleBasedConfiguration configuration) {
final Module module = configuration.getConfigurationModule().getModule();
if (module != null && !module.isDisposed()) {
final ModuleRootManager rootManager = ModuleRootManager.getInstance(module);
final Sdk jdk = rootManager.getSdk();
return isJre50(jdk);
return isJre50(ModuleRootManager.getInstance(module).getSdk());
}
final Sdk projectJdk = ProjectRootManager.getInstance(configuration.getProject()).getProjectSdk();
return isJre50(projectJdk);
return isJre50(ProjectRootManager.getInstance(configuration.getProject()).getProjectSdk());
}
public boolean isJre50Configured(final CommonJavaRunConfigurationParameters configuration) {
if (configuration.isAlternativeJrePathEnabled()) {
if (configuration.getAlternativeJrePath().equals(myLastAlternativeJrePath)) return myLastIsJre50;
if (Comparing.equal(configuration.getAlternativeJrePath(), myLastAlternativeJrePath)) {
return myLastIsJre50;
}
myLastAlternativeJrePath = configuration.getAlternativeJrePath();
final String versionString = JavaSdk.getJdkVersion(myLastAlternativeJrePath);
myLastIsJre50 = versionString != null && isJre50(versionString);
@@ -22,7 +22,6 @@ import com.intellij.execution.filters.TextConsoleBuilder;
import com.intellij.execution.filters.TextConsoleBuilderFactory;
import com.intellij.execution.runners.ExecutionEnvironment;
import com.intellij.execution.runners.ExecutionEnvironmentBuilder;
import com.intellij.execution.runners.ExecutionUtil;
import com.intellij.execution.util.ExecutionErrorDialog;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.module.Module;
@@ -140,7 +139,7 @@ public class JavaExecutionUtil {
}
@Nullable
public static String getPresentableClassName(final String rtClassName) {
public static String getPresentableClassName(@Nullable String rtClassName) {
return getPresentableClassName(rtClassName, null);
}
@@ -149,13 +148,13 @@ public class JavaExecutionUtil {
*/
@Deprecated
@Nullable
public static String getPresentableClassName(final String rtClassName, final JavaRunConfigurationModule configurationModule) {
if (StringUtil.isEmpty(rtClassName)) return null;
final int lastDot = rtClassName.lastIndexOf('.');
if (lastDot == -1 || lastDot == rtClassName.length() - 1) {
return rtClassName;
public static String getPresentableClassName(@Nullable String rtClassName, JavaRunConfigurationModule configurationModule) {
if (StringUtil.isEmpty(rtClassName)) {
return null;
}
return rtClassName.substring(lastDot + 1, rtClassName.length());
int lastDot = rtClassName.lastIndexOf('.');
return lastDot == -1 || lastDot == rtClassName.length() - 1 ? rtClassName : rtClassName.substring(lastDot + 1, rtClassName.length());
}
public static Module findModule(@NotNull final PsiClass psiClass) {
@@ -196,9 +195,8 @@ public class JavaExecutionUtil {
return PsiLocation.fromPsiElement(classes[0]);
}
public static String getShortClassName(final String fqName) {
if (fqName == null) return "";
return StringUtil.getShortName(fqName);
public static String getShortClassName(@Nullable String fqName) {
return fqName == null ? "" : StringUtil.getShortName(fqName);
}
public static void showExecutionErrorMessage(final ExecutionException e, final String title, final Project project) {