Skip to content

Commit b560de2

Browse files
committed
swagger-scala-module 2.9.0
1 parent f80c26b commit b560de2

File tree

2 files changed

+6
-50
lines changed

2 files changed

+6
-50
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ pomIncludeRepository := { x => false }
2222

2323
libraryDependencies ++= Seq(
2424
"io.swagger.core.v3" % "swagger-core-jakarta" % "2.2.7",
25-
"com.github.swagger-akka-http" %% "swagger-scala-module" % "2.8.2",
25+
"com.github.swagger-akka-http" %% "swagger-scala-module" % "2.9.0",
2626
"com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.14.1",
2727
"com.beachape" %% "enumeratum" % "1.7.0",
2828
"org.scalatest" %% "scalatest" % "3.2.14" % Test,

src/main/scala/com/github/swagger/enumeratum/converter/SwaggerEnumeratumModelConverter.scala

Lines changed: 5 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,10 @@ import io.swagger.v3.core.converter._
77
import io.swagger.v3.core.jackson.ModelResolver
88
import io.swagger.v3.core.util.{Json, PrimitiveType}
99
import io.swagger.v3.oas.annotations.Parameter
10-
import io.swagger.v3.oas.annotations.media.Schema.{AccessMode, RequiredMode}
11-
import io.swagger.v3.oas.annotations.media.{ArraySchema, Schema => SchemaAnnotation}
10+
import io.swagger.v3.oas.annotations.media.Schema.AccessMode
11+
import io.swagger.v3.oas.annotations.media.{Schema => SchemaAnnotation}
1212
import io.swagger.v3.oas.models.media.Schema
1313

14-
import java.lang.annotation.Annotation
15-
1614
class SwaggerEnumeratumModelConverter extends ModelResolver(Json.mapper()) {
1715
private val enumEntryClass = classOf[EnumEntry]
1816

@@ -66,14 +64,14 @@ class SwaggerEnumeratumModelConverter extends ModelResolver(Json.mapper()) {
6664
private def isEnum(cls: Class[_]): Boolean = enumEntryClass.isAssignableFrom(cls)
6765

6866
private def getValues(cls: Class[_]): Seq[String] = {
69-
val enum = Class.forName(cls.getName + "$").getField("MODULE$").get(null).asInstanceOf[Enum[EnumEntry]]
70-
enum.values.map(_.entryName)
67+
val enumEntry = Class.forName(cls.getName + "$").getField("MODULE$").get(null).asInstanceOf[Enum[EnumEntry]]
68+
enumEntry.values.map(_.entryName)
7169
}
7270

7371
private def setRequired(annotatedType: AnnotatedType): Unit = annotatedType match {
7472
case _: AnnotatedTypeForOption => // not required
7573
case _ => {
76-
val required = getRequiredSettings(annotatedType).headOption.getOrElse(true)
74+
val required = SwaggerScalaModelConverter.getRequiredSettings(annotatedType).headOption.getOrElse(true)
7775
if (required) {
7876
Option(annotatedType.getParent).foreach { parent =>
7977
Option(annotatedType.getPropertyName).foreach { n =>
@@ -84,48 +82,6 @@ class SwaggerEnumeratumModelConverter extends ModelResolver(Json.mapper()) {
8482
}
8583
}
8684

87-
private def getRequiredSettings(annotatedType: AnnotatedType): Seq[Boolean] = annotatedType match {
88-
case _: AnnotatedTypeForOption => Seq.empty
89-
case _ => getRequiredSettings(nullSafeList(annotatedType.getCtxAnnotations))
90-
}
91-
92-
private def getRequiredSettings(annotations: Seq[Annotation]): Seq[Boolean] = {
93-
val flags = annotations.collect {
94-
case p: Parameter => if (p.required()) RequiredMode.REQUIRED else RequiredMode.NOT_REQUIRED
95-
case s: SchemaAnnotation => {
96-
if (s.requiredMode() == RequiredMode.AUTO) {
97-
if (s.required()) {
98-
RequiredMode.REQUIRED
99-
} else if (SwaggerScalaModelConverter.isRequiredBasedOnAnnotation) {
100-
RequiredMode.NOT_REQUIRED
101-
} else {
102-
RequiredMode.AUTO
103-
}
104-
} else {
105-
s.requiredMode()
106-
}
107-
}
108-
case a: ArraySchema => {
109-
if (a.arraySchema().requiredMode() == RequiredMode.AUTO) {
110-
if (a.arraySchema().required()) {
111-
RequiredMode.REQUIRED
112-
} else if (SwaggerScalaModelConverter.isRequiredBasedOnAnnotation) {
113-
RequiredMode.NOT_REQUIRED
114-
} else {
115-
RequiredMode.AUTO
116-
}
117-
} else {
118-
a.arraySchema().requiredMode()
119-
}
120-
}
121-
}
122-
flags.flatMap {
123-
case RequiredMode.REQUIRED => Some(true)
124-
case RequiredMode.NOT_REQUIRED => Some(false)
125-
case _ => None
126-
}
127-
}
128-
12985
private def nullSafeList[T](array: Array[T]): List[T] = Option(array) match {
13086
case None => List.empty[T]
13187
case Some(arr) => arr.toList

0 commit comments

Comments
 (0)