Skip to content

Commit 0815307

Browse files
committed
Simplify runtimeProperties: make it lazy static field
1 parent 83666ee commit 0815307

File tree

4 files changed

+12
-25
lines changed

4 files changed

+12
-25
lines changed

src/main/kotlin/org/jetbrains/kotlin/jupyter/config.kt

+8-10
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,13 @@ enum class JupyterSockets {
4040
iopub
4141
}
4242

43-
data class RuntimeKernelProperties(
44-
var version: String = "unspecified"
45-
) {
46-
constructor(map: Map<String, String>?) : this() {
47-
if (map == null)
48-
return
49-
version = map["version"] ?: version
50-
}
43+
data class RuntimeKernelProperties(val map: Map<String, String>) {
44+
val version: String
45+
get() = map["version"] ?: "unspecified"
46+
}
47+
48+
val runtimeProperties by lazy {
49+
RuntimeKernelProperties(ClassLoader.getSystemResource("runtime.properties")?.readText()?.parseIniConfig().orEmpty())
5150
}
5251

5352
data class KernelConfig(
@@ -57,8 +56,7 @@ data class KernelConfig(
5756
val signatureKey: String,
5857
val pollingIntervalMillis: Long = 100,
5958
val scriptClasspath: List<File> = emptyList(),
60-
val resolverConfig: ResolverConfig?,
61-
val runtimeProperties: RuntimeKernelProperties = RuntimeKernelProperties()
59+
val resolverConfig: ResolverConfig?
6260
)
6361

6462
val protocolVersion = "5.3"

src/main/kotlin/org/jetbrains/kotlin/jupyter/ikotlin.kt

+2-11
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,6 @@ fun printClassPath() {
4545
log.info("Current classpath: " + cp.joinToString())
4646
}
4747

48-
fun loadRuntimeProperties(): RuntimeKernelProperties {
49-
val map = object{}.javaClass.classLoader
50-
.getResource("runtime.properties")
51-
?.readText()?.parseIniConfig()
52-
53-
return RuntimeKernelProperties(map)
54-
}
55-
5648
fun main(vararg args: String) {
5749
try {
5850
log.info("Kernel args: "+ args.joinToString { it })
@@ -70,8 +62,7 @@ fun main(vararg args: String) {
7062
signatureScheme = sigScheme ?: "hmac1-sha256",
7163
signatureKey = if (sigScheme == null || key == null) "" else key,
7264
scriptClasspath = scriptClasspath,
73-
resolverConfig = loadResolverConfig(rootPath),
74-
runtimeProperties = loadRuntimeProperties()
65+
resolverConfig = loadResolverConfig(rootPath)
7566
))
7667
} catch (e: Exception) {
7768
log.error("exception running kernel with args: \"${args.joinToString()}\"", e)
@@ -89,7 +80,7 @@ fun kernelServer(config: KernelConfig) {
8980

9081
val executionCount = AtomicLong(1)
9182

92-
val repl = ReplForJupyter(config.scriptClasspath, config.resolverConfig, config.runtimeProperties)
83+
val repl = ReplForJupyter(config.scriptClasspath, config.resolverConfig)
9384

9485
val mainThread = Thread.currentThread()
9586

src/main/kotlin/org/jetbrains/kotlin/jupyter/protocol.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ data class ResponseWithMessage(val state: ResponseState, val result: MimeTypedRe
2222

2323
fun JupyterConnection.Socket.shellMessagesHandler(msg: Message, repl: ReplForJupyter?, executionCount: AtomicLong) {
2424
val msgType = msg.header!!["msg_type"]
25-
val replProperties = repl?.properties ?: RuntimeKernelProperties()
2625
when (msgType) {
2726
"kernel_info_request" ->
2827
sendWrapped(msg, makeReplyMessage(msg, "kernel_info_reply",
@@ -42,7 +41,7 @@ fun JupyterConnection.Socket.shellMessagesHandler(msg: Message, repl: ReplForJup
4241
// Jupyter lab Console support
4342
"banner" to "Kotlin language, version ${KotlinCompilerVersion.VERSION}",
4443
"implementation" to "Kotlin",
45-
"implementation_version" to replProperties.version,
44+
"implementation_version" to runtimeProperties.version,
4645
"status" to "ok"
4746
)))
4847
"history_request" ->

src/main/kotlin/org/jetbrains/kotlin/jupyter/repl.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ class ReplCompilerException(val errorResult: ReplCompileResult.Error) : ReplExce
3838
}
3939

4040
class ReplForJupyter(val scriptClasspath: List<File> = emptyList(),
41-
val config: ResolverConfig? = null,
42-
val properties: RuntimeKernelProperties = RuntimeKernelProperties()) {
41+
val config: ResolverConfig? = null) {
4342

4443
private val resolver = JupyterScriptDependenciesResolver(config)
4544

0 commit comments

Comments
 (0)