blob: 0d8930115415d9eea5193950a83a133ee0759df5 [file] [log] [blame]
package javax.script;
import java.io.Reader;
/**
* The ScriptEngine interfaces contains only the methods which are expected to
* be fully functional in every Java ScriptEngine.
*
* @author Nandika Jayawardana <nandika@opensource.lk>
* @author Sanka Samaranayake <sanka@opensource.lk>
*/
public interface ScriptEngine {
/**
* Reserved key associated with an object array which is used to
* pass set of positional parameters to the ScriptEngines.
*/
public static final String ARGV="javax.script.argv";
/**
* Reserved key associated with name of the file which contains
* the source of the script.
*/
public static final String FILENAME = "javax.script.filename";
/**
* Reserved key associated with the name of the Java
* ScriptEngine
*/
public static final String ENGINE = "javax.script.engine";
/**
* Reserved key associated with the version of the Java
* ScriptEngine
*/
public static final String ENGINE_VERSION = "javax.script.engine.version";
/**
* Reserved key associated with the name of the supported
* scripting language
*/
public static final String LANGUAGE = "javax.script.language";
/**
* Reserved key associated with the version of the supported
* scripting language
*/
public static final String LANGUAGE_VERSION = "javax,script.language_version";
/**
* Reserved key associated with the named value which identifies
* the short name of the supported language
*/
public static final String NAME = "javax.script.name";
/**
* Retrieves an uninitailized namespace which can be used as the scope of
* the ScriptEngine.
*
* @return an initialzed namespace which can be used to repalce the state
* of the ScriptEngine
*/
public Namespace createNamespace();
/**
* Evaluates a piece of script obtained using the specified
* reader as the script source. Returns null for non-returning
* scripts.
*
* @param reader the source of the script
* @return the value of the evaluated script
* @throws ScriptException if an error occurs
*/
public Object eval(Reader reader) throws ScriptException;
/**
* Evaluates a piece of scripts obtained using a reader as the
* script source and using the specified namespace as the
* SCRIPT_SCOPE. Returns null for non-returning scripts.
*
* @param reader the script source used to obtained the script
* @param namespace the namespace to be used as SCRIPT_SCOPE
* @return the value of the evaluated script
* @throws ScriptException if an error occurs
*/
public Object eval(Reader reader,Namespace namespace)
throws ScriptException;
/**
* Evaluates a script obtained using the specified reader as the
* script source and using the namespaces in the specifed
* ScriptContext. Returns null for non-returning scripts
*
* @param reader the script source
* @param context the context contianing different namespace for
* script evaluation
* @return the value of the evaluated script
* @throws ScriptException if an error occurs
*/
public Object eval(Reader reader,ScriptContext context)
throws ScriptException;
/**
* Evaluates a piece of script and returns the resultant object.
* Returns null for non-returning scripts.
*
* @param script the String representation of the script
* @return the value of the evaluated script
* @throws ScriptException if an error occurs
*/
public Object eval(String script) throws ScriptException;
/**
* Evaluates a piece of script using the specified namespace as
* the SCRIPT_SCOPE. Retruns null for non-returning scripts.
*
* @param script the String representation of the script
* @param namespace the namespace to be used as the SCRIPT_SCOPE
* @return the value of the evaluated script
* @throws ScriptException if an error occurs
*/
public Object eval(String script ,Namespace namespace)
throws ScriptException;
/**
* Evaluates a script using the namespaces in the specifed
* ScriptContext. Return null for non-returning scripts.
*
* @param script the String representation of the script
* @param context tbe ScriptContext containing namespaces for the
* script evaluation
* @return the value of the evaluated script
* @throws ScriptException if an error occurs
*/
public Object eval(String script,ScriptContext context)
throws ScriptException;
/**
* Retrieves the value which is associated with the specified key
* in the state of the ScriptEngine.
*
* @param key the key associated with value.
* @return an object value which is associated with the key
*/
public Object get(String key);
/**
* Retrieves a ScriptEngineFactory for the class to which
* describes the underlying ScriptEngine.
*
* @return an instance of ScriptEngineFactory which describes the
* underlying ScriptEngine
*/
public ScriptEngineFactory getFactory();
/**
* Retrieves a reference to the associated namespace for the
* specified level of scope.
*
* Possible scopes are:
*
* GLOBAL_SCOPE :
* if the ScriptEngine was created by ScriptingEngineManager
* then GLOBAL_SCOPE of it is returned (or null if there is no
* GLOBAL_SCOPE stored in the ScriptEngine).
*
* ENGINE_SCOPE :
* the set of key-value pairs stored in the ScriptEngine is
* returned.
*
* @param scope the specified level of scope
* @return associated namespace for the specified level of scope
* @throws IllegalArgumentException if the scope is invalid
*/
public Namespace getNamespace(int scope) throws IllegalArgumentException;
/**
* Associates a key and a value in the ScriptEngine namespace.
*
* @param key the specified key associated with the value
* @param value value which is to be associated with the
* specified key
* @throws IllegalArgumentException if the key is null
*/
public void put(String key, Object value) throws IllegalArgumentException;
/**
* Associates the specified namespace with the specified level of
* scope.
*
* @param namespace namespace to be associated with the specified
* level of scope
* @param scope level of scope for which the namespace should
* be associated with
* @throws if the scope is invalid
*/
public void setNamespace(Namespace namespace,int scope) throws
IllegalArgumentException;
}