File tree Expand file tree Collapse file tree 3 files changed +35
-1
lines changed
main/kotlin/com/papsign/ktor/openapigen/annotations/type/string/example Expand file tree Collapse file tree 3 files changed +35
-1
lines changed Original file line number Diff line number Diff line change 1+ package com.papsign.ktor.openapigen.annotations.type.string.example
2+
3+ import com.papsign.ktor.openapigen.schema.processor.SchemaProcessorAnnotation
4+
5+ /* *
6+ * Provide examples for a String property
7+ */
8+ @Target(AnnotationTarget .PROPERTY )
9+ @SchemaProcessorAnnotation(StringExampleProcessor ::class )
10+ annotation class StringExample (vararg val examples : String )
Original file line number Diff line number Diff line change 1+ package com.papsign.ktor.openapigen.annotations.type.string.example
2+
3+ import com.papsign.ktor.openapigen.model.schema.SchemaModel
4+ import com.papsign.ktor.openapigen.schema.processor.SchemaProcessor
5+ import kotlin.reflect.KType
6+
7+ object StringExampleProcessor: SchemaProcessor<StringExample> {
8+ override fun process (model : SchemaModel <* >, type : KType , annotation : StringExample ): SchemaModel <* > {
9+ (model as SchemaModel <String ?>).apply {
10+ if (annotation.examples.size > 1 ) {
11+ examples = examples?.plus(annotation.examples) ? : annotation.examples.asList()
12+ } else {
13+ if (example == null ) {
14+ example = annotation.examples.getOrNull(0 )
15+ } else {
16+ examples = examples?.plus(annotation.examples)
17+ }
18+ }
19+ }
20+ return model
21+ }
22+
23+ }
Original file line number Diff line number Diff line change @@ -32,6 +32,7 @@ import com.papsign.ktor.openapigen.annotations.type.number.ConstraintVialoation
3232import com.papsign.ktor.openapigen.annotations.type.number.integer.clamp.Clamp
3333import com.papsign.ktor.openapigen.annotations.type.number.integer.max.Max
3434import com.papsign.ktor.openapigen.annotations.type.number.integer.min.Min
35+ import com.papsign.ktor.openapigen.annotations.type.string.example.StringExample
3536import io.ktor.application.application
3637import io.ktor.application.call
3738import io.ktor.application.install
@@ -228,7 +229,7 @@ object TestServer {
228229 data class NameParam (@HeaderParam(" A simple Header Param" ) @OpenAPIName(" X-NAME" ) val name : String )
229230
230231 @Response(" A Response for header param example" )
231- data class NameGreetingResponse (val str : String )
232+ data class NameGreetingResponse (@StringExample( " Hi, John! " ) val str : String )
232233
233234
234235 @Response(" A String Response" )
You can’t perform that action at this time.
0 commit comments