summaryrefslogtreecommitdiff
path: root/examples/crossBuilds/clientserver2/jvm
diff options
context:
space:
mode:
Diffstat (limited to 'examples/crossBuilds/clientserver2/jvm')
-rw-r--r--examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala7
-rw-r--r--examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala13
-rw-r--r--examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala61
3 files changed, 81 insertions, 0 deletions
diff --git a/examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala b/examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala
new file mode 100644
index 0000000..d3b0278
--- /dev/null
+++ b/examples/crossBuilds/clientserver2/jvm/shared/main/scala/simple/Simple.scala
@@ -0,0 +1,7 @@
+/*shared/main/scala/simple/Simple.scala*/
+package simple
+object Simple{
+ def formatTimes(timestamps: Seq[Long]): String = {
+ timestamps.map(Platform.format).mkString("\n")
+ }
+} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala b/examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala
new file mode 100644
index 0000000..ec6b29f
--- /dev/null
+++ b/examples/crossBuilds/clientserver2/jvm/shared/test/scala/simple/SimpleTest.scala
@@ -0,0 +1,13 @@
+/*js/shared/test/scala/simple/SimpleTest.scala*/
+/*jvm/shared/test/scala/simple/SimpleTest.scala*/
+package simple
+import utest._
+object SimpleTest extends TestSuite{
+ val tests = TestSuite{
+ 'format{
+ 'nil - assert(Simple.formatTimes(Nil) == "")
+ 'timeZero - assert(
+ Simple.formatTimes(Seq(0)) == "December 31, 1969 4:00:00 PM PST")
+ }
+ }
+} \ No newline at end of file
diff --git a/examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala b/examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala
new file mode 100644
index 0000000..f4ef986
--- /dev/null
+++ b/examples/crossBuilds/clientserver2/jvm/src/main/scala/simple/Platform.scala
@@ -0,0 +1,61 @@
+//jvm/src/main/scala/simple/Platform.scala
+package simple
+
+import java.text.SimpleDateFormat
+import akka.actor.ActorSystem
+import spray.http.{HttpEntity, MediaTypes}
+import spray.routing.SimpleRoutingApp
+import scalatags.Text.all._
+
+object Static{
+ val msg = Simple.formatTimes(Seq(0, 1 << 30))
+ val boot =
+ "Platform().main(document.getElementById('contents'))"
+ val page = html(
+ head(
+ script(src:="/js-fastopt.js")
+ ),
+ body(
+ onload:=boot,
+ div(id:="contents")(
+ h1("Hello from Scala-JVM!"),
+ p(msg)
+ )
+ )
+ )
+}
+object Platform extends SimpleRoutingApp{
+ def format(ts: Long) = {
+ val fmt =
+ "MMMM d, yyyy h:mm:ss aaa z"
+ new SimpleDateFormat(fmt).format(
+ new java.util.Date(ts)
+ )
+ }
+
+ def main(args: Array[String]): Unit = {
+ implicit val system = ActorSystem()
+ startServer("localhost", port = 8080){
+ get{
+ pathSingleSlash{
+ complete{
+ HttpEntity(
+ MediaTypes.`text/html`,
+ Static.page.render
+ )
+ }
+ } ~
+ getFromResourceDirectory("")
+ } ~
+ post{
+ path("formatDates"){
+ extract(_.request.entity.asString) { e =>
+ complete {
+ Simple.formatTimes(upickle.read[Seq[Long]](e))
+ }
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file