forked from loafle/openapi-generator-original
updated to scalatra 2.2.0
This commit is contained in:
parent
184a9d0d5c
commit
f2f33b98f7
@ -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:
|
||||
|
@ -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"),
|
||||
|
@ -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 := <dependencies>
|
||||
<exclude module="slf4j-log4j12"/>
|
||||
<exclude module="grizzled-slf4j_2.9.1"/>
|
||||
<exclude module="jsr311-api" />
|
||||
</dependencies>
|
||||
|
||||
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
|
||||
{
|
||||
case "about.html" => MergeStrategy.discard
|
||||
case x => old(x)
|
||||
}
|
||||
}
|
||||
|
||||
ivyXML := <dependencies><exclude module="slf4j-log4j12"/></dependencies>
|
||||
|
@ -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"
|
||||
|
@ -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 {
|
||||
|
@ -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" -> "*")
|
||||
}
|
||||
|
@ -7,14 +7,12 @@ 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 JacksonJsonSupport
|
||||
with SwaggerSupport {
|
||||
protected implicit val jsonFormats: Formats = DefaultFormats
|
||||
|
||||
@ -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"))
|
||||
)) {
|
||||
|
||||
|
@ -7,14 +7,12 @@ 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 JacksonJsonSupport
|
||||
with SwaggerSupport {
|
||||
protected implicit val jsonFormats: Formats = DefaultFormats
|
||||
|
||||
|
@ -7,14 +7,12 @@ 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 JacksonJsonSupport
|
||||
with SwaggerSupport {
|
||||
protected implicit val jsonFormats: Formats = DefaultFormats
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
<listener>
|
||||
@ -8,13 +9,9 @@
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>default</servlet-name>
|
||||
<url-pattern>/img/*</url-pattern>
|
||||
<url-pattern>/*.html</url-pattern>
|
||||
<url-pattern>/css/*</url-pattern>
|
||||
<url-pattern>/js/*</url-pattern>
|
||||
<url-pattern>/assets/*</url-pattern>
|
||||
<url-pattern>/js/*.js</url-pattern>
|
||||
<url-pattern>/images/*</url-pattern>
|
||||
</servlet-mapping>
|
||||
<context-param>
|
||||
<param-name>org.scalatra.LifeCycle</param-name>
|
||||
<param-value>com.wordnik.swagger.sample.Scalatra</param-value>
|
||||
</context-param>
|
||||
</web-app>
|
||||
|
32
samples/server-generator/scalatra/templates/JettyMain.scala
Normal file
32
samples/server-generator/scalatra/templates/JettyMain.scala
Normal file
@ -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()
|
||||
}
|
||||
}
|
@ -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" -> "*")
|
||||
}
|
||||
|
@ -8,14 +8,12 @@ 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 JacksonJsonSupport
|
||||
with SwaggerSupport {
|
||||
protected implicit val jsonFormats: Formats = DefaultFormats
|
||||
|
||||
|
@ -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 := <dependencies>
|
||||
<exclude module="slf4j-log4j12"/>
|
||||
<exclude module="grizzled-slf4j_2.9.1"/>
|
||||
<exclude module="jsr311-api" />
|
||||
</dependencies>
|
||||
|
||||
mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
|
||||
{
|
||||
case "about.html" => MergeStrategy.discard
|
||||
case x => old(x)
|
||||
}
|
||||
}
|
||||
|
||||
ivyXML := <dependencies><exclude module="slf4j-log4j12"/></dependencies>
|
||||
|
@ -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"
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
|
||||
version="3.0">
|
||||
<listener>
|
||||
@ -8,13 +9,9 @@
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>default</servlet-name>
|
||||
<url-pattern>/img/*</url-pattern>
|
||||
<url-pattern>/*.html</url-pattern>
|
||||
<url-pattern>/css/*</url-pattern>
|
||||
<url-pattern>/js/*</url-pattern>
|
||||
<url-pattern>/assets/*</url-pattern>
|
||||
<url-pattern>/js/*.js</url-pattern>
|
||||
<url-pattern>/images/*</url-pattern>
|
||||
</servlet-mapping>
|
||||
<context-param>
|
||||
<param-name>org.scalatra.LifeCycle</param-name>
|
||||
<param-value>com.wordnik.swagger.sample.Scalatra</param-value>
|
||||
</context-param>
|
||||
</web-app>
|
||||
|
Loading…
x
Reference in New Issue
Block a user