From 1c49b230f4af1faa45f2b11bdf0c4fdc5efd2c47 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Thu, 20 Feb 2020 18:45:20 +0300 Subject: [PATCH] Wizard: force service to always return non-null value --- .../tools/projectWizard/core/ValuesReadingContext.kt | 9 +++++---- .../core/service/BuildSystemAvailabilityWizardService.kt | 2 +- .../kotlin/tools/projectWizard/plugins/AndroidPlugin.kt | 1 + .../projectWizard/plugins/RunConfigurationsPlugin.kt | 2 +- .../tools/projectWizard/plugins/StructurePlugin.kt | 2 +- .../plugins/buildSystem/BuildSystemPlugin.kt | 4 ++-- .../plugins/buildSystem/gradle/GradlePlugin.kt | 2 +- .../tools/projectWizard/plugins/kotlin/KotlinPlugin.kt | 4 ++-- .../tools/projectWizard/templates/TemplateEngine.kt | 4 ++-- .../kotlin/tools/projectWizard/wizard/Wizard.kt | 2 +- 10 files changed, 17 insertions(+), 15 deletions(-) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ValuesReadingContext.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ValuesReadingContext.kt index e3fb2cbd8c2..d9b40c19e7a 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ValuesReadingContext.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ValuesReadingContext.kt @@ -12,10 +12,11 @@ open class ValuesReadingContext( private val servicesManager: ServicesManager, val isUnitTestMode: Boolean ) { - inline fun service(noinline filter: (S) -> Boolean = { true }) = serviceByClass(S::class, filter) + inline fun service(noinline filter: (S) -> Boolean = { true }): S = + serviceByClass(S::class, filter) - fun serviceByClass(klass: KClass, filter: (S) -> Boolean = { true }) = - servicesManager.serviceByClass(klass, filter) + fun serviceByClass(klass: KClass, filter: (S) -> Boolean = { true }): S = + servicesManager.serviceByClass(klass, filter) ?: error("Service ${klass.simpleName} was not found") inline val PropertyReference.propertyValue: T get() = context.propertyContext[this] as T @@ -44,7 +45,7 @@ open class ValuesReadingContext( fun Setting>.getSavedValueForSetting(): V? { if (!isSavable || this !is PluginSetting<*, *>) return null val serializer = type.serializer.safeAs>() ?: return null - val savedValue = service()!!.getSettingValue(path) ?: return null + val savedValue = service().getSettingValue(path) ?: return null return serializer.fromString(savedValue) } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt index beef40683e5..95fd4c994f8 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt @@ -13,7 +13,7 @@ interface BuildSystemAvailabilityWizardService : WizardService { } fun ValuesReadingContext.isBuildSystemAvailable(buildSystemType: BuildSystemType) = - service()!!.isAvailable(buildSystemType) + service().isAvailable(buildSystemType) class BuildSystemAvailabilityWizardServiceImpl : BuildSystemAvailabilityWizardService, IdeaIndependentWizardService { override fun isAvailable(buildSystemType: BuildSystemType) = true diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt index 2530b8bc2b6..3c043a45bfb 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt @@ -19,6 +19,7 @@ class AndroidPlugin(context: Context) : Plugin(context) { "Android SDK Path", neededAtPhase = GenerationPhase.PROJECT_GENERATION ) { + isSavable = true shouldExists() } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/RunConfigurationsPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/RunConfigurationsPlugin.kt index 67ab971316d..9c263708e08 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/RunConfigurationsPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/RunConfigurationsPlugin.kt @@ -20,7 +20,7 @@ class RunConfigurationsPlugin(context: Context) : Plugin(context) { runBefore(BuildSystemPlugin::importProject) withAction { - service()!!.apply { + service().apply { addRunConfigurations(RunConfigurationsPlugin::configurations.propertyValue) } UNIT_SUCCESS diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt index dc4c8064d91..0b1012c7ee1 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt @@ -32,7 +32,7 @@ class StructurePlugin(context: Context) : Plugin(context) { val createProjectDir by pipelineTask(GenerationPhase.PROJECT_GENERATION) { withAction { - service()!!.createDirectory(StructurePlugin::projectPath.reference.settingValue) + service().createDirectory(StructurePlugin::projectPath.reference.settingValue) } } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt index a9b6cf9a1c9..20a100c0b51 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt @@ -26,7 +26,7 @@ abstract class BuildSystemPlugin(context: Context) : Plugin(context) { val type by enumSetting("Build System", GenerationPhase.FIRST_STEP) { isSavable = true filter = { _, type -> - val service = service()!! + val service = service() service.isAvailable(type) } @@ -71,7 +71,7 @@ abstract class BuildSystemPlugin(context: Context) : Plugin(context) { val createModules by pipelineTask(GenerationPhase.PROJECT_GENERATION) { runAfter(StructurePlugin::createProjectDir) withAction { - val fileSystem = service()!! + val fileSystem = service() val data = BuildSystemPlugin::buildSystemData.propertyValue.first { it.type == buildSystemType } val buildFileData = data.buildFileData ?: return@withAction UNIT_SUCCESS BuildSystemPlugin::buildFiles.propertyValue.mapSequenceIgnore { buildFile -> diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt index c33aed78f4a..1eabe3cd4b7 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt @@ -130,7 +130,7 @@ abstract class GradlePlugin(context: Context) : BuildSystemPlugin(context) { repositories ) val buildFileText = createBuildFile().printBuildFile { settingsGradleIR.render(this) } - service()!!.createFile( + service().createFile( projectPath / buildFileName, buildFileText ) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt index 75c6563af18..c06613857d6 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt @@ -26,7 +26,7 @@ class KotlinPlugin(context: Context) : Plugin(context) { title = "Downloading list of Kotlin versions" withAction { - val version = service()!!.getKotlinVersion() + val version = service().getKotlinVersion() KotlinPlugin::version.update { version.asSuccess() } } } @@ -84,7 +84,7 @@ class KotlinPlugin(context: Context) : Plugin(context) { val createSourcesetDirectories by pipelineTask(GenerationPhase.PROJECT_GENERATION) { runAfter(KotlinPlugin::createModules) withAction { - fun Path.createKotlinAndResourceDirectories() = with(service()!!) { + fun Path.createKotlinAndResourceDirectories() = with(service()) { createDirectory(this@createKotlinAndResourceDirectories / Defaults.KOTLIN_DIR) andThen createDirectory(this@createKotlinAndResourceDirectories / Defaults.RESOURCES_DIR) } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt index 6c72efc0c16..14296910ac6 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt @@ -17,11 +17,11 @@ interface TemplateEngine { fun renderTemplate(template: FileTemplateDescriptor, data: Map): String fun TaskRunningContext.writeTemplate(template: FileTemplate): TaskResult { - val formatter = service()!! + val formatter = service() val text = renderTemplate(template.descriptor, template.data).let { text -> formatter.formatFile(text, template.descriptor.relativePath.fileName.toString()) } - return service()!!.createFile(template.rootPath / template.descriptor.relativePath, text) + return service().createFile(template.rootPath / template.descriptor.relativePath, text) } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt index 0c8339e02e4..f47d349509d 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt @@ -34,7 +34,7 @@ abstract class Wizard(createPlugins: PluginsCreator, val servicesManager: Servic if (setting.neededAtPhase !in phases) continue if (!setting.isSavable) continue val serializer = setting.type.serializer as? SerializerImpl ?: continue - service()!!.saveSettingValue( + service().saveSettingValue( setting.path, serializer.toString(setting.reference.settingValue) )