@@ -70,6 +70,8 @@ class OpenAPIModelRegistration(
70
70
handleType(tpe)
71
71
}
72
72
73
+ private case class OpenAPISimpleType (schema : Schema [_], format : Option [String ] = None , _type : Option [String ] = None )
74
+
73
75
@ tailrec
74
76
private def handleType (tpe : Type ): Schema [_] = {
75
77
if (extraTypesHandler.isDefinedAt(tpe)) handleExtraTypes(tpe)
@@ -218,63 +220,40 @@ class OpenAPIModelRegistration(
218
220
}
219
221
}
220
222
221
- private def handleSimpleType (tpe : Type ): Schema [_] = tpe.dealias match {
222
- case t if t =:= typeOf[Byte ] =>
223
- val s = new IntegerSchema ()
224
- s.setFormat(" int32" )
225
- s
226
- case t if t =:= typeOf[Short ] =>
227
- val s = new IntegerSchema ()
228
- s.setFormat(" int32" )
229
- s
230
- case t if t =:= typeOf[Int ] =>
231
- val s = new IntegerSchema ()
232
- s.setFormat(" int32" )
233
- s
223
+ private def handleSimpleType (tpe : Type ): Schema [_] = {
224
+ val simpleType = getOpenAPISimpleType(tpe)
225
+ simpleType.format.foreach(simpleType.schema.setFormat)
226
+ simpleType._type.foreach(simpleType.schema.setType)
227
+ simpleType.schema
228
+ }
229
+
230
+ private def getOpenAPISimpleType (tpe : Type ): OpenAPISimpleType = tpe.dealias match {
231
+ case t if t =:= typeOf[Byte ] || t =:= typeOf[Short ] || t =:= typeOf[Int ] =>
232
+ OpenAPISimpleType (new IntegerSchema ())
234
233
case t if t =:= typeOf[Long ] =>
235
- val s = new IntegerSchema ()
236
- s.setFormat(" int64" )
237
- s
234
+ OpenAPISimpleType (new IntegerSchema (), Some (" int64" ))
238
235
case t if t =:= typeOf[Float ] =>
239
- val s = new NumberSchema ()
240
- s.setFormat(" float" )
241
- s
236
+ OpenAPISimpleType (new NumberSchema (), Some (" float" ))
242
237
case t if t =:= typeOf[Double ] =>
243
- val s = new NumberSchema ()
244
- s.setFormat(" double" )
245
- s
246
- case t if t =:= typeOf[Char ] =>
247
- new StringSchema ()
248
- case t if t =:= typeOf[String ] =>
249
- new StringSchema ()
238
+ OpenAPISimpleType (new NumberSchema (), Some (" double" ))
239
+ case t if t =:= typeOf[Char ] || t =:= typeOf[String ] =>
240
+ OpenAPISimpleType (new StringSchema ())
250
241
case t if t =:= typeOf[UUID ] =>
251
- val s = new UUIDSchema ()
252
- s.setFormat(" uuid" )
253
- s
242
+ OpenAPISimpleType (new UUIDSchema ())
254
243
case t if t =:= typeOf[Boolean ] =>
255
- new BooleanSchema ()
244
+ OpenAPISimpleType ( new BooleanSchema () )
256
245
case t if t =:= typeOf[Unit ] =>
257
- val s = new Schema [Unit ]()
258
- s.setType(" null" )
259
- s
246
+ OpenAPISimpleType (new Schema [Unit ](), None , Some (" null" ))
260
247
case t if t =:= typeOf[ZonedDateTime ] || t =:= typeOf[Instant ] || t =:= typeOf[LocalDateTime ] || t =:= typeOf[Timestamp ] =>
261
- val s = new StringSchema ()
262
- s.setFormat(" date-time" )
263
- s
248
+ OpenAPISimpleType (new StringSchema (), Some (" date-time" ))
264
249
case t if t =:= typeOf[LocalDate ] =>
265
- val s = new StringSchema ()
266
- s.setFormat(" date" )
267
- s
250
+ OpenAPISimpleType (new StringSchema (), Some (" date" ))
268
251
case t if t =:= typeOf[LocalTime ] =>
269
- val s = new StringSchema ()
270
- s.setFormat(" time" )
271
- s
252
+ OpenAPISimpleType (new StringSchema (), Some (" time" ))
272
253
case t if t =:= typeOf[BigDecimal ] =>
273
- new NumberSchema ()
254
+ OpenAPISimpleType ( new NumberSchema () )
274
255
case t if t =:= typeOf[BigInt ] =>
275
- val s = new IntegerSchema ()
276
- s.setFormat(null )
277
- s
256
+ OpenAPISimpleType (new IntegerSchema (), Some (null ))
278
257
}
279
258
280
259
private def registerAsReference (name : String , schema : Schema [_]): Schema [_] = {
0 commit comments