Hi,
I tried to use Delegator class to implement some functionality on variable
assignment. I have my object that implements Scriptable and would like to
call additional functionality when instances of this objects are assigned to
variable. Here is a part of my JUnit test for this class.
final Context context = ContextFactory.getGlobal().enterContext();
final ScriptableObject scope = context.initStandardObjects();
final Delegator delegator = new Delegator(scope);
ScriptableObject.putConstProperty(delegator, "imports", new
ImportsObject(
scope, null));
context.evaluateString(delegator,
"const test = imports.net.antshell.missing;", "no name", 0,
null);
When I run this test I get following exception:
java.lang.Exception: Unexpected exception,
expected<org.mozilla.javascript.WrappedException> but
was<java.lang.StackOverflowError>
at
org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:110)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
at
org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at
org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
at
org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at
org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at
org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at
org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at
org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.StackOverflowError
at
org.mozilla.javascript.ScriptableObject.accessSlot(ScriptableObject.java:2134)
at
org.mozilla.javascript.ScriptableObject.getSlot(ScriptableObject.java:2124)
at
org.mozilla.javascript.ScriptableObject.putImpl(ScriptableObject.java:2017)
at
org.mozilla.javascript.ScriptableObject.put(ScriptableObject.java:312)
at
org.mozilla.javascript.IdScriptableObject.put(IdScriptableObject.java:419)
at org.mozilla.javascript.Delegator.put(Delegator.java:149)
at
org.mozilla.javascript.ScriptableObject.put(ScriptableObject.java:316)
at
org.mozilla.javascript.IdScriptableObject.put(IdScriptableObject.java:419)
I wanted to override put method in Delegator and implement my functionality
in this place. Is there any other way to do it? I must be honset this my
first week with Rhino.
Regards,
Jarek
_______________________________________________
dev-tech-js-engine-rhino mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino