From 4a43d17288b353e9894e374554b7f8c533c9d36e Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Sat, 23 Apr 2016 05:15:07 -0800 Subject: [PATCH] Shut down actors. --- .../kotlin/com/beust/kobalt/api/IPluginActor.kt | 7 ++++++- .../beust/kobalt/internal/JvmCompilerPlugin.kt | 5 +++++ .../com/beust/kobalt/internal/KobaltPluginXml.kt | 16 ++++++++++++++++ src/main/kotlin/com/beust/kobalt/Main.kt | 1 + 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IPluginActor.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IPluginActor.kt index 3debdb7a..c53bb860 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IPluginActor.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/IPluginActor.kt @@ -1,6 +1,11 @@ package com.beust.kobalt.api -interface IPluginActor +interface IPluginActor { + /** + * Clean up any state that your actor might have saved so it can be run again. + */ + fun shutdownActors() {} +} interface IContributor : IPluginActor diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt index 1cbf4ebe..bc415c4b 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt @@ -226,8 +226,13 @@ open class JvmCompilerPlugin @Inject constructor( val allProjects = arrayListOf() + // IProjectContributor override fun projects() = allProjects + override fun shutdownActors() { + allProjects.clear() + } + fun addDependentProjects(project: Project, dependents: List) { project.projectExtra.dependsOn.addAll(dependents) with(ProjectDescription(project, dependents)) { diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltPluginXml.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltPluginXml.kt index 192fd8ed..626039bf 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltPluginXml.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/KobaltPluginXml.kt @@ -168,6 +168,22 @@ class PluginInfo(val xml: KobaltPluginXml, val classLoader: ClassLoader?) { } } + fun shutdown() { + listOf(projectContributors, classpathContributors, initContributors, + repoContributors, compilerFlagContributors, compilerInterceptors, + sourceDirectoriesInterceptors, buildDirectoryInterceptors, + runnerContributors, testRunnerContributors, classpathInterceptors, + compilerContributors, docContributors, sourceDirContributors, + testSourceDirContributors, buildConfigFieldContributors, + taskContributors, assemblyContributors, + incrementalAssemblyContributors + ).forEach { + it.forEach { + it.shutdownActors() + } + } + } + /** * Populate pluginInfo with what was found in the plug-in's kobalt-plugin.xml */ diff --git a/src/main/kotlin/com/beust/kobalt/Main.kt b/src/main/kotlin/com/beust/kobalt/Main.kt index 6cff5303..5791e39e 100644 --- a/src/main/kotlin/com/beust/kobalt/Main.kt +++ b/src/main/kotlin/com/beust/kobalt/Main.kt @@ -45,6 +45,7 @@ fun mainNoExit(argv: Array): Int { Kobalt.INJECTOR = Guice.createInjector(MainModule(args, KobaltSettings.readSettingsXml())) val result = Kobalt.INJECTOR.getInstance(Main::class.java).run { val runResult = run(jc, args, argv) + pluginInfo.shutdown() executors.shutdown() runResult }