diff --git a/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationType.java b/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationType.java index 7b5aa16afe13..5bec5a5dbace 100644 --- a/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationType.java +++ b/java/execution/impl/src/com/intellij/execution/applet/AppletConfigurationType.java @@ -2,63 +2,31 @@ package com.intellij.execution.applet; import com.intellij.execution.ExecutionBundle; -import com.intellij.execution.configuration.ConfigurationFactoryEx; -import com.intellij.execution.configurations.*; +import com.intellij.execution.configurations.ConfigurationFactory; +import com.intellij.execution.configurations.ConfigurationTypeBase; +import com.intellij.execution.configurations.ConfigurationTypeUtil; +import com.intellij.execution.configurations.RunConfiguration; import com.intellij.icons.AllIcons; import com.intellij.openapi.components.BaseState; import com.intellij.openapi.project.Project; +import com.intellij.util.LazyUtil; import org.jetbrains.annotations.NotNull; -import javax.swing.*; - -public class AppletConfigurationType implements ConfigurationType { - private final ConfigurationFactory myFactory; - +public final class AppletConfigurationType extends ConfigurationTypeBase { AppletConfigurationType() { - myFactory = new ConfigurationFactoryEx(this) { + super("Applet", ExecutionBundle.message("applet.configuration.name"), ExecutionBundle.message("applet.configuration.description"), LazyUtil.create(() -> AllIcons.RunConfigurations.Applet)); + addFactory(new ConfigurationFactory(this) { @NotNull @Override public RunConfiguration createTemplateConfiguration(@NotNull Project project) { return new AppletConfiguration(project, this); } - @Override - public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) { - ((ModuleBasedConfiguration)configuration).onNewConfigurationCreated(); - } - @Override public Class getOptionsClass() { return AppletConfigurationOptions.class; } - }; - } - - @NotNull - @Override - public String getDisplayName() { - return ExecutionBundle.message("applet.configuration.name"); - } - - @Override - public String getConfigurationTypeDescription() { - return ExecutionBundle.message("applet.configuration.description"); - } - - @Override - public Icon getIcon() { - return AllIcons.RunConfigurations.Applet; - } - - @Override - public ConfigurationFactory[] getConfigurationFactories() { - return new ConfigurationFactory[]{myFactory}; - } - - @Override - @NotNull - public String getId() { - return "Applet"; + }); } public static AppletConfigurationType getInstance() { diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationType.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationType.java index 5a3ff5b06a05..5d3c0f564810 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationType.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfigurationType.java @@ -7,6 +7,7 @@ import com.intellij.execution.configurations.ConfigurationType; import com.intellij.execution.configurations.ConfigurationTypeUtil; import com.intellij.execution.configurations.RunConfiguration; import com.intellij.icons.AllIcons; +import com.intellij.openapi.components.BaseState; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; @@ -25,7 +26,12 @@ public class ApplicationConfigurationType implements ConfigurationType { private final ConfigurationFactory myFactory; public ApplicationConfigurationType() { - myFactory = new JvmMainMethodConfigurationFactoryBase(this) { + myFactory = new ConfigurationFactory(this) { + @Override + public Class getOptionsClass() { + return ApplicationConfigurationOptions.class; + } + @NotNull @Override public RunConfiguration createTemplateConfiguration(@NotNull Project project) { diff --git a/java/execution/impl/src/com/intellij/execution/application/JvmMainMethodConfigurationFactoryBase.java b/java/execution/impl/src/com/intellij/execution/application/JvmMainMethodConfigurationFactoryBase.java deleted file mode 100644 index 9fd243515a49..000000000000 --- a/java/execution/impl/src/com/intellij/execution/application/JvmMainMethodConfigurationFactoryBase.java +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.execution.application; - -import com.intellij.execution.configuration.ConfigurationFactoryListener; -import com.intellij.execution.configurations.ConfigurationFactory; -import com.intellij.execution.configurations.ConfigurationType; -import com.intellij.execution.configurations.ModuleBasedConfiguration; -import com.intellij.openapi.components.BaseState; -import org.jetbrains.annotations.NotNull; - -public abstract class JvmMainMethodConfigurationFactoryBase extends ConfigurationFactory implements ConfigurationFactoryListener { - protected JvmMainMethodConfigurationFactoryBase(@NotNull ConfigurationType type) { - super(type); - } - - @Override - public void onNewConfigurationCreated(@NotNull ModuleBasedConfiguration configuration) { - configuration.onNewConfigurationCreated(); - } - - @Override - public Class getOptionsClass() { - return ApplicationConfigurationOptions.class; - } -} diff --git a/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfiguration.java b/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfiguration.java index 0162dc222430..c25519f0e916 100644 --- a/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfiguration.java @@ -1,6 +1,4 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. - */ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.execution.jar; import com.intellij.diagnostic.logging.LogConfigurationPanel; @@ -16,6 +14,8 @@ import com.intellij.openapi.options.SettingsEditorGroup; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; +import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters; import com.intellij.util.xmlb.XmlSerializer; @@ -224,6 +224,16 @@ public class JarApplicationConfiguration extends LocatableConfigurationBase impl return myBean.PASS_PARENT_ENVS; } + @Override + public void onNewConfigurationCreated() { + super.onNewConfigurationCreated(); + + if (StringUtil.isEmpty(getWorkingDirectory())) { + String baseDir = FileUtil.toSystemIndependentName(StringUtil.notNullize(getProject().getBasePath())); + setWorkingDirectory(baseDir); + } + } + private static class JarApplicationConfigurationBean { public String JAR_PATH = ""; public String VM_PARAMETERS = ""; diff --git a/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfigurationType.java b/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfigurationType.java index 801bf9aca453..7708fb6e99e3 100644 --- a/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfigurationType.java +++ b/java/execution/impl/src/com/intellij/execution/jar/JarApplicationConfigurationType.java @@ -2,15 +2,9 @@ package com.intellij.execution.jar; import com.intellij.execution.ExecutionBundle; -import com.intellij.execution.configuration.ConfigurationFactoryEx; -import com.intellij.execution.configurations.ConfigurationType; -import com.intellij.execution.configurations.ConfigurationTypeBase; -import com.intellij.execution.configurations.ConfigurationTypeUtil; -import com.intellij.execution.configurations.RunConfiguration; +import com.intellij.execution.configurations.*; import com.intellij.icons.AllIcons; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.LazyUtil; import org.jetbrains.annotations.NotNull; @@ -23,16 +17,7 @@ public class JarApplicationConfigurationType extends ConfigurationTypeBase imple public JarApplicationConfigurationType() { super("JarApplication", ExecutionBundle.message("jar.application.configuration.name"), ExecutionBundle.message("jar.application.configuration.description"), LazyUtil.create(() -> AllIcons.FileTypes.Archive)); - addFactory(new ConfigurationFactoryEx(this) { - @Override - public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) { - JarApplicationConfiguration jarApplicationConfiguration = (JarApplicationConfiguration)configuration; - if (StringUtil.isEmpty(jarApplicationConfiguration.getWorkingDirectory())) { - String baseDir = FileUtil.toSystemIndependentName(StringUtil.notNullize(configuration.getProject().getBasePath())); - jarApplicationConfiguration.setWorkingDirectory(baseDir); - } - } - + addFactory(new ConfigurationFactory(this) { @Override @NotNull public RunConfiguration createTemplateConfiguration(@NotNull Project project) { diff --git a/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationType.java b/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationType.java index a9bcff0047df..5557711d6194 100644 --- a/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationType.java +++ b/java/execution/impl/src/com/intellij/execution/scratch/JavaScratchConfigurationType.java @@ -1,10 +1,9 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.execution.scratch; -import com.intellij.execution.configuration.ConfigurationFactoryEx; +import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.execution.configurations.ConfigurationTypeBase; import com.intellij.execution.configurations.ConfigurationTypeUtil; -import com.intellij.execution.configurations.ModuleBasedConfiguration; import com.intellij.execution.configurations.RunConfiguration; import com.intellij.icons.AllIcons; import com.intellij.openapi.components.BaseState; @@ -19,7 +18,7 @@ import org.jetbrains.annotations.NotNull; public final class JavaScratchConfigurationType extends ConfigurationTypeBase { public JavaScratchConfigurationType() { super("Java Scratch", "Java Scratch", "Configuration for java scratch files", LazyUtil.create(() -> LayeredIcon.create(AllIcons.RunConfigurations.Application, AllIcons.Actions.Scratch))); - addFactory(new ConfigurationFactoryEx(this) { + addFactory(new ConfigurationFactory(this) { @Override public boolean isApplicable(@NotNull Project project) { return false; @@ -31,11 +30,6 @@ public final class JavaScratchConfigurationType extends ConfigurationTypeBase { return new JavaScratchConfiguration("", project, this); } - @Override - public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) { - ((ModuleBasedConfiguration)configuration).onNewConfigurationCreated(); - } - @Override public Class getOptionsClass() { return JavaScratchConfigurationOptions.class; diff --git a/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java b/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java index 415fed52fca4..f13ed5c53dda 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java +++ b/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java @@ -181,6 +181,7 @@ public abstract class ModuleBasedConfiguration 0) { diff --git a/platform/lang-impl/src/com/intellij/execution/configuration/ConfigurationFactoryEx.java b/platform/lang-impl/src/com/intellij/execution/configuration/ConfigurationFactoryEx.java index 305a819b7ec0..68ba535da54d 100644 --- a/platform/lang-impl/src/com/intellij/execution/configuration/ConfigurationFactoryEx.java +++ b/platform/lang-impl/src/com/intellij/execution/configuration/ConfigurationFactoryEx.java @@ -4,14 +4,21 @@ package com.intellij.execution.configuration; import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.execution.configurations.ConfigurationType; import com.intellij.execution.configurations.RunConfiguration; +import com.intellij.execution.configurations.RunConfigurationBase; import org.jetbrains.annotations.NotNull; /** - * @deprecated Use {@link ConfigurationFactoryListener} + * @deprecated Use {@link RunConfigurationBase#onNewConfigurationCreated()} */ @Deprecated -public abstract class ConfigurationFactoryEx extends ConfigurationFactory implements ConfigurationFactoryListener { +public abstract class ConfigurationFactoryEx extends ConfigurationFactory { protected ConfigurationFactoryEx(@NotNull ConfigurationType type) { super(type); } + + public void onNewConfigurationCreated(@NotNull T configuration) { + } + + public void onConfigurationCopied(@NotNull T configuration) { + } } diff --git a/platform/lang-impl/src/com/intellij/execution/configuration/ConfigurationFactoryListener.java b/platform/lang-impl/src/com/intellij/execution/configuration/ConfigurationFactoryListener.java deleted file mode 100644 index 121749e49776..000000000000 --- a/platform/lang-impl/src/com/intellij/execution/configuration/ConfigurationFactoryListener.java +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. -package com.intellij.execution.configuration; - -import com.intellij.execution.configurations.RunConfiguration; -import org.jetbrains.annotations.NotNull; - -public interface ConfigurationFactoryListener { - default void onNewConfigurationCreated(@NotNull T configuration) { - } - - default void onConfigurationCopied(@NotNull T configuration) { - } -} diff --git a/platform/lang-impl/src/com/intellij/execution/dashboard/actions/CopyConfigurationAction.java b/platform/lang-impl/src/com/intellij/execution/dashboard/actions/CopyConfigurationAction.java index 627262e95137..a701c315d574 100644 --- a/platform/lang-impl/src/com/intellij/execution/dashboard/actions/CopyConfigurationAction.java +++ b/platform/lang-impl/src/com/intellij/execution/dashboard/actions/CopyConfigurationAction.java @@ -4,8 +4,10 @@ package com.intellij.execution.dashboard.actions; import com.intellij.execution.ExecutionBundle; import com.intellij.execution.RunManager; import com.intellij.execution.RunnerAndConfigurationSettings; -import com.intellij.execution.configuration.ConfigurationFactoryListener; +import com.intellij.execution.configuration.ConfigurationFactoryEx; import com.intellij.execution.configurations.ConfigurationFactory; +import com.intellij.execution.configurations.RunConfiguration; +import com.intellij.execution.configurations.RunConfigurationBase; import com.intellij.execution.dashboard.RunDashboardManager; import com.intellij.execution.dashboard.RunDashboardRunConfigurationNode; import com.intellij.execution.impl.RunDialog; @@ -52,8 +54,14 @@ public class CopyConfigurationAction extends RunConfigurationTreeAction { copiedSettings.setFolderName(settings.getFolderName()); final ConfigurationFactory factory = settings.getFactory(); - if (factory instanceof ConfigurationFactoryListener) { - ((ConfigurationFactoryListener)factory).onConfigurationCopied(settings.getConfiguration()); + RunConfiguration configuration = settings.getConfiguration(); + //noinspection deprecation + if (factory instanceof ConfigurationFactoryEx) { + //noinspection deprecation + ((ConfigurationFactoryEx)factory).onConfigurationCopied(configuration); + } + if (configuration instanceof RunConfigurationBase) { + ((RunConfigurationBase)configuration).onConfigurationCopied(); } if (RunDialog.editConfiguration(node.getProject(), copiedSettings, diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.kt b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.kt index 94a7726ab75f..6c52dbe117ab 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.kt +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunConfigurable.kt @@ -2,7 +2,7 @@ package com.intellij.execution.impl import com.intellij.execution.* -import com.intellij.execution.configuration.ConfigurationFactoryListener +import com.intellij.execution.configuration.ConfigurationFactoryEx import com.intellij.execution.configurations.* import com.intellij.execution.impl.RunConfigurable.Companion.collectNodesRecursively import com.intellij.execution.impl.RunConfigurableNodeKind.* @@ -971,8 +971,7 @@ open class RunConfigurable @JvmOverloads constructor(private val project: Projec val name = createUniqueName(typeNode, suggestedName, CONFIGURATION, TEMPORARY_CONFIGURATION) configuration.name = name (configuration as? LocatableConfigurationBase)?.setNameChangedByUser(false) - @Suppress("UNCHECKED_CAST") - (factory as? ConfigurationFactoryListener)?.onNewConfigurationCreated(configuration) + callNewConfigurationCreated(factory, configuration) return createNewConfiguration(settings, node, selectedNode) } @@ -1181,7 +1180,8 @@ open class RunConfigurable @JvmOverloads constructor(private val project: Projec settings.name = copyName val factory = settings.factory @Suppress("UNCHECKED_CAST") - (factory as? ConfigurationFactoryListener)?.onConfigurationCopied(settings.configuration) + (factory as? ConfigurationFactoryEx)?.onConfigurationCopied(settings.configuration) + (settings.configuration as? RunConfigurationBase)?.onConfigurationCopied() val parentNode = selectedNode?.parent val node = (if ((parentNode as? DefaultMutableTreeNode)?.userObject is String) parentNode else typeNode) as DefaultMutableTreeNode val configurable = createNewConfiguration(settings, node, selectedNode) diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt index 756b8dfa65bb..06f82c9beb5c 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt @@ -4,6 +4,7 @@ package com.intellij.execution.impl import com.intellij.ProjectTopics import com.intellij.configurationStore.* import com.intellij.execution.* +import com.intellij.execution.configuration.ConfigurationFactoryEx import com.intellij.execution.configurations.* import com.intellij.execution.runners.ExecutionEnvironment import com.intellij.execution.runners.ExecutionUtil @@ -1044,4 +1045,10 @@ internal fun doGetBeforeRunTasks(configuration: RunConfiguration): List)?.onNewConfigurationCreated(configuration) + (configuration as? RunConfigurationBase)?.onNewConfigurationCreated() } \ No newline at end of file diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeployToServerConfigurationType.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeployToServerConfigurationType.java index e634ae27ae9f..9a25cc1077bc 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeployToServerConfigurationType.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeployToServerConfigurationType.java @@ -2,23 +2,19 @@ package com.intellij.remoteServer.impl.configuration.deployment; import com.intellij.execution.configuration.ConfigurationFactoryEx; -import com.intellij.execution.configuration.ConfigurationFactoryListener; import com.intellij.execution.configurations.ConfigurationFactory; import com.intellij.execution.configurations.ConfigurationTypeBase; -import com.intellij.execution.configurations.RunConfiguration; import com.intellij.openapi.project.Project; import com.intellij.remoteServer.ServerType; -import com.intellij.remoteServer.configuration.RemoteServer; import com.intellij.remoteServer.configuration.RemoteServersManager; -import com.intellij.remoteServer.configuration.ServerConfiguration; -import com.intellij.remoteServer.configuration.deployment.*; -import com.intellij.util.containers.ContainerUtil; +import com.intellij.remoteServer.configuration.deployment.DeploymentConfigurator; +import com.intellij.remoteServer.configuration.deployment.DeploymentSourceType; +import com.intellij.remoteServer.configuration.deployment.SingletonDeploymentSourceType; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -80,7 +76,8 @@ public final class DeployToServerConfigurationType extends ConfigurationTypeBase return myServerType; } - public class DeployToServerConfigurationFactory extends ConfigurationFactoryEx> implements ConfigurationFactoryListener> { + // todo do not extends ConfigurationFactoryEx once Google Cloud Tools plugin will get rid of getFactory() usage + public class DeployToServerConfigurationFactory extends ConfigurationFactoryEx> { public DeployToServerConfigurationFactory() { super(DeployToServerConfigurationType.this); } @@ -90,35 +87,6 @@ public final class DeployToServerConfigurationType extends ConfigurationTypeBase return myServerType.canAutoDetectConfiguration() || !RemoteServersManager.getInstance().getServers(myServerType).isEmpty(); } - @Override - public void onNewConfigurationCreated(@NotNull DeployToServerRunConfiguration configuration) { - if (configuration.getServerName() == null) { - RemoteServer server = ContainerUtil.getFirstItem(RemoteServersManager.getInstance().getServers(myServerType)); - if (server != null) { - configuration.setServerName(server.getName()); - } - } - - if (configuration.getDeploymentSource() == null) { - setupDeploymentSource(configuration, configuration); - } - } - - private void setupDeploymentSource( - @NotNull RunConfiguration configuration, @NotNull DeployToServerRunConfiguration deployConfiguration) { - - DeploymentConfigurator deploymentConfigurator = deployConfiguration.getDeploymentConfigurator(); - List sources = deploymentConfigurator.getAvailableDeploymentSources(); - DeploymentSource source = ContainerUtil.getFirstItem(sources); - if (source != null) { - deployConfiguration.setDeploymentSource(source); - deployConfiguration.setDeploymentConfiguration(deploymentConfigurator.createDefaultConfiguration(source)); - DeploymentSourceType type = source.getType(); - //noinspection unchecked - type.setBuildBeforeRunTask(configuration, source); - } - } - @Override @NotNull public DeployToServerRunConfiguration createTemplateConfiguration(@NotNull Project project) { @@ -128,7 +96,7 @@ public final class DeployToServerConfigurationType extends ConfigurationTypeBase } } - public class MultiSourcesConfigurationFactory extends DeployToServerConfigurationFactory { + public final class MultiSourcesConfigurationFactory extends DeployToServerConfigurationFactory { @NotNull @Override public String getId() { @@ -137,7 +105,7 @@ public final class DeployToServerConfigurationType extends ConfigurationTypeBase } } - public class SingletonTypeConfigurationFactory extends DeployToServerConfigurationFactory { + public final class SingletonTypeConfigurationFactory extends DeployToServerConfigurationFactory { private final SingletonDeploymentSourceType mySourceType; public SingletonTypeConfigurationFactory(@NotNull SingletonDeploymentSourceType sourceType) { diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeployToServerRunConfiguration.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeployToServerRunConfiguration.java index f80bddeb5456..40bf37529dcd 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeployToServerRunConfiguration.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeployToServerRunConfiguration.java @@ -1,6 +1,4 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. - */ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.remoteServer.impl.configuration.deployment; import com.intellij.configurationStore.ComponentSerializationUtil; @@ -23,6 +21,7 @@ import com.intellij.remoteServer.configuration.deployment.*; import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerSettingsEditor.AnySource; import com.intellij.remoteServer.impl.configuration.deployment.DeployToServerSettingsEditor.LockedSource; import com.intellij.remoteServer.impl.runtime.DeployToServerState; +import com.intellij.util.containers.ContainerUtil; import com.intellij.util.xmlb.SkipDefaultValuesSerializationFilters; import com.intellij.util.xmlb.XmlSerializer; import com.intellij.util.xmlb.annotations.Attribute; @@ -32,6 +31,8 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + /** * @author nik */ @@ -255,6 +256,29 @@ public class DeployToServerRunConfiguration server = ContainerUtil.getFirstItem(RemoteServersManager.getInstance().getServers(myServerType)); + if (server != null) { + setServerName(server.getName()); + } + } + + if (getDeploymentSource() == null) { + DeploymentConfigurator deploymentConfigurator = getDeploymentConfigurator(); + List sources = deploymentConfigurator.getAvailableDeploymentSources(); + DeploymentSource source = ContainerUtil.getFirstItem(sources); + if (source != null) { + setDeploymentSource(source); + setDeploymentConfiguration(deploymentConfigurator.createDefaultConfiguration(source)); + DeploymentSourceType type = source.getType(); + //noinspection unchecked + type.setBuildBeforeRunTask(this, source); + } + } + } + public static class ConfigurationState { @Attribute("server-name") public String myServerName; diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeploymentConfigurationManagerImpl.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeploymentConfigurationManagerImpl.java index a7cdc926f787..c7d4e016b83b 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeploymentConfigurationManagerImpl.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/impl/configuration/deployment/DeploymentConfigurationManagerImpl.java @@ -4,9 +4,7 @@ package com.intellij.remoteServer.impl.configuration.deployment; import com.intellij.execution.ProgramRunnerUtil; import com.intellij.execution.RunManager; import com.intellij.execution.RunnerAndConfigurationSettings; -import com.intellij.execution.configuration.ConfigurationFactoryListener; import com.intellij.execution.configurations.ConfigurationFactory; -import com.intellij.execution.configurations.RunConfiguration; import com.intellij.execution.executors.DefaultRunExecutor; import com.intellij.execution.impl.RunDialog; import com.intellij.openapi.project.Project; @@ -53,9 +51,8 @@ public class DeploymentConfigurationManagerImpl extends DeploymentConfigurationM @SuppressWarnings("unchecked") ConfigurationFactory factory = configurationType.getFactoryForType(sourceType); RunnerAndConfigurationSettings settings = runManager.createRunConfiguration(configurationType.getDisplayName(), factory); - //noinspection unchecked - ((ConfigurationFactoryListener)factory).onNewConfigurationCreated(settings.getConfiguration()); DeployToServerRunConfiguration runConfiguration = (DeployToServerRunConfiguration)settings.getConfiguration(); + runConfiguration.onNewConfigurationCreated(); if (remoteServer != null) { runConfiguration.setServerName(remoteServer.getName()); } diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudRunConfigurationUtil.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudRunConfigurationUtil.java index 2a119b85d615..ac3643d32357 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudRunConfigurationUtil.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/util/CloudRunConfigurationUtil.java @@ -3,9 +3,8 @@ package com.intellij.remoteServer.util; import com.intellij.execution.RunManager; import com.intellij.execution.RunnerAndConfigurationSettings; -import com.intellij.execution.configuration.ConfigurationFactoryListener; import com.intellij.execution.configurations.ConfigurationFactory; -import com.intellij.execution.configurations.RunConfiguration; +import com.intellij.execution.impl.RunManagerImplKt; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModulePointer; import com.intellij.openapi.module.ModulePointerManager; @@ -42,8 +41,7 @@ public class CloudRunConfigurationUtil { result.setServerName(account.getName()); result.setDeploymentSource(deploymentSource); result.setDeploymentConfiguration(deploymentConfiguration); - //noinspection unchecked - ((ConfigurationFactoryListener)configurationFactory).onNewConfigurationCreated(runSettings.getConfiguration()); + RunManagerImplKt.callNewConfigurationCreated(configurationFactory, runSettings.getConfiguration()); runManager.addConfiguration(runSettings); runManager.setSelectedConfiguration(runSettings); diff --git a/plugins/junit/src/com/intellij/execution/junit/JUnitConfigurationType.java b/plugins/junit/src/com/intellij/execution/junit/JUnitConfigurationType.java index 98df1bfe5e59..91d38a23979c 100644 --- a/plugins/junit/src/com/intellij/execution/junit/JUnitConfigurationType.java +++ b/plugins/junit/src/com/intellij/execution/junit/JUnitConfigurationType.java @@ -3,8 +3,10 @@ package com.intellij.execution.junit; import com.intellij.execution.ExecutionBundle; -import com.intellij.execution.configuration.ConfigurationFactoryEx; -import com.intellij.execution.configurations.*; +import com.intellij.execution.configurations.ConfigurationFactory; +import com.intellij.execution.configurations.ConfigurationType; +import com.intellij.execution.configurations.ConfigurationTypeUtil; +import com.intellij.execution.configurations.RunConfiguration; import com.intellij.icons.AllIcons; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; @@ -20,17 +22,12 @@ public class JUnitConfigurationType implements ConfigurationType { /**reflection*/ public JUnitConfigurationType() { - myFactory = new ConfigurationFactoryEx(this) { + myFactory = new ConfigurationFactory(this) { @Override @NotNull public RunConfiguration createTemplateConfiguration(@NotNull Project project) { return new JUnitConfiguration("", project, this); } - - @Override - public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) { - ((ModuleBasedConfiguration)configuration).onNewConfigurationCreated(); - } }; } diff --git a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationType.java b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationType.java index c5d515ea028e..e390da0dc57c 100644 --- a/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationType.java +++ b/plugins/testng/src/com/theoryinpractice/testng/configuration/TestNGConfigurationType.java @@ -1,96 +1,58 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. - package com.theoryinpractice.testng.configuration; import com.intellij.execution.Location; import com.intellij.execution.RunManager; -import com.intellij.execution.configuration.ConfigurationFactoryEx; -import com.intellij.execution.configurations.*; +import com.intellij.execution.configurations.ConfigurationFactory; +import com.intellij.execution.configurations.ConfigurationTypeBase; +import com.intellij.execution.configurations.ConfigurationTypeUtil; +import com.intellij.execution.configurations.RunConfiguration; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.psi.PsiElement; +import com.intellij.util.LazyUtil; import com.theoryinpractice.testng.model.TestData; import com.theoryinpractice.testng.model.TestNGTestObject; import icons.TestngIcons; import org.jetbrains.annotations.NotNull; -import javax.swing.*; +public final class TestNGConfigurationType extends ConfigurationTypeBase { + public TestNGConfigurationType() { + super("TestNG", "TestNG", null, LazyUtil.create(() -> TestngIcons.TestNG)); + addFactory(new ConfigurationFactory(this) { + @NotNull + @Override + public RunConfiguration createTemplateConfiguration(@NotNull Project project) { + return new TestNGConfiguration("", project, this); + } + }); + } -public class TestNGConfigurationType implements ConfigurationType { - - private final ConfigurationFactory myFactory; - - public TestNGConfigurationType() { - - myFactory = new ConfigurationFactoryEx(this) - { - @NotNull - @Override - public RunConfiguration createTemplateConfiguration(@NotNull Project project) { - return new TestNGConfiguration("", project, this); - } - - @Override - public void onNewConfigurationCreated(@NotNull RunConfiguration configuration) { - ((ModuleBasedConfiguration)configuration).onNewConfigurationCreated(); - } - }; - } - - public static TestNGConfigurationType getInstance() { - return ConfigurationTypeUtil.findConfigurationType(TestNGConfigurationType.class); - } + public static TestNGConfigurationType getInstance() { + return ConfigurationTypeUtil.findConfigurationType(TestNGConfigurationType.class); + } public boolean isConfigurationByLocation(RunConfiguration runConfiguration, Location location) { - TestNGConfiguration config = (TestNGConfiguration) runConfiguration; - TestData testobject = config.getPersistantData(); - if (testobject == null) - return false; - else { - final PsiElement element = location.getPsiElement(); - final TestNGTestObject testNGTestObject = TestNGTestObject.fromConfig(config); - if (testNGTestObject != null && testNGTestObject.isConfiguredByElement(element)) { - final Module configurationModule = config.getConfigurationModule().getModule(); - if (Comparing.equal(location.getModule(), configurationModule)) return true; - - final Module predefinedModule = - ((TestNGConfiguration)RunManager.getInstance(location.getProject()).getConfigurationTemplate(myFactory) - .getConfiguration()).getConfigurationModule().getModule(); - return Comparing.equal(predefinedModule, configurationModule); - - } - else { - return false; - } - } + TestNGConfiguration config = (TestNGConfiguration)runConfiguration; + TestData testObject = config.getPersistantData(); + if (testObject == null) { + return false; } - @NotNull - @Override - public String getDisplayName() { - return "TestNG"; - } + final PsiElement element = location.getPsiElement(); + final TestNGTestObject testNGTestObject = TestNGTestObject.fromConfig(config); + if (testNGTestObject.isConfiguredByElement(element)) { + final Module configurationModule = config.getConfigurationModule().getModule(); + if (Comparing.equal(location.getModule(), configurationModule)) return true; - @Override - public String getConfigurationTypeDescription() { - return "TestNG Configuration"; + final Module predefinedModule = + ((TestNGConfiguration)RunManager.getInstance(location.getProject()).getConfigurationTemplate(getConfigurationFactories()[0]) + .getConfiguration()).getConfigurationModule().getModule(); + return Comparing.equal(predefinedModule, configurationModule); } - - @Override - public Icon getIcon() { - return TestngIcons.TestNG; + else { + return false; } - - @Override - public ConfigurationFactory[] getConfigurationFactories() { - return new ConfigurationFactory[] {myFactory}; - } - - @Override - @NotNull - public String getId() { - return "TestNG"; - } - + } } diff --git a/python/src/com/jetbrains/python/run/AbstractPythonRunConfiguration.java b/python/src/com/jetbrains/python/run/AbstractPythonRunConfiguration.java index cd06ecf052c6..049bbe27e40d 100644 --- a/python/src/com/jetbrains/python/run/AbstractPythonRunConfiguration.java +++ b/python/src/com/jetbrains/python/run/AbstractPythonRunConfiguration.java @@ -4,7 +4,6 @@ package com.jetbrains.python.run; import com.google.common.collect.Lists; import com.intellij.diagnostic.logging.LogConfigurationPanel; import com.intellij.execution.ExecutionBundle; -import com.intellij.execution.ExecutionException; import com.intellij.execution.configuration.AbstractRunConfiguration; import com.intellij.execution.configuration.EnvironmentVariablesComponent; import com.intellij.execution.configurations.*; @@ -59,7 +58,7 @@ public abstract class AbstractPythonRunConfiguration