@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.{JavaType, ObjectMapper}
5
5
import com .fasterxml .jackson .module .scala .introspect .{BeanIntrospector , PropertyDescriptor }
6
6
import com .fasterxml .jackson .module .scala .util .ClassW
7
7
import com .fasterxml .jackson .module .scala .{DefaultScalaModule , JsonScalaEnumeration }
8
+ import com .github .swagger .scala .converter .SwaggerScalaModelConverter .nullSafeSeq
8
9
import io .swagger .v3 .core .converter ._
9
10
import io .swagger .v3 .core .jackson .ModelResolver
10
11
import io .swagger .v3 .core .util .{Json , PrimitiveType }
@@ -233,6 +234,20 @@ class SwaggerScalaModelConverter extends ModelResolver(SwaggerScalaModelConverte
233
234
val classOption : Option [Class [_]] = if (s.implementation() == VoidClass ) None else Option (s.implementation())
234
235
classOption
235
236
}
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
+ }
236
251
val maybeDefault = property.param.flatMap(_.defaultValue)
237
252
val schemaDefaultValue = schemaOverride.flatMap { s =>
238
253
Option (s.defaultValue()).flatMap(str => if (str.isEmpty) None else Some (str))
@@ -260,7 +275,8 @@ class SwaggerScalaModelConverter extends ModelResolver(SwaggerScalaModelConverte
260
275
}
261
276
}
262
277
263
- if (schemaProperties.nonEmpty && schemaOverrideClass.isEmpty) {
278
+ val overrideClass = schemaOverrideClass.orElse(arraySchemaOverrideClass)
279
+ if (schemaProperties.nonEmpty && overrideClass.isEmpty) {
264
280
erasedProperties.get(propertyName).foreach { erasedType =>
265
281
schemaProperties.get(propertyName).foreach { property =>
266
282
Option (PrimitiveType .fromType(erasedType)).foreach { primitiveType =>
0 commit comments