|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--com.caucho.es.Script
The Script object represents a compiled JavaScript. Executing it is thread safe. To create a Script, use the Resin class to parse a file.
Java programs set JavaScript Global properties by adding objects to a HashMap. Typically you will at least assign the 'File' and the 'out' objects. The running script will see these objects as properties of the Global object. If you set the 'out' object, the script can use the bare bones 'writeln("foo")' to write to 'out'.
HashMap map = new HashMap();
map.put("File", Pwd.lookup());
map.put("out", System.out);
map.put("myObject", myObject);
script.execute(map, null);
You can also make any Java object be the global prototype. Essentially, the effect is similar to the HashMap technique, but it's a little simpler.
Scripts are thread-safe. Multiple script instances can safely execute in separate threads. Script.execute creates the entire JavaScript global object hierarchy fresh for each execution. So one Script execution cannot interfere with another, even by doing evil things like modifying the Object prototype.
Of course, wrapped Java objects shared by script invocations must still be synchronized.
Field Summary | |
protected Path |
classDir
|
protected Path |
scriptPath
|
Constructor Summary | |
Script()
|
Method Summary | |
java.lang.String |
execute(java.util.HashMap properties,
java.lang.Object proto)
Execute the script; the main useful entry. |
ScriptClosure |
executeClosure(java.util.HashMap properties,
java.lang.Object proto)
Execute the program, returning a closure of the global state. |
void |
export(ESObject dest,
ESObject src)
|
com.caucho.java.LineMap |
getLineMap()
|
abstract ESGlobal |
initClass(Global resin)
|
ESGlobal |
initClass(Global resin,
ESObject global)
|
boolean |
isModified()
Returns true if the script is no longer the latest version. |
void |
setClassDir(Path classDir)
|
void |
setScriptPath(Path scriptPath)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected Path scriptPath
protected Path classDir
Constructor Detail |
public Script()
Method Detail |
public boolean isModified()
public void setScriptPath(Path scriptPath)
public void setClassDir(Path classDir)
public com.caucho.java.LineMap getLineMap()
public java.lang.String execute(java.util.HashMap properties, java.lang.Object proto) throws java.lang.Exception
Calling programs can make Java objects available as properties of the global object by creating a property hash map or assigning a global prototype.
HashMap map = new HashMap();
map.put("File", Pwd.lookup());
map.put("out", System.out);
map.put("myObject", myObject);
script.execute(map, null);
properties
- A hash map of global properties.proto
- Global prototype. Gives the script direct access to
the java methods of the object.loader
- Class loader.public ScriptClosure executeClosure(java.util.HashMap properties, java.lang.Object proto) throws java.lang.Exception
Later routines can then call into the closure.
properties
- A hash map of global properties.proto
- Global prototype. Gives the script direct access to
the java methods of the object.public ESGlobal initClass(Global resin, ESObject global) throws java.lang.Exception
public abstract ESGlobal initClass(Global resin) throws java.lang.Exception
public void export(ESObject dest, ESObject src) throws java.lang.Exception
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |