@@ -70,6 +70,8 @@ class OpenAPIModelRegistration(
7070 handleType(tpe)
7171 }
7272
73+ private case class OpenAPISimpleType (schema : Schema [_], format : Option [String ] = None , _type : Option [String ] = None )
74+
7375 @ tailrec
7476 private def handleType (tpe : Type ): Schema [_] = {
7577 if (extraTypesHandler.isDefinedAt(tpe)) handleExtraTypes(tpe)
@@ -218,63 +220,40 @@ class OpenAPIModelRegistration(
218220 }
219221 }
220222
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 ())
234233 case t if t =:= typeOf[Long ] =>
235- val s = new IntegerSchema ()
236- s.setFormat(" int64" )
237- s
234+ OpenAPISimpleType (new IntegerSchema (), Some (" int64" ))
238235 case t if t =:= typeOf[Float ] =>
239- val s = new NumberSchema ()
240- s.setFormat(" float" )
241- s
236+ OpenAPISimpleType (new NumberSchema (), Some (" float" ))
242237 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 ())
250241 case t if t =:= typeOf[UUID ] =>
251- val s = new UUIDSchema ()
252- s.setFormat(" uuid" )
253- s
242+ OpenAPISimpleType (new UUIDSchema ())
254243 case t if t =:= typeOf[Boolean ] =>
255- new BooleanSchema ()
244+ OpenAPISimpleType ( new BooleanSchema () )
256245 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" ))
260247 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" ))
264249 case t if t =:= typeOf[LocalDate ] =>
265- val s = new StringSchema ()
266- s.setFormat(" date" )
267- s
250+ OpenAPISimpleType (new StringSchema (), Some (" date" ))
268251 case t if t =:= typeOf[LocalTime ] =>
269- val s = new StringSchema ()
270- s.setFormat(" time" )
271- s
252+ OpenAPISimpleType (new StringSchema (), Some (" time" ))
272253 case t if t =:= typeOf[BigDecimal ] =>
273- new NumberSchema ()
254+ OpenAPISimpleType ( new NumberSchema () )
274255 case t if t =:= typeOf[BigInt ] =>
275- val s = new IntegerSchema ()
276- s.setFormat(null )
277- s
256+ OpenAPISimpleType (new IntegerSchema (), Some (null ))
278257 }
279258
280259 private def registerAsReference (name : String , schema : Schema [_]): Schema [_] = {
0 commit comments