Code works in R2, but fails in R3: sharedScope = new ImporterTopLevel(cx); ScriptableObject.putProperty(sharedScope, "Spring", Context.javaToJS(getApplicationContext(), sharedScope)); ... Scriptable threadScope = context.newObject(sharedScope); threadScope.setPrototype(sharedScope); threadScope.setParentScope(null);
Object o = context.evaluateString(threadScope, "Spring.getBean('messenger')", getBeanName(), FIRST_LINE, NULL_SECURITY_DOMAIN); i.e. Spring == org.springframework.context.support.ClassPathXmlApplicationContext messenger == spring bean name throws org.mozilla.javascript.WrappedException: Wrapped org.springframework.beans.factory.BeanDefinitionStoreException: Can only specify arguments for the getBean method when referring to a prototype bean definition (booblik#1) at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1786) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:183) at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:247) at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66) at org.mozilla.javascript.gen.booblik_7._c_script_0(booblik:1) at org.mozilla.javascript.gen.booblik_7.call(booblik) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:426) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3178) at org.mozilla.javascript.gen.booblik_7.call(booblik) at org.mozilla.javascript.gen.booblik_7.exec(booblik) at org.mozilla.javascript.Context.evaluateString(Context.java:1111) at net.sf.apr.spring.JavaScriptFactory.createJavaScriptObject(JavaScriptFactory.java:165) at net.sf.apr.spring.JavaScriptFactoryEx.createJavaScriptObject(JavaScriptFactoryEx.java:85) at net.sf.apr.spring.JavaScriptFactoryTest.testFactoryEx(JavaScriptFactoryTest.java:298) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) at org.junit.runners.ParentRunner.run(ParentRunner.java:236) at org.junit.runner.JUnitCore.run(JUnitCore.java:157) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62) Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Can only specify arguments for the getBean method when referring to a prototype bean definition at org.springframework.beans.factory.support.AbstractBeanFactory.checkMergedBeanDefinition(AbstractBeanFactory.java:1203) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:275) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1087) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161) ... 34 more Debug shows that problem is here: org.mozilla.javascript.NativeJavaMethod#call int index = findFunction(cx, methods, args); should find "public Object org.springframework.context.support.AbstractApplicationContext.getBean(String)" but it uses "public Object org.springframework.context.support.AbstractApplicationContext.getBean(String,Object[])" _______________________________________________ dev-tech-js-engine-rhino mailing list dev-tech-js-engine-rhino@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-tech-js-engine-rhino