mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
run configuration extensions: remove duplicates (II)
This commit is contained in:
+10
@@ -44,4 +44,14 @@ public class JavaRunConfigurationExtensionManager extends RunConfigurationExtens
|
||||
LOG.error(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getIdAttrName() {
|
||||
return "name";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getExtensionRootAttr() {
|
||||
return "extension";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,24 +30,13 @@ import com.intellij.execution.configurations.RunConfigurationBase;
|
||||
import com.intellij.execution.configurations.RunnerSettings;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.util.InvalidDataException;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.WriteExternalException;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
public abstract class RunConfigurationExtension extends RunConfigurationExtensionBase<RunConfigurationBase>{
|
||||
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 <T extends RunConfigurationBase > void updateJavaParameters(final T configuration, final JavaParameters params, RunnerSettings runnerSettings);
|
||||
|
||||
@@ -90,57 +79,6 @@ public abstract class RunConfigurationExtension extends RunConfigurationExtensio
|
||||
return listener;
|
||||
}
|
||||
|
||||
|
||||
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.getSerializationId(), extension);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
//try to read from old format if possible
|
||||
for (RunConfigurationExtension extension : extensions.values()) {
|
||||
extension.readExternal(runConfiguration, parentNode);
|
||||
}
|
||||
runConfiguration.putCopyableUserData(RUN_EXTENSIONS, children);
|
||||
}
|
||||
|
||||
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) {
|
||||
for (Element el : elements) {
|
||||
final String name = el.getAttributeValue("name");
|
||||
map.put(name, (Element)el.clone());
|
||||
}
|
||||
}
|
||||
|
||||
for (RunConfigurationExtension extension : Extensions.getExtensions(EP_NAME)) {
|
||||
Element el = new Element("extension");
|
||||
el.setAttribute("name", extension.getSerializationId());
|
||||
try {
|
||||
extension.writeExternal(runConfiguration, el);
|
||||
}
|
||||
catch (WriteExternalException e) {
|
||||
map.remove(extension.getSerializationId());
|
||||
continue;
|
||||
}
|
||||
map.put(extension.getSerializationId(), el);
|
||||
}
|
||||
|
||||
for (Element val : map.values()) {
|
||||
element.addContent(val);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public boolean isListenerDisabled(RunConfigurationBase configuration, Object listener) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+2
-2
@@ -228,7 +228,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
|
||||
public void readExternal(final Element element) throws InvalidDataException {
|
||||
PathMacroManager.getInstance(getProject()).expandPaths(element);
|
||||
super.readExternal(element);
|
||||
RunConfigurationExtension.readSettings(this, element);
|
||||
JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element);
|
||||
DefaultJDOMExternalizer.readExternal(this, element);
|
||||
readModule(element);
|
||||
EnvironmentVariablesComponent.readExternal(element, getEnvs());
|
||||
@@ -236,7 +236,7 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration<JavaRunCo
|
||||
|
||||
public void writeExternal(final Element element) throws WriteExternalException {
|
||||
super.writeExternal(element);
|
||||
RunConfigurationExtension.writeSettings(this, element);
|
||||
JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element);
|
||||
DefaultJDOMExternalizer.writeExternal(this, element);
|
||||
writeModule(element);
|
||||
EnvironmentVariablesComponent.writeExternal(element, getEnvs());
|
||||
|
||||
+14
-9
@@ -17,10 +17,7 @@ import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author traff
|
||||
@@ -37,7 +34,7 @@ public class RunConfigurationExtensionsManager<U extends RunConfigurationBase, T
|
||||
|
||||
public void readExternal(@NotNull final U configuration,
|
||||
@NotNull final Element parentNode) throws InvalidDataException {
|
||||
final List<Element> children = parentNode.getChildren(EXTENSION_ROOT_ATTR);
|
||||
final List<Element> children = parentNode.getChildren(getExtensionRootAttr());
|
||||
final Map<String, T> extensions = Maps.newHashMap();
|
||||
for (T extension : getApplicableExtensions(configuration)) {
|
||||
extensions.put(extension.getSerializationId(), extension);
|
||||
@@ -48,7 +45,7 @@ public class RunConfigurationExtensionsManager<U extends RunConfigurationBase, T
|
||||
boolean found = true;
|
||||
for (Object o : children) {
|
||||
final Element element = (Element)o;
|
||||
final String extensionName = element.getAttributeValue(EXT_ID_ATTR);
|
||||
final String extensionName = element.getAttributeValue(getIdAttrName());
|
||||
final T extension = extensions.remove(extensionName);
|
||||
if (extension != null) {
|
||||
extension.readExternal(configuration, element);
|
||||
@@ -62,20 +59,28 @@ public class RunConfigurationExtensionsManager<U extends RunConfigurationBase, T
|
||||
}
|
||||
}
|
||||
|
||||
protected String getIdAttrName() {
|
||||
return EXT_ID_ATTR;
|
||||
}
|
||||
|
||||
protected String getExtensionRootAttr() {
|
||||
return EXTENSION_ROOT_ATTR;
|
||||
}
|
||||
|
||||
public void writeExternal(@NotNull final U configuration,
|
||||
@NotNull final Element parentNode) throws WriteExternalException {
|
||||
final TreeMap<String, Element> map = Maps.newTreeMap();
|
||||
final List<Element> elements = configuration.getCopyableUserData(RUN_EXTENSIONS);
|
||||
if (elements != null) {
|
||||
for (Element el : elements) {
|
||||
final String name = el.getAttributeValue(EXT_ID_ATTR);
|
||||
final String name = el.getAttributeValue(getIdAttrName());
|
||||
map.put(name, (Element)el.clone());
|
||||
}
|
||||
}
|
||||
|
||||
for (T extension : getApplicableExtensions(configuration)) {
|
||||
Element el = new Element(EXTENSION_ROOT_ATTR);
|
||||
el.setAttribute(EXT_ID_ATTR, extension.getSerializationId());
|
||||
Element el = new Element(getExtensionRootAttr());
|
||||
el.setAttribute(getIdAttrName(), extension.getSerializationId());
|
||||
extension.writeExternal(configuration, el);
|
||||
map.put(extension.getSerializationId(), el);
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ public abstract class MvcRunConfiguration extends ModuleBasedConfiguration<RunCo
|
||||
envs.clear();
|
||||
JDOMExternalizer.readMap(element, envs, null, "env");
|
||||
|
||||
RunConfigurationExtension.readSettings(this, element);
|
||||
JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element);
|
||||
|
||||
depsClasspath = !"false".equals(JDOMExternalizer.readString(element, "depsClasspath"));
|
||||
}
|
||||
@@ -173,7 +173,7 @@ public abstract class MvcRunConfiguration extends ModuleBasedConfiguration<RunCo
|
||||
JDOMExternalizer.writeMap(element, envs, null, "env");
|
||||
JDOMExternalizer.write(element, "passParentEnv", passParentEnv);
|
||||
|
||||
RunConfigurationExtension.writeSettings(this, element);
|
||||
JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element);
|
||||
|
||||
PathMacroManager.getInstance(getProject()).collapsePathsRecursively(element);
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
|
||||
public void readExternal(final Element element) throws InvalidDataException {
|
||||
PathMacroManager.getInstance(getProject()).expandPaths(element);
|
||||
super.readExternal(element);
|
||||
RunConfigurationExtension.readSettings(this, element);
|
||||
JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element);
|
||||
readModule(element);
|
||||
DefaultJDOMExternalizer.readExternal(this, element);
|
||||
DefaultJDOMExternalizer.readExternal(getPersistentData(), element);
|
||||
@@ -309,7 +309,7 @@ public class JUnitConfiguration extends ModuleBasedConfiguration<JavaRunConfigur
|
||||
|
||||
public void writeExternal(final Element element) throws WriteExternalException {
|
||||
super.writeExternal(element);
|
||||
RunConfigurationExtension.writeSettings(this, element);
|
||||
JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element);
|
||||
writeModule(element);
|
||||
DefaultJDOMExternalizer.writeExternal(this, element);
|
||||
final Data persistentData = getPersistentData();
|
||||
|
||||
+2
-2
@@ -314,7 +314,7 @@ public class TestNGConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
|
||||
public void readExternal(Element element) throws InvalidDataException {
|
||||
PathMacroManager.getInstance(getProject()).expandPaths(element);
|
||||
super.readExternal(element);
|
||||
RunConfigurationExtension.readSettings(this, element);
|
||||
JavaRunConfigurationExtensionManager.getInstance().readExternal(this, element);
|
||||
readModule(element);
|
||||
DefaultJDOMExternalizer.readExternal(this, element);
|
||||
DefaultJDOMExternalizer.readExternal(getPersistantData(), element);
|
||||
@@ -344,7 +344,7 @@ public class TestNGConfiguration extends ModuleBasedConfiguration<JavaRunConfigu
|
||||
@Override
|
||||
public void writeExternal(Element element) throws WriteExternalException {
|
||||
super.writeExternal(element);
|
||||
RunConfigurationExtension.writeSettings(this, element);
|
||||
JavaRunConfigurationExtensionManager.getInstance().writeExternal(this, element);
|
||||
writeModule(element);
|
||||
DefaultJDOMExternalizer.writeExternal(this, element);
|
||||
DefaultJDOMExternalizer.writeExternal(getPersistantData(), element);
|
||||
|
||||
+7
-6
@@ -106,7 +106,7 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension
|
||||
return configuration instanceof ApplicationConfiguration;
|
||||
}
|
||||
|
||||
public void attachToProcess(final RunConfigurationBase configuration, final ProcessHandler handler, RunnerSettings runnerSettings) {
|
||||
public void attachToProcess(@NotNull final RunConfigurationBase configuration, @NotNull final ProcessHandler handler, RunnerSettings runnerSettings) {
|
||||
SnapShooterConfigurationSettings settings = configuration.getUserData(SnapShooterConfigurationSettings.SNAP_SHOOTER_KEY);
|
||||
if (settings != null) {
|
||||
final Runnable runnable = settings.getNotifyRunnable();
|
||||
@@ -122,7 +122,7 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension
|
||||
}
|
||||
|
||||
@Override
|
||||
public SettingsEditor createEditor(RunConfigurationBase configuration) {
|
||||
public SettingsEditor createEditor(@NotNull RunConfigurationBase configuration) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -131,26 +131,27 @@ public class SnapShooterConfigurationExtension extends RunConfigurationExtension
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getSerializationId() {
|
||||
return "snapshooter";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readExternal(RunConfigurationBase runConfiguration, Element element) throws InvalidDataException {
|
||||
public void readExternal(@NotNull RunConfigurationBase runConfiguration, @NotNull Element element) throws InvalidDataException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeExternal(RunConfigurationBase runConfiguration, Element element) throws WriteExternalException {
|
||||
public void writeExternal(@NotNull RunConfigurationBase runConfiguration, @NotNull Element element) throws WriteExternalException {
|
||||
throw new WriteExternalException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void extendCreatedConfiguration(RunConfigurationBase runJavaConfiguration, Location location) {
|
||||
public void extendCreatedConfiguration(@NotNull RunConfigurationBase runJavaConfiguration, @NotNull Location location) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void validateConfiguration(RunConfigurationBase runJavaConfiguration, boolean isExecution)
|
||||
public void validateConfiguration(@NotNull RunConfigurationBase runJavaConfiguration, boolean isExecution)
|
||||
throws RuntimeConfigurationException {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user