mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move run configuration importer extension point to api
This commit is contained in:
+35
@@ -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;
|
||||
}
|
||||
}
|
||||
+9
-18
@@ -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"
|
||||
}
|
||||
Reference in New Issue
Block a user