diff --git a/samples/server-generator/scalatra/output/src/main/scala/ServletApp.scala b/samples/server-generator/scalatra/output/src/main/scala/ServletApp.scala new file mode 100644 index 00000000000..f38e9d93c6d --- /dev/null +++ b/samples/server-generator/scalatra/output/src/main/scala/ServletApp.scala @@ -0,0 +1,69 @@ +package com.wordnik.swagger.sample + +import apis._ + +import com.wordnik.swagger.core.SwaggerSpec + +import org.scalatra.{ ScalatraServlet } +import org.scalatra.swagger.{ Swagger, SwaggerBase } + +import org.eclipse.jetty.server.nio.SelectChannelConnector +import org.eclipse.jetty.server.Server +import org.eclipse.jetty.server.handler.ContextHandlerCollection +import org.eclipse.jetty.servlet.{ ServletContextHandler, ServletHolder } + +object ServletApp extends App { + val server = new Server + implicit val swagger = new SwaggerApp + + server setGracefulShutdown 5000 + server setSendServerVersion false + server setSendDateHeader true + server setStopAtShutdown true + + val connector = new SelectChannelConnector + connector setPort 8002 + connector setMaxIdleTime 90000 + + server addConnector connector + + val apiServlets = new ServletContextHandler(ServletContextHandler.SESSIONS) + apiServlets setContextPath "/api" + + val handlers = new ContextHandlerCollection + handlers addHandler apiServlets + + val petServlet = new PetApi + swagger register ("pet", "/pet", "", petServlet) + apiServlets addServlet (new ServletHolder(petServlet), "/pet/*") + apiServlets addServlet (new ServletHolder(new ResourcesApp), "/*") + + val storeServlet = new StoreApi + swagger register ("store", "/store", "", storeServlet) + apiServlets addServlet (new ServletHolder(storeServlet), "/pet/*") + apiServlets addServlet (new ServletHolder(new ResourcesApp), "/*") + + val userServlet = new UserApi + swagger register ("user", "/user", "", userServlet) + apiServlets addServlet (new ServletHolder(userServlet), "/pet/*") + apiServlets addServlet (new ServletHolder(new ResourcesApp), "/*") + + server setHandler handlers + server start () +} + +class ResourcesApp(implicit val swagger: Swagger) extends ScalatraServlet with SwaggerBase { + before() { + response.headers += ("Access-Control-Allow-Origin" -> "*") + } + + protected def buildFullUrl(path: String) = if (path.startsWith("http")) path else { + "http://%s:%s%s%s".format( + request.getServerName, + request.getServerPort, + request.getContextPath, + path) + } +} + +class SwaggerApp extends Swagger(SwaggerSpec.version, "1") diff --git a/samples/server-generator/scalatra/templates/ServletApp.mustache b/samples/server-generator/scalatra/templates/ServletApp.mustache new file mode 100644 index 00000000000..3beee9bda56 --- /dev/null +++ b/samples/server-generator/scalatra/templates/ServletApp.mustache @@ -0,0 +1,62 @@ +package com.wordnik.swagger.sample + +import {{apiPackage}}._ + +import com.wordnik.swagger.core.SwaggerSpec + +import org.scalatra.{ ScalatraServlet } +import org.scalatra.swagger.{ Swagger, SwaggerBase } + +import org.eclipse.jetty.server.nio.SelectChannelConnector +import org.eclipse.jetty.server.Server +import org.eclipse.jetty.server.handler.ContextHandlerCollection +import org.eclipse.jetty.servlet.{ ServletContextHandler, ServletHolder } + +object ServletApp extends App { + val server = new Server + implicit val swagger = new SwaggerApp + + server setGracefulShutdown 5000 + server setSendServerVersion false + server setSendDateHeader true + server setStopAtShutdown true + + val connector = new SelectChannelConnector + connector setPort 8002 + connector setMaxIdleTime 90000 + + server addConnector connector + + val apiServlets = new ServletContextHandler(ServletContextHandler.SESSIONS) + apiServlets setContextPath "/api" + + val handlers = new ContextHandlerCollection + handlers addHandler apiServlets + + {{#apis}} + val {{name}}Servlet = new {{className}} + swagger register ("{{name}}", "/{{name}}", "{{{description}}}", {{name}}Servlet) + apiServlets addServlet (new ServletHolder({{name}}Servlet), "/pet/*") + apiServlets addServlet (new ServletHolder(new ResourcesApp), "/*") + + {{/apis}} + + server setHandler handlers + server start () +} + +class ResourcesApp(implicit val swagger: Swagger) extends ScalatraServlet with SwaggerBase { + before() { + response.headers += ("Access-Control-Allow-Origin" -> "*") + } + + protected def buildFullUrl(path: String) = if (path.startsWith("http")) path else { + "http://%s:%s%s%s".format( + request.getServerName, + request.getServerPort, + request.getContextPath, + path) + } +} + +class SwaggerApp extends Swagger(SwaggerSpec.version, "1") \ No newline at end of file