com.caucho.es
Class Script

java.lang.Object
  |
  +--com.caucho.es.Script

public abstract class Script
extends java.lang.Object

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.


Constructor Summary
Script()
           
 
Method Summary
 void _init(Global resin, ESObject global)
           
abstract  ESBase call(int n, Call call, int length)
           
 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)
           
 long getLastModified()
          Returns the lastModified time of the script.
 com.caucho.java.LineMap getLineMap()
           
 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
 

Constructor Detail

Script

public Script()
Method Detail

getLastModified

public long getLastModified()
Returns the lastModified time of the script. The last modified time is the maximum of all imported script modified times.

getLastModified is vital for dynamic applications like JSP which need to reload the script when it changes.


setScriptPath

public void setScriptPath(Path[] scriptPath)

setClassDir

public void setClassDir(Path classDir)

getLineMap

public com.caucho.java.LineMap getLineMap()

execute

public java.lang.String execute(java.util.HashMap properties,
                                java.lang.Object proto)
                         throws java.lang.Exception
Execute the script; the main useful entry.

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);
 
Parameters:
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.
Returns:
String value of the last expression, like the JavaScript eval. This is useful only for testing.

executeClosure

public ScriptClosure executeClosure(java.util.HashMap properties,
                                    java.lang.Object proto)
                             throws ESException
Execute the program, returning a closure of the global state.

Later routines can then call into the closure.

Parameters:
properties - A hash map of global properties.
proto - Global prototype. Gives the script direct access to the java methods of the object.

call

public abstract ESBase call(int n,
                            Call call,
                            int length)
                     throws java.lang.Exception

_init

public void _init(Global resin,
                  ESObject global)
           throws java.lang.Exception

export

public void export(ESObject dest,
                   ESObject src)
            throws java.lang.Exception