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" 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") javacOptions ++= Seq("-target", "1.6", "-source", "1.6", "-Xlint:unchecked", "-Xlint:deprecation")

View File

@ -27,9 +27,13 @@ class BasicScalaGenerator extends BasicGenerator {
"Int", "Int",
"String", "String",
"Long", "Long",
"Short",
"Char",
"Byte",
"Float", "Float",
"Double", "Double",
"Boolean", "Boolean",
"AnyRef",
"Any") "Any")
override def typeMapping = Map( override def typeMapping = Map(
@ -37,11 +41,15 @@ class BasicScalaGenerator extends BasicGenerator {
"boolean" -> "Boolean", "boolean" -> "Boolean",
"string" -> "String", "string" -> "String",
"int" -> "Int", "int" -> "Int",
"long" -> "Long",
"float" -> "Float", "float" -> "Float",
"byte" -> "Byte",
"short" -> "Short",
"char" -> "Char",
"long" -> "Long", "long" -> "Long",
"double" -> "Double", "double" -> "Double",
"file" -> "File", "object" -> "Any",
"object" -> "Any") "file" -> "File")
// template used for models // template used for models
modelTemplateFiles += "model.mustache" -> ".scala" modelTemplateFiles += "model.mustache" -> ".scala"
@ -56,7 +64,47 @@ class BasicScalaGenerator extends BasicGenerator {
override def destinationDir = "generated-code/scala/src/main/scala" override def destinationDir = "generated-code/scala/src/main/scala"
// reserved words which need special quoting // 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 // import/require statements for specific datatypes
override def importMapping = Map( override def importMapping = Map(

View File

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