From a140ea2b9d23883b870d562c6d53be3424d1f05e Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Thu, 12 Sep 2013 13:41:53 -0700 Subject: [PATCH] fixed response type with array of simple types --- .../model/SwaggerModelSerializer.scala | 38 +++++++++++++------ 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/src/main/scala/com/wordnik/swagger/model/SwaggerModelSerializer.scala b/src/main/scala/com/wordnik/swagger/model/SwaggerModelSerializer.scala index e8db358ddc1..b7d98cf2947 100644 --- a/src/main/scala/com/wordnik/swagger/model/SwaggerModelSerializer.scala +++ b/src/main/scala/com/wordnik/swagger/model/SwaggerModelSerializer.scala @@ -237,19 +237,35 @@ object SwaggerSerializers { class OperationSerializer extends CustomSerializer[Operation](implicit formats => ({ case json => - val responseClass = (json \ "items") match { - case e: JObject => { - val inner = { - (e \ "type").extractOrElse({ - (e \ "$ref").extract[String] - }) + val t = SwaggerSerializers.jsonSchemaTypeMap.getOrElse( + ((json \ "type").extractOrElse(""), (json \ "format").extractOrElse("")) + , (json \ "type").extractOrElse("")) + + val inner = { + val items = new scala.collection.mutable.HashSet[String] + val map = new scala.collection.mutable.HashMap[String, String] + (json \ "items") match { + case JObject(e) => { + for(a <- e) { + a._2 match { + case e: JString => map += a._1 -> e.s + case _ => + } + } + val `type` = map.getOrElse("type", "") + val format = map.getOrElse("format", "") + if(map.contains("$ref")) { + Some(map("$ref")) + } + else + Option(jsonSchemaTypeMap.getOrElse((`type`,format), `type`)) } - "%s[%s]".format((json \ "type").extract[String], inner) + case _ => None } - case _ => (json \ "type").extractOrElse({ - !!(json, OPERATION, "responseClass", "missing required field", ERROR) - "" - }) + } + val responseClass = inner match { + case Some(a) => "%s[%s]".format(t, a) + case _ => t } Operation(