* Forward put()s from the thread scope to the shared scope during
repository injection. Fixes bug 504.
This commit is contained in:
parent
c04d2db80f
commit
11022c42b6
2 changed files with 18 additions and 2 deletions
|
@ -108,7 +108,14 @@ public class GlobalObject extends ImporterTopLevel implements PropertyRecorder {
|
||||||
public void put(String name, Scriptable start, Object value) {
|
public void put(String name, Scriptable start, Object value) {
|
||||||
// register property for PropertyRecorder interface
|
// register property for PropertyRecorder interface
|
||||||
if (isRecording) {
|
if (isRecording) {
|
||||||
changedProperties.add(name);
|
// if during compilation a property is set on the thread scope
|
||||||
|
// forward it to the shared scope (bug 504)
|
||||||
|
if (isThreadScope) {
|
||||||
|
core.global.put(name, core.global, value);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
changedProperties.add(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
super.put(name, start, value);
|
super.put(name, start, value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -526,7 +526,16 @@ public class RhinoEngine implements ScriptingEngine {
|
||||||
* @param resource a code resource
|
* @param resource a code resource
|
||||||
*/
|
*/
|
||||||
public void injectCodeResource(String typename, Resource resource) {
|
public void injectCodeResource(String typename, Resource resource) {
|
||||||
core.injectCodeResource(typename, resource);
|
// we activate recording on thread scope to make it forward
|
||||||
|
// property puts to the shared scope (bug 504)
|
||||||
|
if (global != null)
|
||||||
|
global.startRecording();
|
||||||
|
try {
|
||||||
|
core.injectCodeResource(typename, resource);
|
||||||
|
} finally {
|
||||||
|
if (global != null)
|
||||||
|
global.stopRecording();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue