@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.{JavaType, ObjectMapper}
55import com .fasterxml .jackson .module .scala .introspect .{BeanIntrospector , PropertyDescriptor }
66import com .fasterxml .jackson .module .scala .util .ClassW
77import com .fasterxml .jackson .module .scala .{DefaultScalaModule , JsonScalaEnumeration }
8+ import com .github .swagger .scala .converter .SwaggerScalaModelConverter .nullSafeSeq
89import io .swagger .v3 .core .converter ._
910import io .swagger .v3 .core .jackson .ModelResolver
1011import io .swagger .v3 .core .util .{Json , PrimitiveType }
@@ -233,6 +234,20 @@ class SwaggerScalaModelConverter extends ModelResolver(SwaggerScalaModelConverte
233234 val classOption : Option [Class [_]] = if (s.implementation() == VoidClass ) None else Option (s.implementation())
234235 classOption
235236 }
237+ val arraySchemaOverrideClass = if (schemaOverride.nonEmpty) {
238+ None
239+ } else {
240+ val arraySchemaOverride = propertyAnnotations.collectFirst { case as : ArraySchemaAnnotation => as }
241+ arraySchemaOverride.flatMap { as =>
242+ val itemSchema = if (as.items() == null || as.items().implementation() == VoidClass ) as.schema() else as.items()
243+ val classOption : Option [Class [_]] = if (itemSchema == null || itemSchema.implementation() == VoidClass ) {
244+ None
245+ } else {
246+ Option (itemSchema.implementation())
247+ }
248+ classOption
249+ }
250+ }
236251 val maybeDefault = property.param.flatMap(_.defaultValue)
237252 val schemaDefaultValue = schemaOverride.flatMap { s =>
238253 Option (s.defaultValue()).flatMap(str => if (str.isEmpty) None else Some (str))
@@ -260,7 +275,8 @@ class SwaggerScalaModelConverter extends ModelResolver(SwaggerScalaModelConverte
260275 }
261276 }
262277
263- if (schemaProperties.nonEmpty && schemaOverrideClass.isEmpty) {
278+ val overrideClass = schemaOverrideClass.orElse(arraySchemaOverrideClass)
279+ if (schemaProperties.nonEmpty && overrideClass.isEmpty) {
264280 erasedProperties.get(propertyName).foreach { erasedType =>
265281 schemaProperties.get(propertyName).foreach { property =>
266282 Option (PrimitiveType .fromType(erasedType)).foreach { primitiveType =>
0 commit comments