Skip to content

Commit d956e43

Browse files
Minor refactoring
1 parent 6a6ebe3 commit d956e43

File tree

1 file changed

+25
-46
lines changed

1 file changed

+25
-46
lines changed

library/src/main/scala/za/co/absa/springdocopenapiscala/OpenAPIModelRegistration.scala

Lines changed: 25 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)