Skip to content

Commit 31e462d

Browse files
Make Gradle properties non-nullable (#22050)
They were never really intended to support null values, so this is kind of a bug. However, this is technically also breaking for users that set these properties to `null` explicitly (instead of leaving them unset).
1 parent 74488fa commit 31e462d

File tree

2 files changed

+33
-42
lines changed

2 files changed

+33
-42
lines changed

modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/extensions/OpenApiGeneratorGenerateExtension.kt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,12 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
8181
/**
8282
* The template directory holding a custom template.
8383
*/
84-
val templateDir = project.objects.property<String?>()
84+
val templateDir = project.objects.property<String>()
8585

8686
/**
8787
* The template location (which may be a directory or a classpath location) holding custom templates.
8888
*/
89-
val templateResourcePath = project.objects.property<String?>()
89+
val templateResourcePath = project.objects.property<String>()
9090

9191
/**
9292
* Adds authorization headers when fetching the OpenAPI definitions remotely.
@@ -109,7 +109,7 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
109109
/**
110110
* Specifies if the existing files should be overwritten during the generation.
111111
*/
112-
val skipOverwrite = project.objects.property<Boolean?>()
112+
val skipOverwrite = project.objects.property<Boolean>()
113113

114114
/**
115115
* Package for generated classes (where supported)
@@ -244,32 +244,32 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
244244
/**
245245
* Reference the library template (sub-template) of a generator.
246246
*/
247-
val library = project.objects.property<String?>()
247+
val library = project.objects.property<String>()
248248

249249
/**
250250
* Git host, e.g. gitlab.com.
251251
*/
252-
val gitHost = project.objects.property<String?>()
252+
val gitHost = project.objects.property<String>()
253253

254254
/**
255255
* Git user ID, e.g. openapitools.
256256
*/
257-
val gitUserId = project.objects.property<String?>()
257+
val gitUserId = project.objects.property<String>()
258258

259259
/**
260260
* Git repo ID, e.g. openapi-generator.
261261
*/
262-
val gitRepoId = project.objects.property<String?>()
262+
val gitRepoId = project.objects.property<String>()
263263

264264
/**
265265
* Release note, default to 'Minor update'.
266266
*/
267-
val releaseNote = project.objects.property<String?>()
267+
val releaseNote = project.objects.property<String>()
268268

269269
/**
270270
* HTTP user agent, e.g. codegen_csharp_api_client, default to 'OpenAPI-Generator/{packageVersion}/{language}'
271271
*/
272-
val httpUserAgent = project.objects.property<String?>()
272+
val httpUserAgent = project.objects.property<String>()
273273

274274
/**
275275
* Specifies how a reserved name should be escaped to. Otherwise, the default _<name> is used.
@@ -279,17 +279,17 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
279279
/**
280280
* Specifies an override location for the .openapi-generator-ignore file. Most useful on initial generation.
281281
*/
282-
val ignoreFileOverride = project.objects.property<String?>()
282+
val ignoreFileOverride = project.objects.property<String>()
283283

284284
/**
285285
* Remove prefix of operationId, e.g. config_getId => getId
286286
*/
287-
val removeOperationIdPrefix = project.objects.property<Boolean?>()
287+
val removeOperationIdPrefix = project.objects.property<Boolean>()
288288

289289
/**
290290
* Skip examples defined in the operation
291291
*/
292-
val skipOperationExample = project.objects.property<Boolean?>()
292+
val skipOperationExample = project.objects.property<Boolean>()
293293

294294
/**
295295
* Defines which API-related files should be generated. This allows you to create a subset of generated files (or none at all).
@@ -394,7 +394,7 @@ open class OpenApiGeneratorGenerateExtension(project: Project) {
394394
/**
395395
* Templating engine: "mustache" (default) or "handlebars" (beta)
396396
*/
397-
val engine = project.objects.property<String?>()
397+
val engine = project.objects.property<String>()
398398

399399
/**
400400
* Defines whether the output dir should be cleaned up before generating the output.

modules/openapi-generator-gradle-plugin/src/main/kotlin/org/openapitools/generator/gradle/plugin/tasks/GenerateTask.kt

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ import org.openapitools.codegen.config.MergedSpecBuilder
5555
*
5656
* @author Jim Schubert
5757
*/
58-
@Suppress("UnstableApiUsage")
5958
@CacheableTask
6059
open class GenerateTask @Inject constructor(private val objectFactory: ObjectFactory) : DefaultTask() {
6160

@@ -154,14 +153,14 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
154153
@get:Optional
155154
@get:InputDirectory
156155
@get:PathSensitive(PathSensitivity.RELATIVE)
157-
val templateDir = project.objects.property<String?>()
156+
val templateDir = project.objects.property<String>()
158157

159158
/**
160159
* Resource path containing template files.
161160
*/
162161
@get:Optional
163162
@get:Input
164-
val templateResourcePath = project.objects.property<String?>()
163+
val templateResourcePath = project.objects.property<String>()
165164

166165
/**
167166
* Adds authorization headers when fetching the OpenAPI definitions remotely.
@@ -193,7 +192,7 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
193192
*/
194193
@get:Optional
195194
@get:Input
196-
val skipOverwrite = project.objects.property<Boolean?>()
195+
val skipOverwrite = project.objects.property<Boolean>()
197196

198197
/**
199198
* Package for generated classes (where supported)
@@ -384,42 +383,42 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
384383
*/
385384
@get:Optional
386385
@get:Input
387-
val library = project.objects.property<String?>()
386+
val library = project.objects.property<String>()
388387

389388
/**
390389
* Git host, e.g. gitlab.com.
391390
*/
392391
@get:Optional
393392
@get:Input
394-
val gitHost = project.objects.property<String?>()
393+
val gitHost = project.objects.property<String>()
395394

396395
/**
397396
* Git user ID, e.g. openapitools.
398397
*/
399398
@get:Optional
400399
@get:Input
401-
val gitUserId = project.objects.property<String?>()
400+
val gitUserId = project.objects.property<String>()
402401

403402
/**
404403
* Git repo ID, e.g. openapi-generator.
405404
*/
406405
@get:Optional
407406
@get:Input
408-
val gitRepoId = project.objects.property<String?>()
407+
val gitRepoId = project.objects.property<String>()
409408

410409
/**
411410
* Release note, default to 'Minor update'.
412411
*/
413412
@get:Optional
414413
@get:Input
415-
val releaseNote = project.objects.property<String?>()
414+
val releaseNote = project.objects.property<String>()
416415

417416
/**
418417
* HTTP user agent, e.g. codegen_csharp_api_client, default to 'OpenAPI-Generator/{packageVersion}/{language}'
419418
*/
420419
@get:Optional
421420
@get:Input
422-
val httpUserAgent = project.objects.property<String?>()
421+
val httpUserAgent = project.objects.property<String>()
423422

424423
/**
425424
* Specifies how a reserved name should be escaped to.
@@ -434,21 +433,21 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
434433
@get:Optional
435434
@get:InputFile
436435
@get:PathSensitive(PathSensitivity.RELATIVE)
437-
val ignoreFileOverride = project.objects.property<String?>()
436+
val ignoreFileOverride = project.objects.property<String>()
438437

439438
/**
440439
* Remove prefix of operationId, e.g. config_getId => getId
441440
*/
442441
@get:Optional
443442
@get:Input
444-
val removeOperationIdPrefix = project.objects.property<Boolean?>()
443+
val removeOperationIdPrefix = project.objects.property<Boolean>()
445444

446445
/**
447446
* Remove examples defined in the operation
448447
*/
449448
@get:Optional
450449
@get:Input
451-
val skipOperationExample = project.objects.property<Boolean?>()
450+
val skipOperationExample = project.objects.property<Boolean>()
452451

453452
/**
454453
* Defines which API-related files should be generated. This allows you to create a subset of generated files (or none at all).
@@ -581,7 +580,7 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
581580
*/
582581
@get:Optional
583582
@get:Input
584-
val engine = project.objects.property<String?>()
583+
val engine = project.objects.property<String>()
585584

586585
/**
587586
* Defines whether the output dir should be cleaned up before generating the output.
@@ -598,19 +597,11 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
598597
@get:Input
599598
val dryRun = project.objects.property<Boolean>()
600599

601-
private fun <T : Any?> Property<T>.ifNotEmpty(block: Property<T>.(T) -> Unit) {
600+
private fun <T> Property<T>.ifNotEmpty(block: Property<T>.(T) -> Unit) {
602601
if (isPresent) {
603-
val item: T? = get()
604-
if (item != null) {
605-
when (get()) {
606-
is String -> if ((get() as String).isNotEmpty()) {
607-
block(get())
608-
}
609-
is String? -> if (true == (get() as String?)?.isNotEmpty()) {
610-
block(get())
611-
}
612-
else -> block(get())
613-
}
602+
when (val value = get()) {
603+
is String -> if (value.isNotEmpty()) block(value)
604+
else -> block(value)
614605
}
615606
}
616607
}
@@ -725,7 +716,7 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
725716
}
726717

727718
skipOverwrite.ifNotEmpty { value ->
728-
configurator.setSkipOverwrite(value ?: false)
719+
configurator.setSkipOverwrite(value)
729720
}
730721

731722
generatorName.ifNotEmpty { value ->
@@ -820,11 +811,11 @@ open class GenerateTask @Inject constructor(private val objectFactory: ObjectFac
820811
}
821812

822813
removeOperationIdPrefix.ifNotEmpty { value ->
823-
configurator.setRemoveOperationIdPrefix(value!!)
814+
configurator.setRemoveOperationIdPrefix(value)
824815
}
825816

826817
skipOperationExample.ifNotEmpty { value ->
827-
configurator.setSkipOperationExample(value!!)
818+
configurator.setSkipOperationExample(value)
828819
}
829820

830821
logToStderr.ifNotEmpty { value ->

0 commit comments

Comments
 (0)