Skip to content

Commit 8d95a6b

Browse files
committed
[java-shell] override set operator for GraalVM Value to use 'v[...] = ...' notation
1 parent eadb692 commit 8d95a6b

File tree

4 files changed

+13
-15
lines changed

4 files changed

+13
-15
lines changed

packages/java-shell/src/main/kotlin/com/mongodb/mongosh/ConsoleLogSupport.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ internal class ConsoleLogSupport(context: MongoShellContext, converter: MongoShe
1010
val print = context.jsFun { args ->
1111
printedValues?.add(args.map { converter.toJava(it).value })
1212
}
13-
context.bindings.putMember("print", print)
13+
context.bindings["print"] = print
1414
@Suppress("JSPrimitiveTypeWrapperUsage")
1515
val console = context.eval("new Object()")
16-
console.putMember("log", print)
17-
console.putMember("error", print)
18-
context.bindings.putMember("console", console)
16+
console["log"] = print
17+
console["error"] = print
18+
context.bindings["console"] = console
1919
}
2020

2121
fun <T> withConsoleLogEnabled(printedValues: MutableList<List<Any?>>, func: () -> T): T {

packages/java-shell/src/main/kotlin/com/mongodb/mongosh/MongoShellConverter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ internal class MongoShellConverter(private val context: MongoShellContext, priva
3434
@Suppress("JSPrimitiveTypeWrapperUsage")
3535
val jsMap = context.eval("new Object()")
3636
for ((key, value) in map.entries) {
37-
jsMap.putMember(key as String, toJs(value))
37+
jsMap[key as String] = toJs(value)
3838
}
3939
return jsMap
4040
}

packages/java-shell/src/main/kotlin/com/mongodb/mongosh/MongoShellEvaluator.kt

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,14 @@ internal class MongoShellEvaluator(client: MongoClient, private val context: Mon
4949
}
5050

5151
private fun initContext(bindings: Value, jsSymbol: Value) {
52-
bindings.putMember("BSONSymbol", bindings["Symbol"])
53-
bindings.putMember("Symbol", jsSymbol)
52+
bindings["BSONSymbol"] = bindings["Symbol"]
53+
bindings["Symbol"] = jsSymbol
5454
val date = context.eval("(dateHelper) => function inner() { return dateHelper(new.target !== undefined, ...arguments) }", "dateHelper_script")
5555
.execute(ProxyExecutable { args -> dateHelper(args[0].asBoolean(), args.drop(1)) })
56-
date.putMember("now", ProxyExecutable { System.currentTimeMillis() })
57-
bindings.putMember("Date", date)
58-
val isoDate = context.jsFun { args -> dateHelper(true, args.toList()) }
59-
bindings.putMember("ISODate", isoDate)
60-
bindings.putMember("UUID", context.jsFun { args -> if (args.isEmpty()) UUID.randomUUID() else UUID.fromString(args[0].asString()) })
56+
date["now"] = ProxyExecutable { System.currentTimeMillis() }
57+
bindings["Date"] = date
58+
bindings["ISODate"] = context.jsFun { args -> dateHelper(true, args.toList()) }
59+
bindings["UUID"] = context.jsFun { args -> if (args.isEmpty()) UUID.randomUUID() else UUID.fromString(args[0].asString()) }
6160
}
6261

6362
private fun shellResult(printable: Value, type: String): Value {

packages/java-shell/src/main/kotlin/com/mongodb/mongosh/util.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ import org.graalvm.polyglot.Value
66
import org.intellij.lang.annotations.Language
77

88

9-
internal inline operator fun Value.get(identifier: String): Value? {
10-
return getMember(identifier)
11-
}
9+
internal inline operator fun Value.get(identifier: String): Value? = getMember(identifier)
10+
internal inline operator fun Value.set(identifier: String, value: Any?) = putMember(identifier, value)
1211

1312
internal inline fun Value.instanceOf(context: MongoShellContext, @Language("js") clazz: String): Boolean {
1413
return context.eval("(x) => x instanceof $clazz", "instance_of_script").execute(this).asBoolean()

0 commit comments

Comments
 (0)