Skip to content

Commit d886b67

Browse files
committed
Update to js-scala-0.3-SNAPSHOT and Play-2.1-RC2
1 parent 0a3e5d3 commit d886b67

File tree

21 files changed

+141
-150
lines changed

21 files changed

+141
-150
lines changed

chat/.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ tmp
66
.history
77
dist
88
/app/assets/javascripts/views.js
9-
/app/Chat-generated.scala
9+
/app/Chat-generated.scala
10+
.idea/
11+
.idea_modules/

chat/app/actors/ChatRooms.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ class ChatRooms extends Actor {
1717
var channels = List.empty[PushEnumerator[Message]] // readers connections
1818
var members = List.empty[String] // users chatting
1919
var chatRoom = ChatRoom(Nil)
20-
val chatRoomUi = new NodeRef(views.chatRoom(chatRoom)("root"))
20+
val chatRoomUi = new NodeRef(views.chatRoom(chatRoom))
2121

2222
override def receive = {
2323
case GetAllMessages => {
2424
sender ! chatRoomUi.cell
2525
}
2626
case OpenChannel => {
27-
lazy val stream: PushEnumerator[Message] = Enumerator.imperative(onComplete = { self ! CloseChannel(stream) })
27+
lazy val stream: PushEnumerator[Message] = Enumerator.imperative(onComplete = { () => self ! CloseChannel(stream) })
2828
channels = stream :: channels
2929
sender ! stream
3030
}

chat/app/assets/javascripts/chat.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// --- Message stream
33
var events = new EventSource(Routes.controllers.Chat.messages().url);
44
events.onmessage = function (e) {
5-
Chat.updates.updateChatRoom({ '_1': $('.chatroom'), '_2': JSON.parse(e.data) });
5+
Chat.updates.updateChatRoom($('.chatroom'), JSON.parse(e.data));
66
var ms = $('.messages')[0];
77
ms.scrollTop = ms.scrollHeight - ms.offsetHeight;
88
};
@@ -23,7 +23,7 @@
2323
// TODO Client side validation
2424
Routes.controllers.Chat.login(username).ajax({
2525
success: function () {
26-
$('.login').replaceWith(Chat.views.connectedUser(username).root);
26+
$('.login').replaceWith(Chat.views.connectedUser(username));
2727
},
2828
error: function () {
2929
alert('Unable to log in!'); // TODO distinguish between 4xx and 5xx errors
@@ -47,7 +47,7 @@
4747
$(document).on('click', '.form button', function () {
4848
Routes.controllers.Chat.logout().ajax({
4949
success: function () {
50-
$('.form').replaceWith(Chat.views.login().root);
50+
$('.form').replaceWith(Chat.views.login());
5151
}
5252
});
5353
});

chat/app/controllers/Chat.scala

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,25 @@ import play.api.libs.EventSource
66
import play.api.libs.json.JsValue
77
import play.api.libs.iteratee._
88
import play.api.libs.concurrent._
9+
import play.api.libs.concurrent.Execution.Implicits._
910
import play.api.data._
1011
import play.api.data.Forms._
1112

1213
import akka.util.Timeout
13-
import akka.util.duration._
1414
import akka.pattern.ask
1515

1616
import actors.ChatRooms
1717
import models._
18+
import models.Protocols._
19+
import java.util.concurrent.TimeUnit
1820

1921
object Chat extends Controller {
2022
import ChatRooms.Events._
21-
implicit val timeout = Timeout(5.seconds)
23+
implicit val timeout = Timeout(5, TimeUnit.SECONDS)
2224

2325
def index = Action { implicit request =>
24-
AsyncResult {
25-
((ChatRooms.ref ? GetAllMessages).mapTo[scala.xml.NodeSeq]).asPromise.map { allMessages =>
26+
Async {
27+
((ChatRooms.ref ? GetAllMessages).mapTo[scala.xml.NodeSeq]).map { allMessages =>
2628
Ok(views.html.index(allMessages, authenticatedUser))
2729
}
2830
}
@@ -46,8 +48,8 @@ object Chat extends Controller {
4648
}
4749

4850
def messages = Action { implicit request =>
49-
AsyncResult {
50-
((ChatRooms.ref ? OpenChannel).mapTo[Enumerator[Message]]).asPromise.map { message =>
51+
Async {
52+
((ChatRooms.ref ? OpenChannel).mapTo[Enumerator[Message]]).map { message =>
5153
Ok.feed(message &> ToJson[Message] ><> EventSource()).as(EVENT_STREAM)
5254
}
5355
}

chat/app/models/Protocols.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package models
2+
3+
object Protocols {
4+
5+
import play.api.libs.json._
6+
implicit object toJson extends Writes[Message] {
7+
def writes(message: Message): JsValue =
8+
JsObject(Seq(
9+
"author" -> JsString(message.author),
10+
"content" -> JsString(message.content)
11+
))
12+
}
13+
}

chat/app/models/ToJson.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import play.api.libs.json._
44
import play.api.libs.iteratee._
55

66
object ToJson {
7+
import language.reflectiveCalls
8+
79
def apply[A : Writes]: Enumeratee[A, JsValue] =
810
Enumeratee.map(a => Json.toJson(a))
911
}

chat/app/views/index.scala.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<div class="container">
55
@messages
66
@maybeUsername match {
7-
case Some(username) => { @views.connectedUser(username)("root") }
8-
case None => { @views.login()("root") }
7+
case Some(username) => { @views.connectedUser(username) }
8+
case None => { @views.login() }
99
}
1010
</div>
1111
@helper.javascriptRouter("Routes")(

chat/aspects/build.sbt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
name := "chat-aspects"
22

3+
scalaVersion := "2.10.0"
4+
5+
scalaOrganization := "org.scala-lang.virtualized"
6+
37
libraryDependencies ++= Seq(
48
"js-scala" %% "forest" % "0.3-SNAPSHOT"
59
)
610

711
sourceGenerators in Compile <+= (sourceDirectory in Compile, sourceManaged in Compile) map { (sourceDir, targetDir) =>
8-
forest.compiler.Compiler.compile(scalax.file.Path(sourceDir / "forest" / "Chat"), scalax.file.Path(targetDir), Seq("models._"), Seq("MessageOps", "ChatRoomOps"))
12+
forest.compiler.Compiler.compile(
13+
scalax.file.Path(sourceDir / "forest" / "Chat"),
14+
scalax.file.Path(targetDir),
15+
Seq("aspects._", "scala.virtualization.lms.common.{LiftAll, Structs, StringOps}"),
16+
Seq("Models", "LiftAll", "Structs", "StringOps")
17+
)
918
(targetDir / "Chat.scala").get.map(_.getAbsoluteFile)
1019
}
1120

12-
resolvers += Resolver.url("ivy-local", url("file://" + Path.userHome + "/.ivy2/local"))(Resolver.ivyStylePatterns)
13-
14-
scalacOptions ++= Seq("-deprecation", "-unchecked", "-Xexperimental", "-Yvirtualize")
21+
scalacOptions ++= Seq("-deprecation", "-unchecked", "-feature", "-Xexperimental", "-Yvirtualize")

chat/aspects/project/build.sbt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
libraryDependencies += "js-scala" %% "forest-compiler" % "0.3-SNAPSHOT"

chat/aspects/src/main/scala/Compiler.scala

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)