[infinispan-issues] [JBoss JIRA] (ISPN-6413) cache and marshaller are not passed to javascript in case of inner script running
Anna Manukyan (JIRA)
issues at jboss.org
Tue Jul 12 08:33:00 EDT 2016
[ https://issues.jboss.org/browse/ISPN-6413?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Anna Manukyan resolved ISPN-6413.
---------------------------------
Resolution: Rejected
Just found out that the example is not complete. The cache should be passed to the inner script so that it is available during it's execution.
So the call to {{testExecWithoutProp.js}} should be:
{code}
.......
scriptingManager.runScript("testExecWithoutProp.js", new TaskContext().cache(cache));
.......
{code}
> cache and marshaller are not passed to javascript in case of inner script running
> ---------------------------------------------------------------------------------
>
> Key: ISPN-6413
> URL: https://issues.jboss.org/browse/ISPN-6413
> Project: Infinispan
> Issue Type: Bug
> Components: Tasks
> Reporter: Anna Manukyan
> Assignee: Tristan Tarrant
> Priority: Minor
>
> The cache and marshaller objects are not passed to javascript when it is run from another javascript.
> {code}
> //testInnerScriptCall.js
> //mode=local,language=javascript,parameters=[a]
> var TaskContext = Java.type("org.infinispan.tasks.TaskContext")
> cache.put("processValue", "script1");
> scriptingManager.runScript("testExecWithoutProp.js");
> cache.get("processValue");
> //testExecWithoutProp.js
> // mode=local,language=javascript
> var val = cache.get("processValue");
> cache.put("processValue", val + ":additionFromJavascript");
> {code}
> This code gives the following exception:
> {code}
> org.infinispan.commons.CacheException: ISPN026003: Script execution error
> at org.infinispan.scripting.impl.ScriptingManagerImpl.execute(ScriptingManagerImpl.java:206)
> at org.infinispan.scripting.impl.LocalRunner.runScript(LocalRunner.java:19)
> at org.infinispan.scripting.impl.ScriptingManagerImpl.runScript(ScriptingManagerImpl.java:181)
> at org.infinispan.scripting.impl.ScriptingManagerImpl.runScript(ScriptingManagerImpl.java:143)
> at jdk.nashorn.internal.scripts.Script$36$\^eval\_.:program(<eval>:6)
> at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:640)
> at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:228)
> at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
> at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:418)
> at jdk.nashorn.api.scripting.NashornScriptEngine.access$300(NashornScriptEngine.java:73)
> at jdk.nashorn.api.scripting.NashornScriptEngine$3.eval(NashornScriptEngine.java:511)
> at javax.script.CompiledScript.eval(CompiledScript.java:92)
> at org.infinispan.scripting.impl.ScriptingManagerImpl.execute(ScriptingManagerImpl.java:198)
> at org.infinispan.scripting.impl.LocalRunner.runScript(LocalRunner.java:19)
> at org.infinispan.scripting.impl.ScriptingManagerImpl.runScript(ScriptingManagerImpl.java:181)
> at org.infinispan.scripting.ScriptingTest.testScriptCallFromJavascript(ScriptingTest.java:126)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:497)
> at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
> at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
> at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
> at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
> at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
> at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
> at org.testng.TestRunner.privateRun(TestRunner.java:767)
> at org.testng.TestRunner.run(TestRunner.java:617)
> at org.testng.SuiteRunner.runTest(SuiteRunner.java:348)
> at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:343)
> at org.testng.SuiteRunner.privateRun(SuiteRunner.java:305)
> at org.testng.SuiteRunner.run(SuiteRunner.java:254)
> at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
> at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
> at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
> at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
> at org.testng.TestNG.run(TestNG.java:1057)
> at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
> at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:122)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:497)
> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
> Caused by: javax.script.ScriptException: ReferenceError: "cache" is not defined in <eval> at line number 2
> at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:467)
> at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:423)
> at jdk.nashorn.api.scripting.NashornScriptEngine.access$300(NashornScriptEngine.java:73)
> at jdk.nashorn.api.scripting.NashornScriptEngine$3.eval(NashornScriptEngine.java:511)
> at javax.script.CompiledScript.eval(CompiledScript.java:92)
> at org.infinispan.scripting.impl.ScriptingManagerImpl.execute(ScriptingManagerImpl.java:198)
> ... 43 more
> Caused by: <eval>:2 ReferenceError: "cache" is not defined
> at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
> at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:319)
> at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:291)
> at jdk.nashorn.internal.objects.Global.__noSuchProperty__(Global.java:1432)
> at jdk.nashorn.internal.scripts.Script$35$\^eval\_.:program(<eval>:2)
> at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:640)
> at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:228)
> at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
> at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:418)
> ... 47 more
> {code}
> The test for this javascript is:
> {code}
> public void testScriptCallFromJavascript() throws Exception {
> String result = (String) scriptingManager.runScript("testInnerScriptCall.js",
> new TaskContext().cache(cacheManager.getCache("test_cache")).addParameter("a", "ahoj")).get();
> assertEquals("script1:additionFromJavascript", result);
> }
> {code}
> The same error is given for marshaller. The issue appears for both simple use as well as for execution over hotrod-client.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the infinispan-issues
mailing list