org.apache.batik.script.rhino
Class RhinoInterpreter

java.lang.Object
  extended byorg.apache.batik.script.rhino.RhinoInterpreter
All Implemented Interfaces:
Interpreter, Localizable
Direct Known Subclasses:
SVG12RhinoInterpreter

public class RhinoInterpreter
extends Object
implements Interpreter

A simple implementation of Interpreter interface to use Rhino ECMAScript interpreter.


Nested Class Summary
static interface RhinoInterpreter.ArgumentsBuilder
          To build an argument list.
protected static class RhinoInterpreter.Entry
          Class to store cached compiled scripts.
protected  class RhinoInterpreter.Factory
          Factory for Context objects.
 
Field Summary
static String BIND_NAME_WINDOW
          Name of the "window" object when referenced by scripts
protected  ClassShutter classShutter
          Class shutter.
protected  LinkedList compiledScripts
          List of cached compiled scripts.
protected  ContextFactory contextFactory
          Factory object for creating Contexts.
protected static List contexts
          Context vector, to make sure we are not setting the security context too many times
protected  Context defaultContext
          Default Context for scripts.
protected  ScriptableObject globalObject
          The global object.
protected  RhinoClassLoader rhinoClassLoader
          The Rhino 'security domain'.
protected  SecurityController securityController
          The SecurityController implementation for Batik, which ensures scripts have access to the server they were downloaded from
static String SOURCE_NAME_SVG
          Constant used to describe an SVG source
protected  Window window
          The window object.
protected  WrapFactory wrapFactory
          Factory for Java wrapper objects.
 
Constructor Summary
RhinoInterpreter(URL documentURL)
          Build a Interpreter for ECMAScript using Rhino.
RhinoInterpreter(URL documentURL, ImportInfo imports)
          Build a Interpreter for ECMAScript using Rhino.
 
Method Summary
 void bindObject(String name, Object object)
          This method registers a particular Java Object in the environment of the interpreter.
protected  ScriptableObject createGlobalObject(Context ctx)
          Creates the global object.
protected  void defineGlobalWrapperClass(Scriptable global)
          Defines the class for the global object.
 void dispose()
          For RhinoInterpreter this method flushes the Rhino caches to avoid memory leaks.
 Object evaluate(Reader scriptreader)
          This method evaluates a piece of ECMAScript.
 Object evaluate(Reader scriptReader, String description)
          This method evaluates a piece of ECMAScript.
 Object evaluate(String scriptStr)
          This method evaluates a piece of ECMA script.
 String formatMessage(String key, Object[] args)
          Creates and returns a localized message, given the key of the message, 0, data.length in the resource bundle and the message parameters.
 AccessControlContext getAccessControlContext()
          Returns the AccessControlContext associated with this Interpreter.
 ContextFactory getContextFactory()
          Returns the ContextFactory for this interpreter.
protected  ScriptableObject getGlobalObject()
          This method returns the ECMAScript global object used by this interpreter.
 Locale getLocale()
          Returns the current locale or null if the locale currently used is the default one.
 String[] getMimeTypes()
          Returns the content types of the scripting languages this interpreter handles.
 Window getWindow()
          Returns the window object for this interpreter.
protected  void init(URL documentURL, ImportInfo imports)
           
 void setLocale(Locale locale)
          Provides a way to the user to specify a locale which override the default one.
 void setOut(Writer out)
          By default Rhino has no output method in its language.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SOURCE_NAME_SVG

public static final String SOURCE_NAME_SVG
Constant used to describe an SVG source

See Also:
Constant Field Values

BIND_NAME_WINDOW

public static final String BIND_NAME_WINDOW
Name of the "window" object when referenced by scripts

See Also:
Constant Field Values

contexts

protected static List contexts
Context vector, to make sure we are not setting the security context too many times


window

protected Window window
The window object.


globalObject

protected ScriptableObject globalObject
The global object.


compiledScripts

protected LinkedList compiledScripts
List of cached compiled scripts.


wrapFactory

protected WrapFactory wrapFactory
Factory for Java wrapper objects.


classShutter

protected ClassShutter classShutter
Class shutter.


rhinoClassLoader

protected RhinoClassLoader rhinoClassLoader
The Rhino 'security domain'. We use the RhinoClassLoader which will grant permissions to connect to the document URL.


securityController

protected SecurityController securityController
The SecurityController implementation for Batik, which ensures scripts have access to the server they were downloaded from


contextFactory

protected ContextFactory contextFactory
Factory object for creating Contexts.


defaultContext

protected Context defaultContext
Default Context for scripts. This is used only for efficiency reasons.

Constructor Detail

RhinoInterpreter

public RhinoInterpreter(URL documentURL)
Build a Interpreter for ECMAScript using Rhino.

Parameters:
documentURL - the URL for the document which references
See Also:
Interpreter, InterpreterPool

RhinoInterpreter

public RhinoInterpreter(URL documentURL,
                        ImportInfo imports)
Build a Interpreter for ECMAScript using Rhino.

Parameters:
documentURL - the URL for the document which references
imports - the set of Java classes/packages to import into the scripting enviornment.
See Also:
Interpreter, InterpreterPool
Method Detail

init

protected void init(URL documentURL,
                    ImportInfo imports)

getMimeTypes

public String[] getMimeTypes()
Returns the content types of the scripting languages this interpreter handles.

Specified by:
getMimeTypes in interface Interpreter

getWindow

public Window getWindow()
Returns the window object for this interpreter.


getContextFactory

public ContextFactory getContextFactory()
Returns the ContextFactory for this interpreter.


defineGlobalWrapperClass

protected void defineGlobalWrapperClass(Scriptable global)
Defines the class for the global object.


createGlobalObject

protected ScriptableObject createGlobalObject(Context ctx)
Creates the global object.


getAccessControlContext

public AccessControlContext getAccessControlContext()
Returns the AccessControlContext associated with this Interpreter.

See Also:
RhinoClassLoader

getGlobalObject

protected ScriptableObject getGlobalObject()
This method returns the ECMAScript global object used by this interpreter.


evaluate

public Object evaluate(Reader scriptreader)
                throws IOException
This method evaluates a piece of ECMAScript.

Specified by:
evaluate in interface Interpreter
Parameters:
scriptreader - a java.io.Reader on the piece of script
Returns:
if no exception is thrown during the call, should return the value of the last expression evaluated in the script.
Throws:
IOException

evaluate

public Object evaluate(Reader scriptReader,
                       String description)
                throws IOException
This method evaluates a piece of ECMAScript.

Specified by:
evaluate in interface Interpreter
Parameters:
scriptReader - a java.io.Reader on the piece of script
description - description which can be later used (e.g., for error messages).
Returns:
if no exception is thrown during the call, should return the value of the last expression evaluated in the script.
Throws:
IOException

evaluate

public Object evaluate(String scriptStr)
This method evaluates a piece of ECMA script. The first time a String is passed, it is compiled and evaluated. At next call, the piece of script will only be evaluated to prevent from recompiling it.

Specified by:
evaluate in interface Interpreter
Parameters:
scriptStr - the piece of script
Returns:
if no exception is thrown during the call, should return the value of the last expression evaluated in the script.

dispose

public void dispose()
For RhinoInterpreter this method flushes the Rhino caches to avoid memory leaks.

Specified by:
dispose in interface Interpreter

bindObject

public void bindObject(String name,
                       Object object)
This method registers a particular Java Object in the environment of the interpreter.

Specified by:
bindObject in interface Interpreter
Parameters:
name - the name of the script object to create
object - the Java object

setOut

public void setOut(Writer out)
By default Rhino has no output method in its language. That's why this method does nothing.

Specified by:
setOut in interface Interpreter
Parameters:
out - the new out Writer.

getLocale

public Locale getLocale()
Returns the current locale or null if the locale currently used is the default one.

Specified by:
getLocale in interface Localizable

setLocale

public void setLocale(Locale locale)
Provides a way to the user to specify a locale which override the default one. If null is passed to this method, the used locale becomes the global one.

Specified by:
setLocale in interface Localizable
Parameters:
locale - The locale to set.

formatMessage

public String formatMessage(String key,
                            Object[] args)
Creates and returns a localized message, given the key of the message, 0, data.length in the resource bundle and the message parameters. The messages in the resource bundle must have the syntax described in the java.text.MessageFormat class documentation.

Specified by:
formatMessage in interface Localizable
Parameters:
key - The key used to retreive the message from the resource bundle.
args - The objects that compose the message.
Throws:
MissingResourceException - if the key is not in the bundle.


Copyright © 2009 Apache Software Foundation. All Rights Reserved.