fix set generation in async client

This commit is contained in:
Ivan Porto Carrero 2013-09-05 21:58:24 -07:00
parent 7056081605
commit 4f95550977
3 changed files with 72 additions and 17 deletions

View File

@ -5,9 +5,9 @@ organization := "com.wordnik"
name := "swagger-codegen"
version := "2.0.9-WN11"
version := "2.0.9-SNAPSHOT"
scalaVersion := "2.10.0"
scalaVersion := "2.9.1"
javacOptions ++= Seq("-target", "1.6", "-source", "1.6", "-Xlint:unchecked", "-Xlint:deprecation")

View File

@ -27,9 +27,13 @@ class BasicScalaGenerator extends BasicGenerator {
"Int",
"String",
"Long",
"Short",
"Char",
"Byte",
"Float",
"Double",
"Boolean",
"AnyRef",
"Any")
override def typeMapping = Map(
@ -37,11 +41,15 @@ class BasicScalaGenerator extends BasicGenerator {
"boolean" -> "Boolean",
"string" -> "String",
"int" -> "Int",
"long" -> "Long",
"float" -> "Float",
"byte" -> "Byte",
"short" -> "Short",
"char" -> "Char",
"long" -> "Long",
"double" -> "Double",
"file" -> "File",
"object" -> "Any")
"object" -> "Any",
"file" -> "File")
// template used for models
modelTemplateFiles += "model.mustache" -> ".scala"
@ -56,7 +64,47 @@ class BasicScalaGenerator extends BasicGenerator {
override def destinationDir = "generated-code/scala/src/main/scala"
// reserved words which need special quoting
override def reservedWords = Set("type", "package", "match", "object")
override def reservedWords =
Set(
"abstract",
"case",
"catch",
"class",
"def",
"do",
"else",
"extends",
"false",
"final",
"finally",
"for",
"forSome",
"if",
"implicit",
"import",
"lazy",
"match",
"new",
"null",
"object",
"override",
"package",
"private",
"protected",
"return",
"sealed",
"super",
"this",
"throw",
"trait",
"try",
"true",
"type",
"val",
"var",
"while",
"with",
"yield")
// import/require statements for specific datatypes
override def importMapping = Map(

View File

@ -261,7 +261,10 @@ class ScalaAsyncClientGenerator(cfg: SwaggerGenConfig) extends BasicGenerator {
"while",
"with",
"yield")
override val importMapping = cfg.defaultImports
override val importMapping = Map(
"Date" -> "java.util.Date",
"File" -> "java.io.File"
) ++ cfg.defaultImports
override val typeMapping = Map(
"array" -> "List",
"boolean" -> "Boolean",
@ -502,7 +505,7 @@ class ScalaAsyncClientGenerator(cfg: SwaggerGenConfig) extends BasicGenerator {
case n: Int => {
if (dt.substring(0, n).toLowerCase == "array") {
val dtt = dt.substring(n + 1, dt.length - 1)
s"List[${typeMapping.getOrElse(dtt, dtt)}]"
"List[%s]".format(typeMapping.getOrElse(dtt, dtt))
} else dt
}
}
@ -511,20 +514,24 @@ class ScalaAsyncClientGenerator(cfg: SwaggerGenConfig) extends BasicGenerator {
override def toDeclaration(obj: ModelProperty): (String, String) = {
obj.`type` match {
case "Array" | "array" => {
val inner = {
obj.items match {
case Some(items) => items.ref.getOrElse(items.`type`)
case _ => throw new Exception("no inner type defined")
}
}
val e = "List[%s]" format toDeclaredType(inner)
(e, toDefaultValue(inner, obj))
}
case "Array" | "array" => makeContainerType(obj, "List")
case "Set" | "set" => makeContainerType(obj, "Set")
case e: String => (toDeclaredType(e), toDefaultValue(e, obj))
}
}
private def makeContainerType(obj: ModelProperty, container: String): (String, String) = {
val inner = {
obj.items match {
case Some(items) => items.ref.getOrElse(items.`type`)
case _ => throw new Exception("no inner type defined")
}
}
val e = "%s[%s]" format (container, toDeclaredType(inner))
(e, toDefaultValue(inner, obj))
}
// escape keywords
override def escapeReservedWord(word: String) = "`" + word + "`"