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")
}