diff --git a/build.sbt b/build.sbt index e3fe4896955..7eac80918d7 100644 --- a/build.sbt +++ b/build.sbt @@ -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") diff --git a/src/main/scala/com/wordnik/swagger/codegen/BasicScalaGenerator.scala b/src/main/scala/com/wordnik/swagger/codegen/BasicScalaGenerator.scala index 6ffc3b270bb..a3dbcd1681a 100644 --- a/src/main/scala/com/wordnik/swagger/codegen/BasicScalaGenerator.scala +++ b/src/main/scala/com/wordnik/swagger/codegen/BasicScalaGenerator.scala @@ -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( diff --git a/src/main/scala/com/wordnik/swagger/codegen/ScalaAsyncClientGenerator.scala b/src/main/scala/com/wordnik/swagger/codegen/ScalaAsyncClientGenerator.scala index 74b9cc7ed06..bb10988552f 100644 --- a/src/main/scala/com/wordnik/swagger/codegen/ScalaAsyncClientGenerator.scala +++ b/src/main/scala/com/wordnik/swagger/codegen/ScalaAsyncClientGenerator.scala @@ -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 + "`"