diff --git a/java/execution/impl/src/com/intellij/execution/RunConfigurationExtension.java b/java/execution/impl/src/com/intellij/execution/RunConfigurationExtension.java index ffe5a796a938..d6df75cd5c04 100644 --- a/java/execution/impl/src/com/intellij/execution/RunConfigurationExtension.java +++ b/java/execution/impl/src/com/intellij/execution/RunConfigurationExtension.java @@ -22,10 +22,7 @@ */ package com.intellij.execution; -import com.intellij.execution.configurations.JavaParameters; -import com.intellij.execution.configurations.ModuleBasedConfiguration; -import com.intellij.execution.configurations.RunnerSettings; -import com.intellij.execution.configurations.RuntimeConfigurationException; +import com.intellij.execution.configurations.*; import com.intellij.execution.process.OSProcessHandler; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; @@ -47,15 +44,21 @@ import java.util.TreeMap; public abstract class RunConfigurationExtension { public static final ExtensionPointName EP_NAME = new ExtensionPointName("com.intellij.runConfigurationExtension"); public static final Key RUN_EXTENSIONS = Key.create("run.extension.elemnts"); - public abstract void handleStartProcess(final ModuleBasedConfiguration configuration, final OSProcessHandler handler); + public abstract void handleStartProcess(final RunConfigurationBase configuration, final OSProcessHandler handler); @Nullable - public abstract SettingsEditor createEditor(T configuration); + public abstract SettingsEditor createEditor(RunConfigurationBase configuration); public abstract String getEditorTitle(); public abstract String getName(); @Nullable - public abstract Icon getIcon(T runConfiguration); + public abstract Icon getIcon(RunConfigurationBase runConfiguration); + public abstract void updateJavaParameters(final T configuration, final JavaParameters params, RunnerSettings runnerSettings); - public static void appendEditors(T configuration, SettingsEditorGroup group) { + protected abstract void readExternal(RunConfigurationBase runConfiguration, Element element) throws InvalidDataException; + protected abstract void writeExternal(RunConfigurationBase runConfiguration, Element element) throws WriteExternalException; + public abstract void patchConfiguration(RunConfigurationBase runJavaConfiguration); + public abstract void checkConfiguration(RunConfigurationBase runJavaConfiguration) throws RuntimeConfigurationException; + + public static void appendEditors(RunConfigurationBase configuration, SettingsEditorGroup group) { for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) { final SettingsEditor editor = extension.createEditor(configuration); if (editor != null) { @@ -64,7 +67,7 @@ public abstract class RunConfigurationExtension { } } - public static Icon getIcon(T configuration, Icon icon) { + public static Icon getIcon(RunConfigurationBase configuration, Icon icon) { for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) { final Icon extIcon = extension.getIcon(configuration); if (extIcon != null) { @@ -74,37 +77,28 @@ public abstract class RunConfigurationExtension { return icon; } - public abstract void updateJavaParameters(final T configuration, final JavaParameters params, RunnerSettings runnerSettings); - - protected abstract void readExternal(ModuleBasedConfiguration runConfiguration, Element element) throws InvalidDataException; - - public static void readSettings(ModuleBasedConfiguration runConfiguration, Element parentNode) throws InvalidDataException { + public static void readSettings(RunConfigurationBase runConfiguration, Element parentNode) throws InvalidDataException { final List children = parentNode.getChildren("extension"); final Map extensions = new HashMap(); for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) { extensions.put(extension.getName(), extension); } - boolean found = true; for (Object o : children) { final Element element = (Element)o; final String extensionName = element.getAttributeValue("name"); final RunConfigurationExtension extension = extensions.remove(extensionName); if (extension != null) { extension.readExternal(runConfiguration, element); - } else { - found = false; } } //try to read from old format if possible for (RunConfigurationExtension extension : extensions.values()) { extension.readExternal(runConfiguration, parentNode); } - if (!found) { - runConfiguration.putCopyableUserData(RUN_EXTENSIONS, children); - } + runConfiguration.putCopyableUserData(RUN_EXTENSIONS, children); } - public static void writeSettings(ModuleBasedConfiguration runConfiguration, Element element) throws WriteExternalException { + public static void writeSettings(RunConfigurationBase runConfiguration, Element element) throws WriteExternalException { final TreeMap map = new TreeMap(); final List elements = runConfiguration.getCopyableUserData(RUN_EXTENSIONS); if (elements != null) { @@ -121,6 +115,7 @@ public abstract class RunConfigurationExtension { extension.writeExternal(runConfiguration, el); } catch (WriteExternalException e) { + map.remove(extension.getName()); continue; } map.put(extension.getName(), el); @@ -131,24 +126,20 @@ public abstract class RunConfigurationExtension { } } - protected abstract void writeExternal(ModuleBasedConfiguration runConfiguration, Element element) throws WriteExternalException; - public abstract void patchConfiguration(T runJavaConfiguration); - public abstract void checkConfiguration(T runJavaConfiguration) throws RuntimeConfigurationException; - - public static void patchCreatedConfiguration(T configuration) { + public static void patchCreatedConfiguration(RunConfigurationBase configuration) { for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) { extension.patchConfiguration(configuration); } } - public static void checkConfigurationIsValid(T configuration) throws RuntimeConfigurationException { + public static void checkConfigurationIsValid(RunConfigurationBase configuration) throws RuntimeConfigurationException { for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) { extension.checkConfiguration(configuration); } } - public boolean isListenerDisabled(T configuration, Object listener) { + public boolean isListenerDisabled(RunConfigurationBase configuration, Object listener) { return false; } } \ No newline at end of file diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java index 3ee6b9d5ead7..4ef31525b189 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurable.java @@ -59,7 +59,7 @@ public class ApplicationConfigurable extends SettingsEditor boolean isJre50Configured(final T configuration) { + + 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); + } + + final Sdk projectJdk = ProjectRootManager.getInstance(configuration.getProject()).getProjectSdk(); + return isJre50(projectJdk); + } + + public boolean isJre50Configured(final CommonJavaRunConfigurationParameters configuration) { if (configuration.isAlternativeJrePathEnabled()) { if (configuration.getAlternativeJrePath().equals(myLastAlternativeJrePath)) return myLastIsJre50; myLastAlternativeJrePath = configuration.getAlternativeJrePath(); final String versionString = JavaSdkImpl.getJdkVersion(myLastAlternativeJrePath); myLastIsJre50 = versionString != null && isJre50(versionString); return myLastIsJre50; - } else { - 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); - } - - final Sdk projectJdk = ProjectRootManager.getInstance(configuration.getProject()).getProjectSdk(); - return isJre50(projectJdk); } + return false; } private static boolean isJre50(final Sdk jdk) { diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/CreateSnapShotAction.java b/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/CreateSnapShotAction.java index 2e65436c94ab..8195e3e2ca88 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/CreateSnapShotAction.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/CreateSnapShotAction.java @@ -268,7 +268,9 @@ public class CreateSnapShotAction extends AnAction { } for(int i=configurations.size()-1; i >= 0; i--) { - if (!new JreVersionDetector().isJre50Configured((ApplicationConfiguration) configurations.get(i).getConfiguration())) { + final JreVersionDetector detector = new JreVersionDetector(); + final ApplicationConfiguration configuration = (ApplicationConfiguration)configurations.get(i).getConfiguration(); + if (!detector.isJre50Configured(configuration) && !detector.isModuleJre50Configured(configuration)) { configurations.remove(i); } } diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/SnapShooterConfigurationExtension.java b/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/SnapShooterConfigurationExtension.java index b5335330bdc7..dd72353119bd 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/SnapShooterConfigurationExtension.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/snapShooter/SnapShooterConfigurationExtension.java @@ -16,11 +16,10 @@ package com.intellij.uiDesigner.snapShooter; -import com.intellij.execution.CommonJavaRunConfigurationParameters; import com.intellij.execution.RunConfigurationExtension; import com.intellij.execution.application.ApplicationConfiguration; import com.intellij.execution.configurations.JavaParameters; -import com.intellij.execution.configurations.ModuleBasedConfiguration; +import com.intellij.execution.configurations.RunConfigurationBase; import com.intellij.execution.configurations.RunnerSettings; import com.intellij.execution.configurations.RuntimeConfigurationException; import com.intellij.execution.process.OSProcessHandler; @@ -56,7 +55,7 @@ import java.util.TreeSet; */ public class SnapShooterConfigurationExtension extends RunConfigurationExtension { @Override - public void updateJavaParameters(T configuration, JavaParameters params, RunnerSettings runnerSettings) { + public void updateJavaParameters(RunConfigurationBase configuration, JavaParameters params, RunnerSettings runnerSettings) { if (!(configuration instanceof ApplicationConfiguration)) { return; } @@ -102,7 +101,7 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension } } - public void handleStartProcess(final ModuleBasedConfiguration configuration, final OSProcessHandler handler) { + public void handleStartProcess(final RunConfigurationBase configuration, final OSProcessHandler handler) { SnapShooterConfigurationSettings settings = configuration.getUserData(SnapShooterConfigurationSettings.SNAP_SHOOTER_KEY); if (settings != null) { final Runnable runnable = settings.getNotifyRunnable(); @@ -118,7 +117,7 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension } @Override - public SettingsEditor createEditor(T configuration) { + public SettingsEditor createEditor(RunConfigurationBase configuration) { return null; } @@ -133,26 +132,26 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension } @Override - public Icon getIcon(T runConfiguration) { + public Icon getIcon(RunConfigurationBase runConfiguration) { return null; } @Override - public void readExternal(ModuleBasedConfiguration runConfiguration, Element element) throws InvalidDataException { + public void readExternal(RunConfigurationBase runConfiguration, Element element) throws InvalidDataException { } @Override - public void writeExternal(ModuleBasedConfiguration runConfiguration, Element element) throws WriteExternalException { + public void writeExternal(RunConfigurationBase runConfiguration, Element element) throws WriteExternalException { throw new WriteExternalException(); } @Override - public void patchConfiguration(T runJavaConfiguration) { + public void patchConfiguration(RunConfigurationBase runJavaConfiguration) { } @Override - public void checkConfiguration(T runJavaConfiguration) + public void checkConfiguration(RunConfigurationBase runJavaConfiguration) throws RuntimeConfigurationException { }