Skip to content

Commit e92d4e6

Browse files
committed
updated sample
1 parent 641aada commit e92d4e6

File tree

13 files changed

+217
-205
lines changed

13 files changed

+217
-205
lines changed

samples/server-generator/scalatra/output/build.sbt

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
import AssemblyKeys._ // put this at the top of the file
2-
import com.github.siasia.PluginKeys._
2+
3+
import NativePackagerKeys._
4+
5+
packageArchetype.java_server
36

47
assemblySettings
58

9+
scalariformSettings
10+
611
organization := "com.wordnik"
712

813
seq(webSettings :_*)
@@ -13,25 +18,22 @@ name := "scalatra-sample"
1318

1419
version := "0.1.0-SNAPSHOT"
1520

16-
scalaVersion := "2.9.2"
21+
scalaVersion := "2.10.0"
1722

1823
libraryDependencies ++= Seq(
19-
"org.scalatest" %% "scalatest" % "1.6.1" % "test",
20-
"org.scalatra" % "scalatra" % "2.2.1-SNAPSHOT",
21-
"org.scalatra" % "scalatra-auth" % "2.2.1-SNAPSHOT",
22-
"org.scalatra" % "scalatra-scalate" % "2.2.1-SNAPSHOT",
23-
"org.scalatra" % "scalatra-json" % "2.2.1-SNAPSHOT",
24-
"org.scalatra" % "scalatra-fileupload" % "2.2.1-SNAPSHOT",
25-
"org.scalatra" % "scalatra-swagger" % "2.2.1-SNAPSHOT",
26-
"org.scalatra" % "scalatra-swagger-ext" % "2.2.1-SNAPSHOT",
27-
"org.scalatra" % "scalatra-slf4j" % "2.2.1-SNAPSHOT",
28-
"org.scalatra" % "scalatra-specs2" % "2.2.1-SNAPSHOT" % "test",
24+
"org.scalatest" %% "scalatest" % "2.0" % "test",
25+
"org.scalatra" %% "scalatra" % "2.3.0.M1",
26+
"org.scalatra" %% "scalatra-scalate" % "2.3.0.M1",
27+
"org.scalatra" %% "scalatra-json" % "2.3.0.M1",
28+
"org.scalatra" %% "scalatra-swagger" % "2.3.0.M1",
29+
"org.scalatra" %% "scalatra-swagger-ext" % "2.3.0.M1",
30+
"org.scalatra" %% "scalatra-slf4j" % "2.3.0.M1",
2931
"org.json4s" %% "json4s-jackson" % "3.1.0",
3032
"org.json4s" %% "json4s-ext" % "3.1.0",
3133
"commons-codec" % "commons-codec" % "1.7",
3234
"net.databinder.dispatch" %% "dispatch-core" % "0.9.5",
3335
"net.databinder.dispatch" %% "json4s-jackson" % "0.9.5",
34-
"com.typesafe.akka" % "akka-actor" % "2.0.2",
36+
"com.typesafe.akka" %% "akka-actor" % "2.1.0",
3537
"org.eclipse.jetty" % "jetty-server" % "8.1.7.v20120910" % "container;provided",
3638
"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container;provided",
3739
"org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;compile;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar"))
@@ -55,4 +57,3 @@ mergeStrategy in assembly <<= (mergeStrategy in assembly) { (old) =>
5557
case x => old(x)
5658
}
5759
}
58-
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=0.12.0
1+
sbt.version=0.13.0
Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.4")
1+
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.10.1")
22

3-
libraryDependencies <+= sbtVersion(v => v match {
4-
case "0.11.0" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.0-0.2.8"
5-
case "0.11.1" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.1-0.2.10"
6-
case "0.11.2" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.2-0.2.11"
7-
case "0.11.3" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.3-0.2.11.1"
8-
case x if (x.startsWith("0.12")) => "com.github.siasia" %% "xsbt-web-plugin" % "0.12.0-0.2.11.1"
9-
})
3+
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.6.4")
4+
5+
addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "0.6.0")
6+
7+
addSbtPlugin("com.typesafe.sbt" % "sbt-scalariform" % "1.2.1")

samples/server-generator/scalatra/output/src/main/scala/ScalatraBootstrap.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import apis._
2-
import com.wordnik.swagger.app.{ResourcesApp, SwaggerApp}
2+
import akka.actor.ActorSystem
3+
import com.wordnik.swagger.app.{ ResourcesApp, SwaggerApp }
34
import javax.servlet.ServletContext
45
import org.scalatra.LifeCycle
56

67
class ScalatraBootstrap extends LifeCycle {
78
implicit val swagger = new SwaggerApp
89

910
override def init(context: ServletContext) {
11+
implicit val system = ActorSystem("mySystem")
1012
try {
13+
context mount (new UserApi, "/user/*")
1114
context mount (new PetApi, "/pet/*")
1215
context mount (new StoreApi, "/store/*")
13-
context mount (new UserApi, "/user/*")
1416
context mount (new ResourcesApp, "/api-docs/*")
1517
} catch {
1618
case e: Throwable => e.printStackTrace()
Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,39 @@
11
package com.wordnik.swagger.app
22

3-
import com.wordnik.swagger.core.SwaggerSpec
4-
import org.scalatra.swagger.{JacksonSwaggerBase, Swagger}
3+
import _root_.akka.actor.ActorSystem
4+
5+
import org.scalatra.swagger.{ ApiInfo, SwaggerWithAuth, Swagger }
6+
import org.scalatra.swagger.{ JacksonSwaggerBase, Swagger }
57
import org.scalatra.ScalatraServlet
6-
import org.json4s.{DefaultFormats, Formats}
8+
import org.json4s.{ DefaultFormats, Formats }
79

8-
class ResourcesApp(implicit val swagger: Swagger) extends ScalatraServlet with JacksonSwaggerBase {
10+
class ResourcesApp(implicit protected val system: ActorSystem, val swagger: SwaggerApp)
11+
extends ScalatraServlet with JacksonSwaggerBase {
912
before() {
1013
response.headers += ("Access-Control-Allow-Origin" -> "*")
1114
}
1215

1316
protected def buildFullUrl(path: String) = if (path.startsWith("http")) path else {
14-
val port = request.getServerPort
15-
val h = request.getServerName
16-
val prot = if (port == 443) "https" else "http"
17-
val (proto, host) = if (port != 80 && port != 443) ("http", h+":"+port.toString) else (prot, h)
18-
"%s://%s%s%s".format(
19-
proto,
20-
host,
21-
request.getContextPath,
22-
path)
17+
val port = request.getServerPort
18+
val h = request.getServerName
19+
val prot = if (port == 443) "https" else "http"
20+
val (proto, host) = if (port != 80 && port != 443) ("http", h + ":" + port.toString) else (prot, h)
21+
"%s://%s%s%s".format(
22+
proto,
23+
host,
24+
request.getContextPath,
25+
path)
2326
}
2427
}
2528

26-
class SwaggerApp extends Swagger(SwaggerSpec.version, "1")
29+
class SwaggerApp extends Swagger(apiInfo = ApiSwagger.apiInfo, apiVersion = "1.0", swaggerVersion = "1.2")
2730

31+
object ApiSwagger {
32+
val apiInfo = ApiInfo(
33+
"Swagger Sample",
34+
"A sample swagger server",
35+
"http://developers.helloreverb.com",
36+
37+
"All rights reserved",
38+
"http://apache.org/licenses/LICENSE-2.0.html")
39+
}
Lines changed: 75 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package apis
22

3+
import java.io.File
34
import com.wordnik.client.model.Pet
4-
import com.wordnik.swagger.core.ApiPropertiesReader
5-
65
import org.scalatra.{ TypedParamSupport, ScalatraServlet }
76
import org.scalatra.swagger._
87
import org.json4s._
@@ -11,7 +10,7 @@ import org.scalatra.json.{ JValueResult, JacksonJsonSupport }
1110

1211
import scala.collection.JavaConverters._
1312

14-
class PetApi (implicit val swagger: Swagger) extends ScalatraServlet
13+
class PetApi(implicit val swagger: Swagger) extends ScalatraServlet
1514
with JacksonJsonSupport
1615
with SwaggerSupport {
1716
protected implicit val jsonFormats: Formats = DefaultFormats
@@ -24,73 +23,111 @@ class PetApi (implicit val swagger: Swagger) extends ScalatraServlet
2423
response.headers += ("Access-Control-Allow-Origin" -> "*")
2524
}
2625

27-
2826
val getPetByIdOperation = (apiOperation[Pet]("getPetById")
29-
summary "Find pet by ID"
30-
parameters(
31-
pathParam[String]("petId").description(""))
27+
summary "Find pet by ID"
28+
parameters (
29+
pathParam[Long]("petId").description(""))
3230
)
33-
3431

35-
get("/:petId",operation(getPetByIdOperation)) {
32+
get("/:petId", operation(getPetByIdOperation)) {
3633
val petId = params.getOrElse("petId", halt(400))
37-
println(petId)
34+
println("petId: " + petId)
3835
}
3936

37+
val deletePetOperation = (apiOperation[Unit]("deletePet")
38+
summary "Deletes a pet"
39+
parameters (
40+
pathParam[String]("petId").description(""))
41+
)
4042

43+
delete("/:petId", operation(deletePetOperation)) {
44+
val petId = params.getOrElse("petId", halt(400))
45+
println("petId: " + petId)
46+
}
4147

42-
val addPetOperation = (apiOperation[Unit]("addPet")
43-
summary "Add a new pet to the store"
44-
parameters(
45-
bodyParam[Pet]("body").description(""))
48+
val partialUpdateOperation = (apiOperation[List[Pet]]("partialUpdate")
49+
summary "partial updates to a pet"
50+
parameters (
51+
pathParam[String]("petId").description(""), bodyParam[Pet]("body").description(""))
4652
)
47-
4853

49-
post("/",operation(addPetOperation)) {
54+
patch("/:petId", operation(partialUpdateOperation)) {
55+
val petId = params.getOrElse("petId", halt(400))
56+
println("petId: " + petId)
5057
val body = parsedBody.extract[Pet]
51-
println(body)
58+
println("body: " + body)
5259
}
5360

61+
val updatePetWithFormOperation = (apiOperation[Unit]("updatePetWithForm")
62+
summary "Updates a pet in the store with form data"
63+
parameters (
64+
pathParam[String]("petId").description(""), queryParam[String]("name").description(""), queryParam[String]("status").description(""))
65+
)
5466

67+
post("/:petId", operation(updatePetWithFormOperation)) {
68+
val petId = params.getOrElse("petId", halt(400))
69+
println("petId: " + petId)
70+
val name = params.getAs[String]("name")
71+
println("name: " + name)
72+
val status = params.getAs[String]("status")
73+
println("status: " + status)
74+
}
5575

56-
val updatePetOperation = (apiOperation[Unit]("updatePet")
57-
summary "Update an existing pet"
58-
parameters(
59-
bodyParam[Pet]("body").description(""))
76+
val uploadFileOperation = (apiOperation[Unit]("uploadFile")
77+
summary "uploads an image"
78+
parameters (
79+
queryParam[String]("additionalMetadata").description(""), bodyParam[File]("body").description("").optional)
6080
)
61-
6281

63-
put("/",operation(updatePetOperation)) {
82+
post("/uploadImage", operation(uploadFileOperation)) {
83+
val additionalMetadata = params.getAs[String]("additionalMetadata")
84+
println("additionalMetadata: " + additionalMetadata)
85+
val body = parsedBody.extract[File]
86+
println("body: " + body)
87+
}
88+
89+
val addPetOperation = (apiOperation[Unit]("addPet")
90+
summary "Add a new pet to the store"
91+
parameters (
92+
bodyParam[Pet]("body").description(""))
93+
)
94+
95+
post("/", operation(addPetOperation)) {
6496
val body = parsedBody.extract[Pet]
65-
println(body)
97+
println("body: " + body)
6698
}
6799

100+
val updatePetOperation = (apiOperation[Unit]("updatePet")
101+
summary "Update an existing pet"
102+
parameters (
103+
bodyParam[Pet]("body").description(""))
104+
)
68105

106+
put("/", operation(updatePetOperation)) {
107+
val body = parsedBody.extract[Pet]
108+
println("body: " + body)
109+
}
69110

70111
val findPetsByStatusOperation = (apiOperation[List[Pet]]("findPetsByStatus")
71-
summary "Finds Pets by status"
72-
parameters(
73-
queryParam[String]("status").description("").defaultValue("available"))
112+
summary "Finds Pets by status"
113+
parameters (
114+
queryParam[String]("status").description("").defaultValue("available"))
74115
)
75-
76116

77-
get("/findByStatus",operation(findPetsByStatusOperation)) {
117+
get("/findByStatus", operation(findPetsByStatusOperation)) {
78118
val status = params.getAs[String]("status")
79-
println(status)
119+
println("status: " + status)
80120
}
81121

82-
83-
84122
val findPetsByTagsOperation = (apiOperation[List[Pet]]("findPetsByTags")
85-
summary "Finds Pets by tags"
86-
parameters(
87-
queryParam[String]("tags").description(""))
123+
summary "Finds Pets by tags"
124+
parameters (
125+
queryParam[String]("tags").description(""))
88126
)
89-
90127

91-
get("/findByTags",operation(findPetsByTagsOperation)) {
128+
get("/findByTags", operation(findPetsByTagsOperation)) {
92129
val tags = params.getAs[String]("tags")
93-
println(tags)
130+
println("tags: " + tags)
94131
}
95132

96133
}
Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package apis
22

33
import com.wordnik.client.model.Order
4-
import com.wordnik.swagger.core.ApiPropertiesReader
5-
64
import org.scalatra.{ TypedParamSupport, ScalatraServlet }
75
import org.scalatra.swagger._
86
import org.json4s._
@@ -11,7 +9,7 @@ import org.scalatra.json.{ JValueResult, JacksonJsonSupport }
119

1210
import scala.collection.JavaConverters._
1311

14-
class StoreApi (implicit val swagger: Swagger) extends ScalatraServlet
12+
class StoreApi(implicit val swagger: Swagger) extends ScalatraServlet
1513
with JacksonJsonSupport
1614
with SwaggerSupport {
1715
protected implicit val jsonFormats: Formats = DefaultFormats
@@ -24,45 +22,37 @@ class StoreApi (implicit val swagger: Swagger) extends ScalatraServlet
2422
response.headers += ("Access-Control-Allow-Origin" -> "*")
2523
}
2624

27-
2825
val getOrderByIdOperation = (apiOperation[Order]("getOrderById")
29-
summary "Find purchase order by ID"
30-
parameters(
31-
pathParam[String]("orderId").description(""))
26+
summary "Find purchase order by ID"
27+
parameters (
28+
pathParam[String]("orderId").description(""))
3229
)
33-
3430

35-
get("/order/:orderId",operation(getOrderByIdOperation)) {
31+
get("/order/:orderId", operation(getOrderByIdOperation)) {
3632
val orderId = params.getOrElse("orderId", halt(400))
37-
println(orderId)
33+
println("orderId: " + orderId)
3834
}
3935

40-
41-
4236
val deleteOrderOperation = (apiOperation[Unit]("deleteOrder")
43-
summary "Delete purchase order by ID"
44-
parameters(
45-
pathParam[String]("orderId").description(""))
37+
summary "Delete purchase order by ID"
38+
parameters (
39+
pathParam[String]("orderId").description(""))
4640
)
47-
4841

49-
delete("/order/:orderId",operation(deleteOrderOperation)) {
42+
delete("/order/:orderId", operation(deleteOrderOperation)) {
5043
val orderId = params.getOrElse("orderId", halt(400))
51-
println(orderId)
44+
println("orderId: " + orderId)
5245
}
5346

54-
55-
5647
val placeOrderOperation = (apiOperation[Unit]("placeOrder")
57-
summary "Place an order for a pet"
58-
parameters(
59-
bodyParam[Order]("body").description(""))
48+
summary "Place an order for a pet"
49+
parameters (
50+
bodyParam[Order]("body").description(""))
6051
)
61-
6252

63-
post("/order",operation(placeOrderOperation)) {
53+
post("/order", operation(placeOrderOperation)) {
6454
val body = parsedBody.extract[Order]
65-
println(body)
55+
println("body: " + body)
6656
}
6757

6858
}

0 commit comments

Comments
 (0)