Skip to content

Commit c604509

Browse files
committed
feat: enables graal store proxy by default.
1 parent 7926fe9 commit c604509

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

scripting/graalvm/src/main/java/io/gatehill/imposter/scripting/graalvm/service/GraalvmScriptServiceImpl.kt

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,6 @@ import org.apache.logging.log4j.LogManager
6262
import org.graalvm.polyglot.Context
6363
import org.graalvm.polyglot.Engine
6464
import org.graalvm.polyglot.HostAccess
65-
import javax.inject.Inject
6665

6766

6867
/**
@@ -87,17 +86,29 @@ class GraalvmScriptServiceImpl : ScriptService, Plugin {
8786
engine = Engine.newBuilder(JS_LANG_ID).build()
8887
}
8988

90-
@Inject
91-
fun onPostInject() {
92-
if (EnvVars.getEnv(ENV_IMPOSTER_GRAAL_STORE_PROXY)?.toBoolean() == true) {
93-
LOGGER.debug("Enabling Graal store proxy")
94-
val storeFactory = InjectorUtil.getInstance<StoreFactory>()
95-
storeFactory.storeInterceptors += { ObjectProxyingStore(it) }
96-
}
89+
private val enableStoreProxy = EnvVars.getEnv(ENV_IMPOSTER_GRAAL_STORE_PROXY)?.toBoolean() != false
90+
private var checkedStoreProxy = false
91+
92+
override fun initScript(script: ScriptSource) {
93+
checkEnableStoreProxy()
9794
}
9895

9996
override fun initInlineScript(scriptId: String, scriptCode: String) {
100-
LOGGER.trace("No op inline script init for script with ID: $scriptId")
97+
checkEnableStoreProxy()
98+
}
99+
100+
fun checkEnableStoreProxy() {
101+
if (!checkedStoreProxy) {
102+
checkedStoreProxy = true
103+
104+
if (enableStoreProxy) {
105+
LOGGER.trace("Graal store proxy enabled")
106+
val storeFactory = InjectorUtil.getInstance<StoreFactory>()
107+
storeFactory.storeInterceptors += { ObjectProxyingStore(it) }
108+
} else {
109+
LOGGER.trace("Graal store proxy disabled")
110+
}
111+
}
101112
}
102113

103114
override fun executeScript(

scripting/graalvm/src/test/java/io/gatehill/imposter/service/StoreJsonTest.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ class StoreJsonTest : AbstractBaseScriptTest() {
8282

8383
@Test
8484
fun `stringify to JSON`() {
85+
// init the store proxy
86+
getService().checkEnableStoreProxy()
87+
8588
val pluginConfig = configureScript()
8689
val resourceConfig = pluginConfig as BasicResourceConfig
8790

0 commit comments

Comments
 (0)