move run configuration importer extension point to api

This commit is contained in:
Nikita Skvortsov
2017-09-18 13:20:36 +03:00
parent 837f014738
commit f3e36ed598
2 changed files with 44 additions and 18 deletions
@@ -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<RunConfigHandlerExtension> EP_NAME = ExtensionPointName.create("com.intellij.runConfigurationHandlerExtension");
default void process(@NotNull Project project, @NotNull String name, @NotNull Map<String, Object> cfg) {}
default void process(@NotNull Module module, @NotNull String name, @NotNull Map<String, Object> cfg) {}
default boolean canHandle(@NotNull String typeName) {
return false;
}
}
@@ -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<String, String>)
try {
f(typeName, name, cfg as Map<String, String>)
} 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<RunConfigHandlerExtension>("com.intellij.runConfigurationHandlerExtension")
}
fun process(project: Project, name: String, cfg: Map<String, String>) {}
fun process(module: Module, name: String, cfg: Map<String, String>) {}
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<String, String>) {
override fun process(module: Module, name: String, cfg: Map<String, *>) {
val cfgType = ConfigurationTypeUtil.findConfigurationType<ApplicationConfigurationType>(
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<String, String>) {}
override fun process(project: Project, name: String, cfg: Map<String, *>) {}
override fun canHandle(typeName: String): Boolean = typeName == "application"
}