浏览代码

[spark] cleaning up the code

Erick Tryzelaar 11 年之前
父节点
当前提交
f25d613

+ 8 - 1
apps/spark/java/sparker-repl/pom.xml

@@ -33,7 +33,7 @@
 
         <dependency>
             <groupId>org.json4s</groupId>
-            <artifactId>json4s-core_2.10</artifactId>
+            <artifactId>json4s-jackson_2.10</artifactId>
             <version>3.2.11</version>
         </dependency>
 
@@ -44,6 +44,13 @@
             <scope>compile</scope>
         </dependency>
 
+        <dependency>
+            <groupId>org.scalatra</groupId>
+            <artifactId>scalatra-json_2.10</artifactId>
+            <version>${scalatra.version}</version>
+            <scope>compile</scope>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 2 - 1
apps/spark/java/sparker-repl/src/main/scala/Scalatra.scala

@@ -1,7 +1,8 @@
 import javax.servlet.ServletContext
 
 import _root_.akka.actor.ActorSystem
-import com.cloudera.hue.sparker.repl.{HelloWorldApp, SparkerInterpreter}
+import com.cloudera.hue.sparker.repl.interpreter.SparkerInterpreter
+import com.cloudera.hue.sparker.repl.webapp.HelloWorldApp
 import org.scalatra.LifeCycle
 
 class ScalatraBootstrap extends LifeCycle {

+ 1 - 1
apps/spark/java/sparker-repl/src/main/scala/com/cloudera/hue/sparker/repl/SparkerILoop.scala → apps/spark/java/sparker-repl/src/main/scala/com/cloudera/hue/sparker/repl/Interpreter.scala

@@ -1,4 +1,4 @@
-package com.cloudera.hue.sparker.repl
+package com.cloudera.hue.sparker.repl.interpreter
 
 import java.io.{BufferedReader, PipedReader, PipedWriter, StringWriter}
 import java.util.concurrent.{BlockingQueue, SynchronousQueue}

+ 20 - 23
apps/spark/java/sparker-repl/src/main/scala/com/cloudera/hue/sparker/repl/HelloWorldApp.scala → apps/spark/java/sparker-repl/src/main/scala/com/cloudera/hue/sparker/repl/WebApp.scala

@@ -1,39 +1,36 @@
-package com.cloudera.hue.sparker.repl
+package com.cloudera.hue.sparker.repl.webapp
 
-import java.io._
-import java.util.concurrent.SynchronousQueue
-
-import akka.actor.{Actor, ActorSystem}
 import akka.util.Timeout
-import org.json4s.JsonDSL._
-import org.json4s.jackson.JsonMethods._
-import org.scalatra.{ScalatraServlet, AsyncResult, FutureSupport, ScalatraFilter}
+import com.cloudera.hue.sparker.repl.interpreter.SparkerInterpreter
+import org.json4s.{DefaultFormats, Formats}
+import org.scalatra.json._
+import org.scalatra.{AsyncResult, FutureSupport, ScalatraServlet}
 
-import scala.concurrent.{ExecutionContextExecutor, ExecutionContext}
+import scala.concurrent.{ExecutionContext, ExecutionContextExecutor}
 
-class HelloWorldApp(interpreter: SparkerInterpreter) extends ScalatraServlet with FutureSupport {
+class HelloWorldApp(interpreter: SparkerInterpreter) extends ScalatraServlet with FutureSupport with JacksonJsonSupport {
 
-  implicit def executor: ExecutionContextExecutor = ExecutionContext.global
-  implicit def defaultTimeout: Timeout = Timeout(10)
+  protected implicit def executor: ExecutionContextExecutor = ExecutionContext.global
+  protected implicit def defaultTimeout: Timeout = Timeout(10)
+  protected implicit val jsonFormats: Formats = DefaultFormats
 
-  get("/") {
-    <h1>Hello {params("name")}</h1>
+  before() {
+    contentType = formats("json")
   }
 
-  get("/async") {
-    new AsyncResult { val is =
-      interpreter.execute("1 + 1")
-    }
+  get("/") {
+    <h1>Hello {params("name")}</h1>
   }
 
-  /*
-  get("/fire-forget") {
-    sparkActor ! "wee"
-    Accepted()
+  post("/statement") {
+    val request = parsedBody.extract[ExecuteRequest]
+    val statement = request.statement
+    new AsyncResult { def is = interpreter.execute(statement) }
   }
-  */
 }
 
+case class ExecuteRequest(statement: String)
+
 /*
 class SparkActor extends Actor {