code coverage for j2ee applications (IDEA-61853); fix emma coverage report; do not write coverage settings for new configurations, preserve existing ones

This commit is contained in:
anna
2010-12-21 17:02:01 +03:00
parent 6b3aab66e4
commit f192bbece9
5 changed files with 48 additions and 52 deletions
@@ -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<RunConfigurationExtension> EP_NAME = new ExtensionPointName<RunConfigurationExtension>("com.intellij.runConfigurationExtension");
public static final Key<List> 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 <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> SettingsEditor createEditor(T configuration);
public abstract SettingsEditor createEditor(RunConfigurationBase configuration);
public abstract String getEditorTitle();
public abstract String getName();
@Nullable
public abstract <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> Icon getIcon(T runConfiguration);
public abstract Icon getIcon(RunConfigurationBase runConfiguration);
public abstract <T extends RunConfigurationBase > void updateJavaParameters(final T configuration, final JavaParameters params, RunnerSettings runnerSettings);
public static <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void appendEditors(T configuration, SettingsEditorGroup<T> 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 <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> 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 <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> 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<String, RunConfigurationExtension> extensions = new HashMap<String, RunConfigurationExtension>();
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<String, Element> map = new TreeMap<String, Element>();
final List<Element> 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 <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void patchConfiguration(T runJavaConfiguration);
public abstract <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void checkConfiguration(T runJavaConfiguration) throws RuntimeConfigurationException;
public static <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void patchCreatedConfiguration(T configuration) {
public static void patchCreatedConfiguration(RunConfigurationBase configuration) {
for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) {
extension.patchConfiguration(configuration);
}
}
public static <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> 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 <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> boolean isListenerDisabled(T configuration, Object listener) {
public boolean isListenerDisabled(RunConfigurationBase configuration, Object listener) {
return false;
}
}
@@ -59,7 +59,7 @@ public class ApplicationConfigurable extends SettingsEditor<ApplicationConfigura
configuration.MAIN_CLASS_NAME = getMainClassField().getText();
configuration.ALTERNATIVE_JRE_PATH = myAlternativeJREPanel.getPath();
configuration.ALTERNATIVE_JRE_PATH_ENABLED = myAlternativeJREPanel.isPathEnabled();
configuration.ENABLE_SWING_INSPECTOR = myVersionDetector.isJre50Configured(configuration) && myShowSwingInspectorCheckbox.isSelected();
configuration.ENABLE_SWING_INSPECTOR = (myVersionDetector.isJre50Configured(configuration) || myVersionDetector.isModuleJre50Configured(configuration)) && myShowSwingInspectorCheckbox.isSelected();
updateShowSwingInspector(configuration);
}
@@ -74,7 +74,7 @@ public class ApplicationConfigurable extends SettingsEditor<ApplicationConfigura
}
private void updateShowSwingInspector(final ApplicationConfiguration configuration) {
if (myVersionDetector.isJre50Configured(configuration)) {
if (myVersionDetector.isJre50Configured(configuration) || myVersionDetector.isModuleJre50Configured(configuration)) {
myShowSwingInspectorCheckbox.setEnabled(true);
myShowSwingInspectorCheckbox.setSelected(configuration.ENABLE_SWING_INSPECTOR);
myShowSwingInspectorCheckbox.setText(ExecutionBundle.message("show.swing.inspector"));
@@ -34,24 +34,28 @@ public class JreVersionDetector {
private String myLastAlternativeJrePath = null; //awful hack
private boolean myLastIsJre50;
public <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> 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) {
@@ -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);
}
}
@@ -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 <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> 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 <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> SettingsEditor createEditor(T configuration) {
public SettingsEditor createEditor(RunConfigurationBase configuration) {
return null;
}
@@ -133,26 +132,26 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension
}
@Override
public <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> 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 <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void patchConfiguration(T runJavaConfiguration) {
public void patchConfiguration(RunConfigurationBase runJavaConfiguration) {
}
@Override
public <T extends ModuleBasedConfiguration & CommonJavaRunConfigurationParameters> void checkConfiguration(T runJavaConfiguration)
public void checkConfiguration(RunConfigurationBase runJavaConfiguration)
throws RuntimeConfigurationException {
}