5
5
6
6
package io.openapiprocessor.core.writer.java
7
7
8
+ import io.openapiprocessor.core.converter.ApiOptions
8
9
import io.openapiprocessor.core.converter.mapping.ParameterValue
9
10
import io.openapiprocessor.core.converter.mapping.SimpleParameterValue
10
11
import io.openapiprocessor.core.model.Annotation
@@ -15,9 +16,9 @@ import org.apache.commons.text.StringEscapeUtils.escapeJava
15
16
* creates bean validation imports and annotations.
16
17
*/
17
18
open class BeanValidationFactory (
18
- val format : BeanValidationFormat = BeanValidationFormat . JAVAX
19
+ private val options : ApiOptions
19
20
) {
20
- val validations: BeanValidations = BeanValidations (format )
21
+ val validations: BeanValidations = BeanValidations (getValidationFormat() )
21
22
22
23
/* *
23
24
* override to add annotations to the model object class.
@@ -73,6 +74,10 @@ open class BeanValidationFactory(
73
74
annotations.add(createEmailAnnotation())
74
75
}
75
76
77
+ if (sourceDataType.valuesConstraint()) {
78
+ annotations.add(createValuesAnnotation(dataType))
79
+ }
80
+
76
81
return annotations
77
82
}
78
83
@@ -141,6 +146,26 @@ open class BeanValidationFactory(
141
146
private fun createEmailAnnotation (): Annotation {
142
147
return Annotation (validations.EMAIL )
143
148
}
149
+
150
+ private fun createValuesAnnotation (dataType : DataType ): Annotation {
151
+ val parameters = linkedMapOf<String , ParameterValue >()
152
+
153
+ val params = StringBuilder ()
154
+ params.append(" {" )
155
+ params.append(dataType.constraints!! .values.joinToString(" , " ) { """ "$it """" })
156
+ params.append(" }" )
157
+
158
+ parameters[" values" ] = SimpleParameterValue (params.toString())
159
+ return Annotation (" ${options.packageName} .${validations.VALUES } " , parameters)
160
+ }
161
+
162
+ private fun getValidationFormat (): BeanValidationFormat {
163
+ val format = options.beanValidationFormat
164
+ return if (format != null )
165
+ BeanValidationFormat .valueOf(format.uppercase())
166
+ else
167
+ BeanValidationFormat .JAVAX
168
+ }
144
169
}
145
170
146
171
private fun DataType.shouldHaveValid (): Boolean {
@@ -194,3 +219,5 @@ private fun DataType.itemConstraints(): SizeConstraints = constraints?.itemConst
194
219
private fun DataType.patternConstraint (): Boolean = constraints?.pattern != null
195
220
196
221
private fun DataType.emailConstraint (): Boolean = " email" == constraints?.format
222
+
223
+ private fun DataType.valuesConstraint (): Boolean = isString() && constraints?.values?.isNotEmpty() == true
0 commit comments