From f3e36ed598f071fa0e768cc0dcdc8955b2d6675c Mon Sep 17 00:00:00 2001 From: Nikita Skvortsov Date: Tue, 12 Sep 2017 09:51:30 +0300 Subject: [PATCH] move run configuration importer extension point to api --- .../manage/RunConfigHandlerExtension.java | 35 +++++++++++++++++++ .../project/manage/RunConfigurationHandler.kt | 27 +++++--------- 2 files changed, 44 insertions(+), 18 deletions(-) create mode 100644 platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/manage/RunConfigHandlerExtension.java diff --git a/platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/manage/RunConfigHandlerExtension.java b/platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/manage/RunConfigHandlerExtension.java new file mode 100644 index 000000000000..68f5d9bef98d --- /dev/null +++ b/platform/external-system-api/src/com/intellij/openapi/externalSystem/service/project/manage/RunConfigHandlerExtension.java @@ -0,0 +1,35 @@ +/* + * Copyright 2000-2017 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.externalSystem.service.project.manage; + +import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.ApiStatus; +import org.jetbrains.annotations.NotNull; + +import java.util.Map; + +@ApiStatus.Experimental +public interface RunConfigHandlerExtension { + ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.runConfigurationHandlerExtension"); + + default void process(@NotNull Project project, @NotNull String name, @NotNull Map cfg) {} + default void process(@NotNull Module module, @NotNull String name, @NotNull Map cfg) {} + default boolean canHandle(@NotNull String typeName) { + return false; + } +} \ No newline at end of file diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/RunConfigurationHandler.kt b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/RunConfigurationHandler.kt index e699c12bafe3..f35eb484edea 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/RunConfigurationHandler.kt +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/manage/RunConfigurationHandler.kt @@ -20,13 +20,11 @@ import com.intellij.execution.application.ApplicationConfiguration import com.intellij.execution.application.ApplicationConfigurationType import com.intellij.execution.configurations.ConfigurationTypeUtil import com.intellij.openapi.diagnostic.Logger -import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.externalSystem.model.project.ConfigurationData import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider import com.intellij.openapi.module.Module import com.intellij.openapi.project.Project -import org.jetbrains.annotations.ApiStatus /** * Created by Nikita.Skvortsov @@ -73,23 +71,16 @@ class RunConfigurationHandler: ConfigurationHandler { return@forEach } - f(typeName, name, cfg as Map) + try { + f(typeName, name, cfg as Map) + } catch (e: Exception) { + RunConfigurationHandler.LOG.warn("Error occurred when importing run configuration ${name}: ${e.message}", e) + } } } } -@ApiStatus.Experimental -interface RunConfigHandlerExtension { - companion object { - val EP_NAME = ExtensionPointName.create("com.intellij.runConfigurationHandlerExtension") - } - - fun process(project: Project, name: String, cfg: Map) {} - fun process(module: Module, name: String, cfg: Map) {} - fun canHandle(typeName: String): Boolean = false -} - class RunConfigHandlerExtensionManager { companion object { fun handlerForType(typeName: String): RunConfigHandlerExtension? = @@ -98,21 +89,21 @@ class RunConfigHandlerExtensionManager { } class ApplicationRunConfigHandler: RunConfigHandlerExtension { - override fun process(module: Module, name: String, cfg: Map) { + override fun process(module: Module, name: String, cfg: Map) { val cfgType = ConfigurationTypeUtil.findConfigurationType( ApplicationConfigurationType::class.java) val runManager = RunManager.getInstance(module.project) val runnerAndConfigurationSettings = runManager.createConfiguration(name, cfgType.configurationFactories[0]) val appConfig = runnerAndConfigurationSettings.configuration as ApplicationConfiguration - appConfig.MAIN_CLASS_NAME = cfg["mainClass"] - appConfig.VM_PARAMETERS = cfg["jvmArgs"] + appConfig.MAIN_CLASS_NAME = cfg["mainClass"] as? String + appConfig.VM_PARAMETERS = cfg["jvmArgs"] as? String appConfig.setModule(module) runManager.addConfiguration(runnerAndConfigurationSettings) } - override fun process(project: Project, name: String, cfg: Map) {} + override fun process(project: Project, name: String, cfg: Map) {} override fun canHandle(typeName: String): Boolean = typeName == "application" } \ No newline at end of file