@@ -209,7 +209,7 @@ class SwaggerScalaModelConverter extends ModelResolver(SwaggerScalaModelConverte
209209 schemaProperties.get(propertyName).foreach { property =>
210210 Option (PrimitiveType .fromType(erasedType)).foreach { primitiveType =>
211211 if (isOptional) {
212- schema.addProperty(propertyName, correctSchema (property, primitiveType))
212+ schema.addProperty(propertyName, tryCorrectSchema (property, primitiveType))
213213 }
214214 if (isIterable(propertyClass) && ! isMap(propertyClass)) {
215215 schema.addProperty(propertyName, updateTypeOnItemsSchema(primitiveType, property))
@@ -288,23 +288,26 @@ class SwaggerScalaModelConverter extends ModelResolver(SwaggerScalaModelConverte
288288 }
289289
290290 private def updateTypeOnItemsSchema (primitiveType : PrimitiveType , propertySchema : Schema [_]) = {
291- val updatedSchema = correctSchema (propertySchema.getItems, primitiveType)
291+ val updatedSchema = tryCorrectSchema (propertySchema.getItems, primitiveType)
292292 propertySchema.setItems(updatedSchema)
293293 propertySchema
294294 }
295295
296- private def correctSchema (itemSchema : Schema [_], primitiveType : PrimitiveType ) = {
297- val primitiveProperty = primitiveType.createProperty()
298- val propAsString = objectMapper.writeValueAsString(itemSchema)
299- val correctedSchema = objectMapper.readValue(propAsString, primitiveProperty.getClass)
300- correctedSchema.setType(primitiveProperty.getType)
301- Option (itemSchema.getFormat) match {
302- case Some (_) =>
303- case _ => correctedSchema.setFormat(primitiveProperty.getFormat)
304- }
305- correctedSchema
296+ private [converter] def tryCorrectSchema (itemSchema : Schema [_], primitiveType : PrimitiveType ): Schema [_] = {
297+ Try {
298+ val primitiveProperty = primitiveType.createProperty()
299+ val propAsString = objectMapper.writeValueAsString(itemSchema)
300+ val correctedSchema = objectMapper.readValue(propAsString, primitiveProperty.getClass)
301+ correctedSchema.setType(primitiveProperty.getType)
302+ Option (itemSchema.getFormat) match {
303+ case Some (_) =>
304+ case _ => correctedSchema.setFormat(primitiveProperty.getFormat)
305+ }
306+ correctedSchema
307+ }.toOption.getOrElse(itemSchema)
306308 }
307309
310+
308311 private def getRequiredSettings (annotatedType : AnnotatedType ): Seq [Boolean ] = annotatedType match {
309312 case _ : AnnotatedTypeForOption => Seq .empty
310313 case _ => getRequiredSettings(nullSafeSeq(annotatedType.getCtxAnnotations))
0 commit comments