Permalink
Browse files

merge prepare for 2.2.1

  • Loading branch information...
2 parents dfa68a5 + 7a5dbd8 commit c8861f79713e6f340a4fe9daa74a3d4fdd136e8e @casualjim casualjim committed Apr 6, 2013
@@ -15,8 +15,7 @@ object ScalatraBroadcasterFactory {
}
class ScalatraBroadcasterFactory(cfg: AtmosphereConfig)(implicit wireFormat: WireFormat, system: ActorSystem) extends BroadcasterFactory {
- BroadcasterFactory.config = cfg
- if (BroadcasterFactory.factory == null) BroadcasterFactory.factory = this
+ BroadcasterFactory.setBroadcasterFactory(this, cfg)
private[this] val logger = Logger[ScalatraBroadcasterFactory]
private[this] val store: ConcurrentMap[Any, Broadcaster] = new ConcurrentHashMap[Any, Broadcaster]().asScala
@@ -1,153 +1,154 @@
-package org.scalatra
-package atmosphere
-import test.specs2.MutableScalatraSpec
-import json.JacksonJsonSupport
-import org.json4s._
-import JsonDSL._
-import org.atmosphere.wasync._
-import java.io.{IOException, StringReader, Reader}
-import java.util.concurrent.{TimeUnit, CountDownLatch}
-import javax.servlet.http.{HttpServletResponse, HttpServletRequest}
-import _root_.akka.actor.ActorSystem
-import org.specs2.specification.{Step, Fragments}
-import scala.concurrent.duration._
-import org.specs2.time.NoTimeConversions
-
-
-class AtmosphereSpecServlet(implicit override protected val scalatraActorSystem: ActorSystem) extends ScalatraServlet with JacksonJsonSupport with AtmosphereSupport {
- implicit protected def jsonFormats: Formats = DefaultFormats
- import scala.concurrent.ExecutionContext.Implicits.global
-
- get("/echo") {
- "echo ok"
- }
-
-
- atmosphere("/test1") {
- new AtmosphereClient {
- def receive: AtmoReceive = {
- case Connected =>
- println("connected client")
- broadcast("connected", to = Everyone)
- case TextMessage(txt) =>
- println("text message: " + txt)
- send(("seen" -> txt):JValue)
- case JsonMessage(json) =>
- println("json message: " + json)
- send(("seen" -> "test1") ~ ("data" -> json))
- case m =>
- println("Got unknown message " + m.getClass + " " + m.toString)
- }
- }
- }
-
- error {
- case t: Throwable => t.printStackTrace()
- }
-
- override def handle(request: HttpServletRequest, response: HttpServletResponse) {
- withRequestResponse(request, response) {
- println(request.headers)
- println("routeBasePath: " + routeBasePath(request))
- println("requestPath: " + requestPath(request))
-
- super.handle(request, response)
- }
- }
-}
-
-object WaSync {
-
- val Get = Request.METHOD.GET
- val Post = Request.METHOD.POST
- val Trace = Request.METHOD.TRACE
- val Put = Request.METHOD.PUT
- val Delete = Request.METHOD.DELETE
- val Options = Request.METHOD.OPTIONS
-
- val WebSocket = Request.TRANSPORT.WEBSOCKET
- val Sse = Request.TRANSPORT.SSE
- val Streaming = Request.TRANSPORT.STREAMING
- val LongPolling = Request.TRANSPORT.LONG_POLLING
-
- type ErrorHandler = PartialFunction[Throwable, Unit]
-
- def printIOException: ErrorHandler = {
- case e: IOException => e.printStackTrace()
- }
-
- implicit def scalaFunction2atmoFunction[T](fn: T => Unit) = new Function[T] { def on(t: T) { fn(t) } }
- implicit def scalaFunction2atmoEncoder[T, S](fn: T => S) = new Encoder[T, S] { def encode(s: T): S = fn(s) }
- implicit def scalaFunction2atmoDecoder[T, S](fn: T => S) = new Decoder[T, S] { def decode(s: T): S = fn(s) }
- implicit def errorHandler2atmoFunction(fn: PartialFunction[Throwable, Unit]) = new Function[Throwable] {
- def on(t: Throwable) {
- if (fn.isDefinedAt(t)) fn(t)
- else throw t
- }
- }
-
-}
-
-class AtmosphereSpec extends MutableScalatraSpec with NoTimeConversions {
-
- import WaSync._
- implicit val system = ActorSystem("scalatra")
-
- mount(new AtmosphereSpecServlet, "/*")
-
-
- implicit val formats = DefaultFormats
-
- private val stringEncoder = (s: String) => s
- private val stringDecoder = (s: String) => s
-
- sequential
-
- "To support Atmosphere, Scalatra" should {
-
- "allow regular requests" in {
- get("/echo") {
- status must_== 200
- body must_== "echo ok"
- }
- }
-
- "allow one client to connect" in {
+//package org.scalatra
+//package atmosphere
+//
+//import test.specs2.MutableScalatraSpec
+//import json.JacksonJsonSupport
+//import org.json4s._
+//import JsonDSL._
+//import org.atmosphere.wasync._
+//import java.io.{IOException, StringReader, Reader}
+//import java.util.concurrent.{TimeUnit, CountDownLatch}
+//import javax.servlet.http.{HttpServletResponse, HttpServletRequest}
+//import _root_.akka.actor.ActorSystem
+//import org.specs2.specification.{Step, Fragments}
+//import _root_.akka.util.duration._
+//import org.specs2.time.NoTimeConversions
+//import org.atmosphere.wasync.Transport.EVENT_TYPE
+//import scala.annotation.switch
+//
+//class AtmosphereSpecServlet(implicit override protected val scalatraActorSystem: ActorSystem) extends ScalatraServlet with JacksonJsonSupport with AtmosphereSupport {
+// implicit protected def jsonFormats: Formats = DefaultFormats
+//
+// get("/echo") {
+// "echo ok"
+// }
+//
+//
+// atmosphere("/test1") {
+// new AtmosphereClient {
+// def receive: AtmoReceive = {
+// case Connected =>
+// println("connected client")
+// broadcast("connected", to = Everyone)
+// case TextMessage(txt) =>
+// println("text message: " + txt)
+// send(("seen" -> txt):JValue)
+// case JsonMessage(json) =>
+// println("json message: " + json)
+// send(("seen" -> "test1") ~ ("data" -> json))
+// case m =>
+// println("Got unknown message " + m.getClass + " " + m.toString)
+// }
+// }
+// }
+//
+// error {
+// case t: Throwable => t.printStackTrace()
+// }
+//
+// override def handle(request: HttpServletRequest, response: HttpServletResponse) {
+// withRequestResponse(request, response) {
+// println(request.headers)
+// println("routeBasePath: " + routeBasePath(request))
+// println("requestPath: " + requestPath(request))
+//
+// super.handle(request, response)
+// }
+// }
+//}
+//
+//object WaSync {
+//
+// val Get = Request.METHOD.GET
+// val Post = Request.METHOD.POST
+// val Trace = Request.METHOD.TRACE
+// val Put = Request.METHOD.PUT
+// val Delete = Request.METHOD.DELETE
+// val Options = Request.METHOD.OPTIONS
+//
+// val WebSocket = Request.TRANSPORT.WEBSOCKET
+// val Sse = Request.TRANSPORT.SSE
+// val Streaming = Request.TRANSPORT.STREAMING
+// val LongPolling = Request.TRANSPORT.LONG_POLLING
+//
+// type ErrorHandler = PartialFunction[Throwable, Unit]
+//
+// def printIOException: ErrorHandler = {
+// case e: IOException => e.printStackTrace()
+// }
+//
+// implicit def scalaFunction2atmoFunction[T](fn: T => Unit): Function[T] = new Function[T] { def on(t: T) { fn(t) } }
+// implicit def scalaFunction2atmoEncoder[T, S](fn: T => S): Encoder[T, S] = new Encoder[T, S] { def encode(s: T): S = fn(s) }
+//
+//
+// implicit def scalaFunction2atmoDecoder[T <: AnyRef, S](fn: T => S): Decoder[T, S] = new Decoder[T, S] {
+// def decode(e: EVENT_TYPE, s: T): S = fn(s)
+// }
+// implicit def errorHandler2atmoFunction(fn: PartialFunction[Throwable, Unit]): Function[Throwable] = new Function[Throwable] {
+// def on(t: Throwable) {
+// if (fn.isDefinedAt(t)) fn(t)
+// else throw t
+// }
+// }
+//
+//}
+//
+//class AtmosphereSpec extends MutableScalatraSpec with NoTimeConversions {
+//
+// import WaSync._
+// implicit val system = ActorSystem("scalatra")
+//
+// mount(new AtmosphereSpecServlet, "/*")
+//
+//
+// implicit val formats = DefaultFormats
+//
+// private val stringEncoder: Encoder[String, String] = (s: String) => s
+// private val stringDecoder: Decoder[String, String] = (s: String) => s
+//
+// sequential
+//
+// "To support Atmosphere, Scalatra" should {
+//
+// "allow regular requests" in {
+// get("/echo") {
+// status must_== 200
+// body must_== "echo ok"
+// }
+// }
+//
+// "allow one client to connect" in {
// val latch = new CountDownLatch(2)
// val client = ClientFactory.getDefault.newClient()
-// val req = (client.newRequestBuilder()
-// method Get
-// uri (baseUrl + "/test1")
-//
-// transport LongPolling)
+// val req = (client.newRequestBuilder().transport(LongPolling).method(Get).uri(baseUrl + "/test1"))
// val opts = new org.atmosphere.wasync.Options.OptionsBuilder().reconnect(false).build()
// val conn = client.create(opts)
// conn.on(new Function[AnyRef] {
// def on(t: AnyRef) {
// println("Got Anyref " + t)
// }
// })
-// (conn
-// on { (s: String) =>
-// println("Got String: " + s)
-// latch.countDown()
-// }
-//// on printIOException
-// open req.build()
-// fire "hello"
-// fire """{"id":1}"""
-// done())
-//
-// latch.await(5, TimeUnit.SECONDS) must beTrue
-
- pending
- }
- }
- private def stopSystem {
- system.shutdown()
- system.awaitTermination(1 minutes)
- }
-
- override def map(fs: => Fragments): Fragments = super.map(fs) ^ Step(stopSystem)
-}
+//// (conn
+//// on { (s: String) =>
+//// println("Got String: " + s)
+//// latch.countDown()
+//// }
+////// on printIOException
+//// open req.build()
+//// fire "hello"
+//// fire """{"id":1}"""
+//// done())
+////
+//// latch.await(5, TimeUnit.SECONDS) must beTrue
+//
+// pending
+// }
+// }
+// private def stopSystem {
+// system.shutdown()
+// system.awaitTermination(1 minutes)
+// }
+//
+// override def map(fs: => Fragments): Fragments = super.map(fs) ^ Step(stopSystem)
+//}
View
@@ -4,9 +4,10 @@
* AsyncResult now uses an abstract val to force eager creation of the future
* Fixes preflight request for CORS (no longer necessary to define an options route)
* Fix redirecting from within an AsyncResult
+* Fallback to servlet context init parameters when looking up a key
### Atmosphere
-* Upgrade to atmosphere 1.0.11
+* Upgrade to atmosphere 1.0.12
* Route params are now available inside the atmosphere route
### Commands
View
@@ -247,9 +247,9 @@ object ScalatraBuild extends Build {
// Sort by artifact ID.
lazy val akkaActor: MM = sv => "com.typesafe.akka" %% "akka-actor" % akkaVersion(sv)
lazy val akkaTestkit: MM = sv => "com.typesafe.akka" %% "akka-testkit" % akkaVersion(sv)
- lazy val atmosphereRuntime = "org.atmosphere" % "atmosphere-runtime" % "1.0.11"
- lazy val atmosphereJQuery = "org.atmosphere" % "atmosphere-jquery" % "1.0.11" artifacts(Artifact("atmosphere-jquery", "war", "war"))
- lazy val atmosphereClient = "org.atmosphere" % "wasync" % "1.0.0.beta1"
+ lazy val atmosphereRuntime = "org.atmosphere" % "atmosphere-runtime" % "1.0.12"
+ lazy val atmosphereJQuery = "org.atmosphere" % "atmosphere-jquery" % "1.0.12" artifacts(Artifact("atmosphere-jquery", "war", "war"))
+ lazy val atmosphereClient = "org.atmosphere" % "wasync" % "1.0.0.RC1"
lazy val base64 = "net.iharder" % "base64" % "2.3.8"
lazy val commonsFileupload = "commons-fileupload" % "commons-fileupload" % "1.2.2"
lazy val commonsIo = "commons-io" % "commons-io" % "2.4"
@@ -264,24 +264,24 @@ object ScalatraBuild extends Build {
lazy val jettyWebsocket = "org.eclipse.jetty" % "jetty-websocket" % jettyVersion
lazy val jettyWebapp = "org.eclipse.jetty" % "jetty-webapp" % jettyVersion
lazy val jodaConvert = "org.joda" % "joda-convert" % "1.2"
- lazy val jodaTime = "joda-time" % "joda-time" % "2.1"
+ lazy val jodaTime = "joda-time" % "joda-time" % "2.2"
lazy val json4sCore = "org.json4s" %% "json4s-core" % json4sVersion
lazy val json4sExt = "org.json4s" %% "json4s-ext" % json4sVersion
lazy val json4sJackson = "org.json4s" %% "json4s-jackson" % json4sVersion
lazy val json4sNative = "org.json4s" %% "json4s-native" % json4sVersion
lazy val junit = "junit" % "junit" % "4.11"
lazy val jUniversalChardet = "com.googlecode.juniversalchardet" % "juniversalchardet" % "1.0.3"
- lazy val logbackClassic = "ch.qos.logback" % "logback-classic" % "1.0.9"
+ lazy val logbackClassic = "ch.qos.logback" % "logback-classic" % "1.0.11"
lazy val mimeUtil = "eu.medsea.mimeutil" % "mime-util" % "2.1.3" exclude("org.slf4j", "slf4j-log4j12") exclude("log4j", "log4j")
lazy val mockitoAll = "org.mockito" % "mockito-all" % "1.9.5"
- lazy val rl = "org.scalatra.rl" %% "rl" % "0.4.3"
+ lazy val rl = "org.scalatra.rl" %% "rl" % "0.4.4"
lazy val scalajCollection = "org.scalaj" %% "scalaj-collection" % "1.2"
lazy val scalate: MM = sv => "org.fusesource.scalate" % scalateArtifact(sv) % scalateVersion(sv)
lazy val scalatest: MM = sv => "org.scalatest" %% "scalatest" % scalatestVersion(sv)
- lazy val scalaz = "org.scalaz" %% "scalaz-core" % "7.0.0-M9" cross crossMapped("2.9.3" -> "2.9.2")
+ lazy val scalaz = "org.scalaz" %% "scalaz-core" % "7.0.0-RC1"
lazy val servletApi = "org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" artifacts (Artifact("javax.servlet", "jar", "jar"))
- lazy val slf4jApi = "org.slf4j" % "slf4j-api" % "1.7.3"
- lazy val slf4jSimple = "org.slf4j" % "slf4j-simple" % "1.7.3"
+ lazy val slf4jApi = "org.slf4j" % "slf4j-api" % "1.7.5"
+ lazy val slf4jSimple = "org.slf4j" % "slf4j-simple" % "1.7.5"
lazy val specs: MM = sv => "org.scala-tools.testing" % "specs" % specsVersion(sv) cross specsCross
lazy val specs2: MM = sv => "org.specs2" %% "specs2" % specs2Version(sv)
lazy val swaggerAnnotations = "com.wordnik" % "swagger-annotations" % swaggerVersion cross swaggerCross
@@ -292,10 +292,7 @@ object ScalatraBuild extends Build {
type MM = String => ModuleID
def crossMapped(mappings: (String, String)*): CrossVersion =
- CrossVersion.binaryMapped(Map(mappings: _*) orElse {
- case v if v.startsWith("2.10") => "2.10"
- case v => v
- })
+ CrossVersion.binaryMapped(Map(mappings: _*) orElse { case v => CrossVersion.binaryScalaVersion(v) })
def defaultOrMapped(default: String, alternatives: (String, String)*): String => String =
Map(alternatives: _*) orElse { case _ => default }
@@ -312,7 +309,7 @@ object ScalatraBuild extends Build {
private val jettyVersion = "8.1.10.v20130312"
- private val json4sVersion = "3.2.3"
+ private val json4sVersion = "3.2.4"
private val scalateArtifact: String => String = {
case sv if sv startsWith "2.8." => "scalate-core"
View
@@ -1 +1 @@
-version in ThisBuild := "2.2.1-SNAPSHOT"
+version in ThisBuild := "2.2.1"

0 comments on commit c8861f7

Please sign in to comment.