You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@toree.apache.org by ma...@apache.org on 2016/11/07 14:29:26 UTC

[03/15] incubator-toree git commit: Adding an internal + external LanguageInfo case class

Adding an internal + external LanguageInfo case class


Project: http://git-wip-us.apache.org/repos/asf/incubator-toree/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-toree/commit/c330d3af
Tree: http://git-wip-us.apache.org/repos/asf/incubator-toree/tree/c330d3af
Diff: http://git-wip-us.apache.org/repos/asf/incubator-toree/diff/c330d3af

Branch: refs/heads/master
Commit: c330d3affb2d9e41974eaaaee5384c662058650a
Parents: ccd711a
Author: Liam Fisk <li...@xtra.co.nz>
Authored: Sun Jun 19 21:11:07 2016 +1200
Committer: Marius van Niekerk <ma...@maxpoint.com>
Committed: Thu Oct 20 17:50:57 2016 -0400

----------------------------------------------------------------------
 .../apache/toree/interpreter/Interpreter.scala  |  8 ++++++-
 .../boot/layer/HandlerInitialization.scala      | 11 +++++++--
 .../v5/handler/KernelInfoRequestHandler.scala   |  6 ++---
 .../handler/KernelInfoRequestHandlerSpec.scala  |  4 ++--
 .../scala/test/utils/DummyInterpreter.scala     |  4 ++--
 .../toree/kernel/protocol/v5/LanguageInfo.scala | 25 ++++++++++++++++++++
 .../protocol/v5/content/KernelInfoReply.scala   |  7 ++++--
 .../v5/content/KernelInfoReplySpec.scala        |  6 ++---
 .../pyspark/PySparkInterpreter.scala            | 10 ++++----
 .../interpreter/scala/ScalaInterpreter.scala    |  5 +---
 .../interpreter/sparkr/SparkRInterpreter.scala  |  4 ++--
 .../kernel/interpreter/sql/SqlInterpreter.scala |  4 ++--
 12 files changed, 66 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/kernel-api/src/main/scala/org/apache/toree/interpreter/Interpreter.scala
----------------------------------------------------------------------
diff --git a/kernel-api/src/main/scala/org/apache/toree/interpreter/Interpreter.scala b/kernel-api/src/main/scala/org/apache/toree/interpreter/Interpreter.scala
index 986a506..5b9d4c2 100644
--- a/kernel-api/src/main/scala/org/apache/toree/interpreter/Interpreter.scala
+++ b/kernel-api/src/main/scala/org/apache/toree/interpreter/Interpreter.scala
@@ -23,6 +23,12 @@ import org.apache.toree.kernel.api.KernelLike
 
 import scala.tools.nsc.interpreter._
 
+case class LanguageInfo(
+                 name: String,
+                 version: String,
+                 fileExtension: String,
+                 pygmentsLexer: Option[String] = None) {
+}
 
 trait Interpreter {
 
@@ -132,6 +138,6 @@ trait Interpreter {
   /**
     * Returns the language metadata for syntax highlighting
     */
-  def languageInfo: Map[String, String]
+  def languageInfo: LanguageInfo
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/kernel/src/main/scala/org/apache/toree/boot/layer/HandlerInitialization.scala
----------------------------------------------------------------------
diff --git a/kernel/src/main/scala/org/apache/toree/boot/layer/HandlerInitialization.scala b/kernel/src/main/scala/org/apache/toree/boot/layer/HandlerInitialization.scala
index e4407fd..8739079 100644
--- a/kernel/src/main/scala/org/apache/toree/boot/layer/HandlerInitialization.scala
+++ b/kernel/src/main/scala/org/apache/toree/boot/layer/HandlerInitialization.scala
@@ -29,7 +29,7 @@ import org.apache.toree.kernel.protocol.v5.interpreter.tasks.InterpreterTaskFact
 import org.apache.toree.kernel.protocol.v5.kernel.ActorLoader
 import org.apache.toree.kernel.protocol.v5.magic.{MagicParser, PostProcessor}
 import org.apache.toree.kernel.protocol.v5.relay.ExecuteRequestRelay
-import org.apache.toree.kernel.protocol.v5.{MessageType, SocketType, SystemActorType}
+import org.apache.toree.kernel.protocol.v5.{MessageType, SocketType, SystemActorType, LanguageInfo}
 import org.apache.toree.magic.MagicManager
 import org.apache.toree.plugins.PluginManager
 import org.apache.toree.utils.LogLike
@@ -157,11 +157,18 @@ trait StandardHandlerInitialization extends HandlerInitialization {
       )
     }
 
+    val langInfo = interpreter.languageInfo
+    val internalInfo = LanguageInfo(
+      name=langInfo.name,
+      version=langInfo.version,
+      file_extension=langInfo.fileExtension,
+      pygments_lexer=langInfo.pygmentsLexer)
+
     //  These are the handlers for messages coming into the
     initializeRequestHandler(classOf[ExecuteRequestHandler],
       MessageType.Incoming.ExecuteRequest, kernel)
     initializeRequestHandler(classOf[KernelInfoRequestHandler],
-      MessageType.Incoming.KernelInfoRequest, interpreter.languageInfo)
+      MessageType.Incoming.KernelInfoRequest, internalInfo)
     initializeRequestHandler(classOf[CommInfoRequestHandler],
       MessageType.Incoming.CommInfoRequest, commStorage)
     initializeRequestHandler(classOf[CodeCompleteHandler],

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/kernel/src/main/scala/org/apache/toree/kernel/protocol/v5/handler/KernelInfoRequestHandler.scala
----------------------------------------------------------------------
diff --git a/kernel/src/main/scala/org/apache/toree/kernel/protocol/v5/handler/KernelInfoRequestHandler.scala b/kernel/src/main/scala/org/apache/toree/kernel/protocol/v5/handler/KernelInfoRequestHandler.scala
index a4dd329..f65266f 100644
--- a/kernel/src/main/scala/org/apache/toree/kernel/protocol/v5/handler/KernelInfoRequestHandler.scala
+++ b/kernel/src/main/scala/org/apache/toree/kernel/protocol/v5/handler/KernelInfoRequestHandler.scala
@@ -28,7 +28,7 @@ import scala.concurrent._
  * Receives a KernelInfoRequest KernelMessage and returns a KernelInfoReply
  * KernelMessage.
  */
-class KernelInfoRequestHandler(actorLoader: ActorLoader, languageInfo: Map[String, String])
+class KernelInfoRequestHandler(actorLoader: ActorLoader, languageInfo: LanguageInfo)
   extends BaseHandler(actorLoader) with LogLike
 {
   def process(kernelMessage: KernelMessage): Future[_] = {
@@ -41,7 +41,7 @@ class KernelInfoRequestHandler(actorLoader: ActorLoader, languageInfo: Map[Strin
         kernelInfo.protocolVersion,
         kernelInfo.implementation,
         kernelInfo.implementationVersion,
-        languageInfo, // TODO permit arbitrary JSON serializable object here (rather than Map)
+        languageInfo,
         kernelInfo.banner
       )
 
@@ -64,4 +64,4 @@ class KernelInfoRequestHandler(actorLoader: ActorLoader, languageInfo: Map[Strin
       actorLoader.load(SystemActorType.KernelMessageRelay) ! kernelResponseMessage
     }
   }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/kernel/src/test/scala/org/apache/toree/kernel/protocol/v5/handler/KernelInfoRequestHandlerSpec.scala
----------------------------------------------------------------------
diff --git a/kernel/src/test/scala/org/apache/toree/kernel/protocol/v5/handler/KernelInfoRequestHandlerSpec.scala b/kernel/src/test/scala/org/apache/toree/kernel/protocol/v5/handler/KernelInfoRequestHandlerSpec.scala
index a96a22a..04a718f 100644
--- a/kernel/src/test/scala/org/apache/toree/kernel/protocol/v5/handler/KernelInfoRequestHandlerSpec.scala
+++ b/kernel/src/test/scala/org/apache/toree/kernel/protocol/v5/handler/KernelInfoRequestHandlerSpec.scala
@@ -20,7 +20,7 @@ import akka.actor.{ActorSelection, ActorSystem, Props}
 import akka.testkit.{TestProbe, ImplicitSender, TestKit}
 import org.apache.toree.kernel.protocol.v5.content.KernelInfoReply
 import org.apache.toree.kernel.protocol.v5.kernel.ActorLoader
-import org.apache.toree.kernel.protocol.v5.{SystemActorType, Header, KernelMessage}
+import org.apache.toree.kernel.protocol.v5.{SystemActorType, Header, KernelMessage, LanguageInfo}
 import org.mockito.AdditionalMatchers.{not => mockNot}
 import org.mockito.Matchers.{eq => mockEq}
 import com.typesafe.config.ConfigFactory
@@ -42,7 +42,7 @@ class KernelInfoRequestHandlerSpec extends TestKit(
     ConfigFactory.parseString(KernelInfoRequestHandlerSpec.config))
 ) with ImplicitSender with FunSpecLike with Matchers with MockitoSugar {
   val actorLoader: ActorLoader =  mock[ActorLoader]
-  val actor = system.actorOf(Props(classOf[KernelInfoRequestHandler], actorLoader, Map.empty))
+  val actor = system.actorOf(Props(classOf[KernelInfoRequestHandler], actorLoader, LanguageInfo("test", "1.0.0", ".test")))
 
   val relayProbe : TestProbe = TestProbe()
   val relaySelection : ActorSelection =

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/kernel/src/test/scala/test/utils/DummyInterpreter.scala
----------------------------------------------------------------------
diff --git a/kernel/src/test/scala/test/utils/DummyInterpreter.scala b/kernel/src/test/scala/test/utils/DummyInterpreter.scala
index 2dbe7f4..d7c7fab 100644
--- a/kernel/src/test/scala/test/utils/DummyInterpreter.scala
+++ b/kernel/src/test/scala/test/utils/DummyInterpreter.scala
@@ -20,7 +20,7 @@ package test.utils
 import java.net.URL
 
 import org.apache.toree.interpreter.Results.Result
-import org.apache.toree.interpreter.{ExecuteFailure, ExecuteOutput, Interpreter}
+import org.apache.toree.interpreter.{ExecuteFailure, ExecuteOutput, Interpreter, LanguageInfo}
 import org.apache.toree.kernel.api.KernelLike
 
 import scala.tools.nsc.interpreter.{InputStream, OutputStream}
@@ -114,6 +114,6 @@ class DummyInterpreter(kernel: KernelLike) extends Interpreter {
    */
   override def init(kernel: KernelLike): Interpreter = ???
 
-  override def languageInfo: Map[String, String] = Map.empty
+  override def languageInfo: LanguageInfo = ???
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/protocol/src/main/scala/org/apache/toree/kernel/protocol/v5/LanguageInfo.scala
----------------------------------------------------------------------
diff --git a/protocol/src/main/scala/org/apache/toree/kernel/protocol/v5/LanguageInfo.scala b/protocol/src/main/scala/org/apache/toree/kernel/protocol/v5/LanguageInfo.scala
new file mode 100644
index 0000000..04b85c8
--- /dev/null
+++ b/protocol/src/main/scala/org/apache/toree/kernel/protocol/v5/LanguageInfo.scala
@@ -0,0 +1,25 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License
+ */
+
+package org.apache.toree.kernel.protocol.v5
+
+case class LanguageInfo(
+                 name: String,
+                 version: String,
+                 file_extension: String,
+                 pygments_lexer: Option[String] = None) {
+}

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/protocol/src/main/scala/org/apache/toree/kernel/protocol/v5/content/KernelInfoReply.scala
----------------------------------------------------------------------
diff --git a/protocol/src/main/scala/org/apache/toree/kernel/protocol/v5/content/KernelInfoReply.scala b/protocol/src/main/scala/org/apache/toree/kernel/protocol/v5/content/KernelInfoReply.scala
index 51c1a6d..31898ed 100644
--- a/protocol/src/main/scala/org/apache/toree/kernel/protocol/v5/content/KernelInfoReply.scala
+++ b/protocol/src/main/scala/org/apache/toree/kernel/protocol/v5/content/KernelInfoReply.scala
@@ -18,13 +18,14 @@
 package org.apache.toree.kernel.protocol.v5.content
 
 import org.apache.toree.kernel.protocol.v5.KernelMessageContent
+import org.apache.toree.kernel.protocol.v5.LanguageInfo
 import play.api.libs.json.Json
 
 case class KernelInfoReply (
   protocol_version: String,
   implementation: String,
   implementation_version: String,
-  language_info: Map[String, String],
+  language_info: LanguageInfo,
   banner: String
 ) extends KernelMessageContent {
   override def content: String =
@@ -32,6 +33,8 @@ case class KernelInfoReply (
 }
 
 object KernelInfoReply extends TypeString {
+  implicit val languageInfoReads = Json.reads[LanguageInfo]
+  implicit val languageInfoWrites = Json.writes[LanguageInfo]
   implicit val kernelInfoReplyReads = Json.reads[KernelInfoReply]
   implicit val kernelInfoReplyWrites = Json.writes[KernelInfoReply]
 
@@ -41,4 +44,4 @@ object KernelInfoReply extends TypeString {
    * @return The type as a string
    */
   override def toTypeString: String = "kernel_info_reply"
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/protocol/src/test/scala/org/apache/toree/kernel/protocol/v5/content/KernelInfoReplySpec.scala
----------------------------------------------------------------------
diff --git a/protocol/src/test/scala/org/apache/toree/kernel/protocol/v5/content/KernelInfoReplySpec.scala b/protocol/src/test/scala/org/apache/toree/kernel/protocol/v5/content/KernelInfoReplySpec.scala
index 12ca226..b849df8 100644
--- a/protocol/src/test/scala/org/apache/toree/kernel/protocol/v5/content/KernelInfoReplySpec.scala
+++ b/protocol/src/test/scala/org/apache/toree/kernel/protocol/v5/content/KernelInfoReplySpec.scala
@@ -17,6 +17,7 @@
 
 package org.apache.toree.kernel.protocol.v5.content
 
+import org.apache.toree.kernel.protocol.v5.LanguageInfo
 import org.scalatest.{FunSpec, Matchers}
 import play.api.data.validation.ValidationError
 import play.api.libs.json._
@@ -27,13 +28,13 @@ class KernelInfoReplySpec extends FunSpec with Matchers {
     "protocol_version": "x.y.z",
     "implementation": "<name>",
     "implementation_version": "z.y.x",
-    "language_info": { "name": "<some language>", "version": "a.b.c" },
+    "language_info": { "name": "<some language>", "version": "a.b.c", "file_extension": "<some extension>" },
     "banner": "<some banner>"
   }
   """)
 
   val kernelInfoReply: KernelInfoReply = KernelInfoReply(
-    "x.y.z", "<name>", "z.y.x", Map("name" -> "<some language>", "version" -> "a.b.c"), "<some banner>"
+    "x.y.z", "<name>", "z.y.x", LanguageInfo("<some language>", "a.b.c", "<some extension>"), "<some banner>"
   )
 
   describe("KernelInfoReply") {
@@ -73,4 +74,3 @@ class KernelInfoReplySpec extends FunSpec with Matchers {
     }
   }
 }
-

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/pyspark-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/pyspark/PySparkInterpreter.scala
----------------------------------------------------------------------
diff --git a/pyspark-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/pyspark/PySparkInterpreter.scala b/pyspark-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/pyspark/PySparkInterpreter.scala
index a192c78..784a9ed 100644
--- a/pyspark-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/pyspark/PySparkInterpreter.scala
+++ b/pyspark-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/pyspark/PySparkInterpreter.scala
@@ -149,10 +149,10 @@ class PySparkInterpreter(
   override def doQuietly[T](body: => T): T = ???
 
   // TODO Identify how to plumb python version to here
-  override def languageInfo: Map[String, String] = Map(
-    "name" -> "python",
-    "version" -> "2.7.9",
-    "pygments_lexer" -> "ipython2",
-    "file_extension" -> ".py")
+  override def languageInfo = LanguageInfo(
+    "python",
+    "2.7.9",
+    ".py",
+    pygmentsLexer = Some("ipython2"))
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/scala-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/scala/ScalaInterpreter.scala
----------------------------------------------------------------------
diff --git a/scala-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/scala/ScalaInterpreter.scala b/scala-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/scala/ScalaInterpreter.scala
index bb198a7..1cd6d13 100644
--- a/scala-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/scala/ScalaInterpreter.scala
+++ b/scala-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/scala/ScalaInterpreter.scala
@@ -338,9 +338,6 @@ object ScalaInterpreter {
   }
 
 
-  override def languageInfo: Map[String, String] = Map(
-    "name" -> "scala",
-    "version" -> BuildInfo.scalaVersion,
-    "file_extension" -> ".scala")
+  override def languageInfo = LanguageInfo("scala", BuildInfo.scalaVersion, ".scala")
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/sparkr-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/sparkr/SparkRInterpreter.scala
----------------------------------------------------------------------
diff --git a/sparkr-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/sparkr/SparkRInterpreter.scala b/sparkr-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/sparkr/SparkRInterpreter.scala
index 2c21a54..ff4aa06 100644
--- a/sparkr-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/sparkr/SparkRInterpreter.scala
+++ b/sparkr-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/sparkr/SparkRInterpreter.scala
@@ -138,7 +138,7 @@ class SparkRInterpreter(
 
   // Unsupported
   override def doQuietly[T](body: => T): T = ???
-
-  override def languageInfo: Map[String, String] = Map("name" -> "scala", "version" -> BuildInfo.scalaVersion)
+  
+  override def languageInfo = LanguageInfo("scala", BuildInfo.scalaVersion, ".scala")
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-toree/blob/c330d3af/sql-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/sql/SqlInterpreter.scala
----------------------------------------------------------------------
diff --git a/sql-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/sql/SqlInterpreter.scala b/sql-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/sql/SqlInterpreter.scala
index 90d211e..988ef9e 100644
--- a/sql-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/sql/SqlInterpreter.scala
+++ b/sql-interpreter/src/main/scala/org/apache/toree/kernel/interpreter/sql/SqlInterpreter.scala
@@ -19,7 +19,7 @@ package org.apache.toree.kernel.interpreter.sql
 import java.net.URL
 
 import org.apache.toree.interpreter.Results.Result
-import org.apache.toree.interpreter.{ExecuteFailure, ExecuteOutput, Interpreter}
+import org.apache.toree.interpreter._
 import org.apache.toree.kernel.api.KernelLike
 import org.apache.toree.kernel.BuildInfo
 
@@ -107,6 +107,6 @@ class SqlInterpreter() extends Interpreter {
   // Unsupported
   override def doQuietly[T](body: => T): T = ???
 
-  override def languageInfo: Map[String, String] = Map("name" -> "scala", "version" -> BuildInfo.scalaVersion)
+  override def languageInfo = LanguageInfo("scala", BuildInfo.scalaVersion, ".scala")
 
 }