Skip to content

Commit e54747d

Browse files
committed
improve mapping parser error handling
1 parent 5c7b9f5 commit e54747d

2 files changed

Lines changed: 39 additions & 26 deletions

File tree

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/*
2+
* Copyright 2023 https://github.com/openapi-processor/openapi-processor-core
3+
* PDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.openapiprocessor.core.converter
7+
8+
class InvalidMappingException(message: String, cause: Throwable): RuntimeException(message, cause)

openapi-processor-core/src/main/kotlin/io/openapiprocessor/core/converter/OptionsConverter.kt

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -41,37 +41,42 @@ class OptionsConverter(private val checkObsoleteProcessorOptions: Boolean = fals
4141
}
4242

4343
private fun readMapping(mappingSource: String, options: ApiOptions) {
44-
val mapping: MappingVersion? = MappingReader().read(mappingSource)
45-
if (mapping == null) {
46-
log.warn("missing 'mapping.yaml' configuration!")
47-
return
48-
}
44+
try {
45+
val mapping: MappingVersion? = MappingReader().read(mappingSource)
46+
if (mapping == null) {
47+
log.warn("missing 'mapping.yaml' configuration!")
48+
return
49+
}
4950

50-
when (mapping) {
51-
is MappingV1 -> {
52-
options.packageName = mapping.options.packageName
53-
options.beanValidation = mapping.options.beanValidation
51+
when (mapping) {
52+
is MappingV1 -> {
53+
options.packageName = mapping.options.packageName
54+
options.beanValidation = mapping.options.beanValidation
55+
}
56+
57+
is MappingV2 -> {
58+
options.packageName = mapping.options.packageName
59+
options.modelNameSuffix = mapping.options.modelNameSuffix
60+
61+
val (enable, format) = checkBeanValidation(mapping.options)
62+
options.beanValidation = enable
63+
options.beanValidationFormat = format
64+
65+
options.javadoc = mapping.options.javadoc
66+
options.oneOfInterface = mapping.options.oneOfInterface
67+
options.formatCode = mapping.options.formatCode
68+
options.generatedDate = mapping.options.generatedDate
69+
}
5470
}
55-
is MappingV2 -> {
56-
options.packageName = mapping.options.packageName
57-
options.modelNameSuffix = mapping.options.modelNameSuffix
58-
59-
val (enable, format) = checkBeanValidation(mapping.options)
60-
options.beanValidation = enable
61-
options.beanValidationFormat = format
62-
63-
options.javadoc = mapping.options.javadoc
64-
options.oneOfInterface = mapping.options.oneOfInterface
65-
options.formatCode = mapping.options.formatCode
66-
options.generatedDate = mapping.options.generatedDate
71+
72+
if (options.packageName == "io.openapiprocessor.generated") {
73+
log.warn("is 'options.package-name' set in mapping? found default: '{}'.", options.packageName)
6774
}
68-
}
6975

70-
if (options.packageName == "io.openapiprocessor.generated") {
71-
log.warn("is 'options.package-name' set in mapping? found default: '{}'.", options.packageName)
76+
options.typeMappings = MappingConverter().convert(mapping)
77+
} catch (t: Throwable) {
78+
throw InvalidMappingException("failed to parse 'mapping.yaml' configuration!", t)
7279
}
73-
74-
options.typeMappings = MappingConverter().convert(mapping)
7580
}
7681

7782
private fun checkBeanValidation(options: Options): Pair<Boolean, String?> {

0 commit comments

Comments
 (0)