From f2f33b98f760822961b5efc90f8a1e526a0e7eed Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 20 Mar 2013 21:35:41 -0700 Subject: [PATCH] updated to scalatra 2.2.0 --- samples/server-generator/scalatra/README.md | 2 +- .../scalatra/ScalatraServerGenerator.scala | 1 + .../scalatra/output/build.sbt | 60 ++++++++++++++----- .../scalatra/output/project/plugins.sbt | 2 + .../src/main/scala/ScalatraBootstrap.scala | 2 +- .../output/src/main/scala/ServletApp.scala | 2 - .../output/src/main/scala/apis/PetApi.scala | 10 ++-- .../output/src/main/scala/apis/StoreApi.scala | 8 +-- .../output/src/main/scala/apis/UserApi.scala | 8 +-- .../scala/com/wordnik/client/model/Pet.scala | 2 +- .../scala/com/wordnik/client/model/User.scala | 2 +- .../output/src/main/webapp/WEB-INF/web.xml | 13 ++-- .../scalatra/templates/JettyMain.scala | 32 ++++++++++ .../scalatra/templates/ServletApp.mustache | 2 - .../scalatra/templates/api.mustache | 8 +-- .../scalatra/templates/build.sbt | 60 ++++++++++++++----- .../scalatra/templates/project/plugins.sbt | 2 + .../scalatra/templates/web.xml | 13 ++-- 18 files changed, 152 insertions(+), 77 deletions(-) create mode 100644 samples/server-generator/scalatra/templates/JettyMain.scala diff --git a/samples/server-generator/scalatra/README.md b/samples/server-generator/scalatra/README.md index 39361b3ab0c..fb53f59aed6 100644 --- a/samples/server-generator/scalatra/README.md +++ b/samples/server-generator/scalatra/README.md @@ -23,7 +23,7 @@ mvn package You can now generate a server from any valid[**](https://github.com/wordnik/swagger-codegen/blob/master/README.md#validating-your-swagger-spec) swagger spec: ``` -./bin/runscala.sh samples/server-generator/scalatra/ScalatraServerGenerator.scala http://petstore.swagger.wordnik.com/api/resources.json special-key +./bin/runscala.sh samples/server-generator/scalatra/ScalatraServerGenerator.scala http://petstore.swagger.wordnik.com/api/api-docs.json special-key ``` After executing this script, you will have an output directory with the server-generated files: diff --git a/samples/server-generator/scalatra/ScalatraServerGenerator.scala b/samples/server-generator/scalatra/ScalatraServerGenerator.scala index 5d83670ae56..7d4d44d46f5 100644 --- a/samples/server-generator/scalatra/ScalatraServerGenerator.scala +++ b/samples/server-generator/scalatra/ScalatraServerGenerator.scala @@ -42,6 +42,7 @@ object ScalatraServerGenerator extends BasicScalaGenerator { ("README.mustache", outputFolder, "README.md"), ("build.sbt", outputFolder, "build.sbt"), ("web.xml", outputFolder + "/src/main/webapp/WEB-INF", "web.xml"), + ("JettyMain.scala", outputFolder + "/src/main/scala", "JettyMain.scala"), ("Bootstrap.mustache", destinationDir, "ScalatraBootstrap.scala"), ("ServletApp.mustache", destinationDir, "ServletApp.scala"), ("project/build.properties", outputFolder, "project/build.properties"), diff --git a/samples/server-generator/scalatra/output/build.sbt b/samples/server-generator/scalatra/output/build.sbt index 0af07c030d5..b9175b22c98 100644 --- a/samples/server-generator/scalatra/output/build.sbt +++ b/samples/server-generator/scalatra/output/build.sbt @@ -1,30 +1,58 @@ +import AssemblyKeys._ // put this at the top of the file import com.github.siasia.PluginKeys._ -organization := "com.wordnik" +assemblySettings -name := "swagger-scalatra-server" +organization := "org.eatbacon" + +seq(webSettings :_*) + +mainClass in assembly := Some("JettyMain") + +name := "sfth" version := "0.1.0-SNAPSHOT" scalaVersion := "2.9.2" -seq(webSettings :_*) - libraryDependencies ++= Seq( - "org.scalatra" % "scalatra" % "2.2.0-SNAPSHOT", - "org.scalatra" % "scalatra-scalate" % "2.2.0-SNAPSHOT", - "org.scalatra" % "scalatra-specs2" % "2.2.0-SNAPSHOT" % "test", - "org.scalatra" % "scalatra-swagger" % "2.2.0-SNAPSHOT", - "org.scalatra" % "scalatra-json" % "2.2.0-SNAPSHOT", - "org.json4s" %% "json4s-jackson" % "3.0.0-SNAPSHOT", - "com.wordnik" % "swagger-core_2.9.1" % "1.1.1-SNAPSHOT", - "ch.qos.logback" % "logback-classic" % "1.0.6" % "runtime", - "org.eclipse.jetty" % "jetty-webapp" % "8.1.5.v20120716" % "container", - "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar"))) + "org.scalatest" %% "scalatest" % "1.6.1" % "test", + "org.scalatra" % "scalatra" % "2.2.0", + "org.scalatra" % "scalatra-auth" % "2.2.0", + "org.scalatra" % "scalatra-scalate" % "2.2.0", + "org.scalatra" % "scalatra-json" % "2.2.0", + "org.scalatra" % "scalatra-fileupload" % "2.2.0", + "org.scalatra" % "scalatra-swagger" % "2.2.0", + "org.scalatra" % "scalatra-swagger-ext" % "2.2.0", + "org.scalatra" % "scalatra-slf4j" % "2.2.0", + "org.scalatra" % "scalatra-specs2" % "2.2.0" % "test", + "org.json4s" %% "json4s-jackson" % "3.1.0", + "org.json4s" %% "json4s-ext" % "3.1.0", + "commons-codec" % "commons-codec" % "1.7", + "net.databinder.dispatch" %% "dispatch-core" % "0.9.5", + "net.databinder.dispatch" %% "json4s-jackson" % "0.9.5", + "com.typesafe.akka" % "akka-actor" % "2.0.2", + "org.eclipse.jetty" % "jetty-server" % "8.1.7.v20120910" % "container;provided", + "org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container;provided", + "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;compile;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar")) +) +resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository" resolvers += "Sonatype OSS Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/" -apps in container.Configuration <<= (deployment in Compile) map (d => Seq("/api" -> d)) +resolvers += "Sonatype OSS Releases" at "http://oss.sonatype.org/content/repositories/releases/" + +ivyXML := + + + + + +mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) => + { + case "about.html" => MergeStrategy.discard + case x => old(x) + } +} -ivyXML := diff --git a/samples/server-generator/scalatra/output/project/plugins.sbt b/samples/server-generator/scalatra/output/project/plugins.sbt index b0232c5ec1f..713b7f3e993 100644 --- a/samples/server-generator/scalatra/output/project/plugins.sbt +++ b/samples/server-generator/scalatra/output/project/plugins.sbt @@ -1,3 +1,5 @@ +addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.4") + libraryDependencies <+= sbtVersion(v => v match { case "0.11.0" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.0-0.2.8" case "0.11.1" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.1-0.2.10" diff --git a/samples/server-generator/scalatra/output/src/main/scala/ScalatraBootstrap.scala b/samples/server-generator/scalatra/output/src/main/scala/ScalatraBootstrap.scala index b136c231949..750e203503d 100644 --- a/samples/server-generator/scalatra/output/src/main/scala/ScalatraBootstrap.scala +++ b/samples/server-generator/scalatra/output/src/main/scala/ScalatraBootstrap.scala @@ -8,8 +8,8 @@ class ScalatraBootstrap extends LifeCycle { override def init(context: ServletContext) { try { - context mount (new StoreApi, "/store/*") context mount (new PetApi, "/pet/*") + context mount (new StoreApi, "/store/*") context mount (new UserApi, "/user/*") context mount (new ResourcesApp, "/*") } catch { diff --git a/samples/server-generator/scalatra/output/src/main/scala/ServletApp.scala b/samples/server-generator/scalatra/output/src/main/scala/ServletApp.scala index 61fc6cc3e1e..236e32269ea 100644 --- a/samples/server-generator/scalatra/output/src/main/scala/ServletApp.scala +++ b/samples/server-generator/scalatra/output/src/main/scala/ServletApp.scala @@ -6,8 +6,6 @@ import org.scalatra.ScalatraServlet import org.json4s.{DefaultFormats, Formats} class ResourcesApp(implicit val swagger: Swagger) extends ScalatraServlet with JacksonSwaggerBase { - protected implicit val jsonFormats: Formats = DefaultFormats - before() { response.headers += ("Access-Control-Allow-Origin" -> "*") } diff --git a/samples/server-generator/scalatra/output/src/main/scala/apis/PetApi.scala b/samples/server-generator/scalatra/output/src/main/scala/apis/PetApi.scala index 3de2d5ddf16..74deaade67d 100644 --- a/samples/server-generator/scalatra/output/src/main/scala/apis/PetApi.scala +++ b/samples/server-generator/scalatra/output/src/main/scala/apis/PetApi.scala @@ -7,15 +7,13 @@ import org.scalatra.{ TypedParamSupport, ScalatraServlet } import org.scalatra.swagger._ import org.json4s._ import org.json4s.JsonDSL._ -import org.scalatra.json.{JValueResult, NativeJsonSupport} +import org.scalatra.json.{ JValueResult, JacksonJsonSupport } import scala.collection.JavaConverters._ class PetApi (implicit val swagger: Swagger) extends ScalatraServlet - with TypedParamSupport - with NativeJsonSupport - with JValueResult - with SwaggerSupport { + with JacksonJsonSupport + with SwaggerSupport { protected implicit val jsonFormats: Formats = DefaultFormats protected val applicationDescription: String = "PetApi" @@ -96,7 +94,7 @@ class PetApi (implicit val swagger: Swagger) extends ScalatraServlet paramType = ParamType.Query, required = true, allowMultiple = true, - allowableValues = AllowableValues("available","pending","sold"),defaultValue = Some("available"), + defaultValue = Some("available"), dataType = DataType("String")) )) { diff --git a/samples/server-generator/scalatra/output/src/main/scala/apis/StoreApi.scala b/samples/server-generator/scalatra/output/src/main/scala/apis/StoreApi.scala index 62517da9fff..7cf71cf8ec3 100644 --- a/samples/server-generator/scalatra/output/src/main/scala/apis/StoreApi.scala +++ b/samples/server-generator/scalatra/output/src/main/scala/apis/StoreApi.scala @@ -7,15 +7,13 @@ import org.scalatra.{ TypedParamSupport, ScalatraServlet } import org.scalatra.swagger._ import org.json4s._ import org.json4s.JsonDSL._ -import org.scalatra.json.{JValueResult, NativeJsonSupport} +import org.scalatra.json.{ JValueResult, JacksonJsonSupport } import scala.collection.JavaConverters._ class StoreApi (implicit val swagger: Swagger) extends ScalatraServlet - with TypedParamSupport - with NativeJsonSupport - with JValueResult - with SwaggerSupport { + with JacksonJsonSupport + with SwaggerSupport { protected implicit val jsonFormats: Formats = DefaultFormats protected val applicationDescription: String = "StoreApi" diff --git a/samples/server-generator/scalatra/output/src/main/scala/apis/UserApi.scala b/samples/server-generator/scalatra/output/src/main/scala/apis/UserApi.scala index 50f175cbd6b..1770b579f27 100644 --- a/samples/server-generator/scalatra/output/src/main/scala/apis/UserApi.scala +++ b/samples/server-generator/scalatra/output/src/main/scala/apis/UserApi.scala @@ -7,15 +7,13 @@ import org.scalatra.{ TypedParamSupport, ScalatraServlet } import org.scalatra.swagger._ import org.json4s._ import org.json4s.JsonDSL._ -import org.scalatra.json.{JValueResult, NativeJsonSupport} +import org.scalatra.json.{ JValueResult, JacksonJsonSupport } import scala.collection.JavaConverters._ class UserApi (implicit val swagger: Swagger) extends ScalatraServlet - with TypedParamSupport - with NativeJsonSupport - with JValueResult - with SwaggerSupport { + with JacksonJsonSupport + with SwaggerSupport { protected implicit val jsonFormats: Formats = DefaultFormats protected val applicationDescription: String = "UserApi" diff --git a/samples/server-generator/scalatra/output/src/main/scala/com/wordnik/client/model/Pet.scala b/samples/server-generator/scalatra/output/src/main/scala/com/wordnik/client/model/Pet.scala index 31e4a0ae565..e208e15a0ab 100644 --- a/samples/server-generator/scalatra/output/src/main/scala/com/wordnik/client/model/Pet.scala +++ b/samples/server-generator/scalatra/output/src/main/scala/com/wordnik/client/model/Pet.scala @@ -5,8 +5,8 @@ import com.wordnik.client.model.Tag import scala.reflect.BeanProperty case class Pet ( - id: Long, tags: List[Tag], + id: Long, category: Category, /* pet status in the store */ status: String, diff --git a/samples/server-generator/scalatra/output/src/main/scala/com/wordnik/client/model/User.scala b/samples/server-generator/scalatra/output/src/main/scala/com/wordnik/client/model/User.scala index 0373cab3b90..69f5cc4257f 100644 --- a/samples/server-generator/scalatra/output/src/main/scala/com/wordnik/client/model/User.scala +++ b/samples/server-generator/scalatra/output/src/main/scala/com/wordnik/client/model/User.scala @@ -5,8 +5,8 @@ import scala.reflect.BeanProperty case class User ( id: Long, lastName: String, - username: String, phone: String, + username: String, email: String, /* User Status */ userStatus: Int, diff --git a/samples/server-generator/scalatra/output/src/main/webapp/WEB-INF/web.xml b/samples/server-generator/scalatra/output/src/main/webapp/WEB-INF/web.xml index 3ca0bee561c..2a08440458e 100644 --- a/samples/server-generator/scalatra/output/src/main/webapp/WEB-INF/web.xml +++ b/samples/server-generator/scalatra/output/src/main/webapp/WEB-INF/web.xml @@ -1,5 +1,6 @@ - @@ -8,13 +9,9 @@ default - /img/* + /*.html /css/* - /js/* - /assets/* + /js/*.js + /images/* - - org.scalatra.LifeCycle - com.wordnik.swagger.sample.Scalatra - diff --git a/samples/server-generator/scalatra/templates/JettyMain.scala b/samples/server-generator/scalatra/templates/JettyMain.scala new file mode 100644 index 00000000000..ec73dd22816 --- /dev/null +++ b/samples/server-generator/scalatra/templates/JettyMain.scala @@ -0,0 +1,32 @@ +import org.eclipse.jetty.server.nio.SelectChannelConnector +import org.eclipse.jetty.server.{ Server } +import org.eclipse.jetty.server.handler.ContextHandlerCollection +import org.eclipse.jetty.webapp.WebAppContext +import org.eclipse.jetty.servlet.{ DefaultServlet, ServletContextHandler, ServletHolder } + +object JettyMain { + def main(args: Array[String]) = { + val server: Server = new Server + println("starting jetty") + + server setGracefulShutdown 5000 + server setSendServerVersion false + server setSendDateHeader true + server setStopAtShutdown true + + val connector = new SelectChannelConnector + connector setPort sys.env.get("PORT").map(_.toInt).getOrElse(8080) + connector setMaxIdleTime 90000 + server addConnector connector + + val webapp = sys.env.get("PUBLIC") getOrElse "webapp" + val webApp = new WebAppContext + webApp setContextPath "/" + webApp setResourceBase webapp + webApp setDescriptor (webapp+"/WEB-INF/web.xml"); + + server setHandler webApp + + server.start() + } +} \ No newline at end of file diff --git a/samples/server-generator/scalatra/templates/ServletApp.mustache b/samples/server-generator/scalatra/templates/ServletApp.mustache index 0d9fbd01dee..e787698b919 100644 --- a/samples/server-generator/scalatra/templates/ServletApp.mustache +++ b/samples/server-generator/scalatra/templates/ServletApp.mustache @@ -6,8 +6,6 @@ import org.scalatra.ScalatraServlet import org.json4s.{DefaultFormats, Formats} class ResourcesApp(implicit val swagger: Swagger) extends ScalatraServlet with JacksonSwaggerBase { - protected implicit val jsonFormats: Formats = DefaultFormats - before() { response.headers += ("Access-Control-Allow-Origin" -> "*") } diff --git a/samples/server-generator/scalatra/templates/api.mustache b/samples/server-generator/scalatra/templates/api.mustache index d40fd9c86da..1a78a64ad05 100644 --- a/samples/server-generator/scalatra/templates/api.mustache +++ b/samples/server-generator/scalatra/templates/api.mustache @@ -8,15 +8,13 @@ import org.scalatra.{ TypedParamSupport, ScalatraServlet } import org.scalatra.swagger._ import org.json4s._ import org.json4s.JsonDSL._ -import org.scalatra.json.{JValueResult, NativeJsonSupport} +import org.scalatra.json.{ JValueResult, JacksonJsonSupport } import scala.collection.JavaConverters._ class {{className}} (implicit val swagger: Swagger) extends ScalatraServlet - with TypedParamSupport - with NativeJsonSupport - with JValueResult - with SwaggerSupport { + with JacksonJsonSupport + with SwaggerSupport { protected implicit val jsonFormats: Formats = DefaultFormats protected val applicationDescription: String = "{{className}}" diff --git a/samples/server-generator/scalatra/templates/build.sbt b/samples/server-generator/scalatra/templates/build.sbt index ac1b8727dc9..b9175b22c98 100644 --- a/samples/server-generator/scalatra/templates/build.sbt +++ b/samples/server-generator/scalatra/templates/build.sbt @@ -1,30 +1,58 @@ +import AssemblyKeys._ // put this at the top of the file import com.github.siasia.PluginKeys._ -organization := "com.wordnik" +assemblySettings -name := "swagger-scalatra-server" +organization := "org.eatbacon" + +seq(webSettings :_*) + +mainClass in assembly := Some("JettyMain") + +name := "sfth" version := "0.1.0-SNAPSHOT" scalaVersion := "2.9.2" -seq(webSettings :_*) - libraryDependencies ++= Seq( - "org.scalatra" % "scalatra" % "2.2.0-SNAPSHOT", - "org.scalatra" % "scalatra-scalate" % "2.2.0-SNAPSHOT", - "org.scalatra" % "scalatra-specs2" % "2.2.0-SNAPSHOT" % "test", - "org.scalatra" % "scalatra-swagger" % "2.2.0-SNAPSHOT", - "org.scalatra" % "scalatra-json" % "2.2.0-SNAPSHOT", - "org.json4s" %% "json4s-jackson" % "3.0.0", - "com.wordnik" % "swagger-core_2.9.1" % "1.1.1-SNAPSHOT", - "ch.qos.logback" % "logback-classic" % "1.0.6" % "runtime", - "org.eclipse.jetty" % "jetty-webapp" % "8.1.5.v20120716" % "container", - "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar"))) + "org.scalatest" %% "scalatest" % "1.6.1" % "test", + "org.scalatra" % "scalatra" % "2.2.0", + "org.scalatra" % "scalatra-auth" % "2.2.0", + "org.scalatra" % "scalatra-scalate" % "2.2.0", + "org.scalatra" % "scalatra-json" % "2.2.0", + "org.scalatra" % "scalatra-fileupload" % "2.2.0", + "org.scalatra" % "scalatra-swagger" % "2.2.0", + "org.scalatra" % "scalatra-swagger-ext" % "2.2.0", + "org.scalatra" % "scalatra-slf4j" % "2.2.0", + "org.scalatra" % "scalatra-specs2" % "2.2.0" % "test", + "org.json4s" %% "json4s-jackson" % "3.1.0", + "org.json4s" %% "json4s-ext" % "3.1.0", + "commons-codec" % "commons-codec" % "1.7", + "net.databinder.dispatch" %% "dispatch-core" % "0.9.5", + "net.databinder.dispatch" %% "json4s-jackson" % "0.9.5", + "com.typesafe.akka" % "akka-actor" % "2.0.2", + "org.eclipse.jetty" % "jetty-server" % "8.1.7.v20120910" % "container;provided", + "org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container;provided", + "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;compile;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar")) +) +resolvers += "Local Maven Repository" at "file://"+Path.userHome.absolutePath+"/.m2/repository" resolvers += "Sonatype OSS Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/" -apps in container.Configuration <<= (deployment in Compile) map (d => Seq("/api" -> d)) +resolvers += "Sonatype OSS Releases" at "http://oss.sonatype.org/content/repositories/releases/" + +ivyXML := + + + + + +mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) => + { + case "about.html" => MergeStrategy.discard + case x => old(x) + } +} -ivyXML := diff --git a/samples/server-generator/scalatra/templates/project/plugins.sbt b/samples/server-generator/scalatra/templates/project/plugins.sbt index b0232c5ec1f..713b7f3e993 100644 --- a/samples/server-generator/scalatra/templates/project/plugins.sbt +++ b/samples/server-generator/scalatra/templates/project/plugins.sbt @@ -1,3 +1,5 @@ +addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.4") + libraryDependencies <+= sbtVersion(v => v match { case "0.11.0" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.0-0.2.8" case "0.11.1" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.1-0.2.10" diff --git a/samples/server-generator/scalatra/templates/web.xml b/samples/server-generator/scalatra/templates/web.xml index 3ca0bee561c..2a08440458e 100644 --- a/samples/server-generator/scalatra/templates/web.xml +++ b/samples/server-generator/scalatra/templates/web.xml @@ -1,5 +1,6 @@ - @@ -8,13 +9,9 @@ default - /img/* + /*.html /css/* - /js/* - /assets/* + /js/*.js + /images/* - - org.scalatra.LifeCycle - com.wordnik.swagger.sample.Scalatra -