adams.core.scripting
Class Jython

java.lang.Object
  extended by adams.core.scripting.Jython
All Implemented Interfaces:
Serializable

public class Jython
extends Object
implements Serializable

A helper class for Jython.

Version:
$Revision: 5352 $
Author:
fracpete (fracpete at waikato dot ac dot nz)
See Also:
scripting.Jython, Serialized Form

Field Summary
static String CLASS_PYTHONINERPRETER
          the classname of the Python interpreter.
static String CLASS_PYTHONOBJECTINPUTSTREAM
          the classname of the Python ObjectInputStream.
protected  Object m_Interpreter
          the interpreter.
protected static boolean m_Present
          whether the Jython classes are in the Classpath.
 
Constructor Summary
Jython()
          default constructor, tries to instantiate a Python Interpreter.
 
Method Summary
static Object deserialize(InputStream in)
          deserializes the Python Object from the stream.
 Object getInterpreter()
          returns the currently used Python Interpreter.
static Object invoke(Object o, String methodName, Class[] paramClasses, Object[] paramValues)
          executes the specified method and returns the result, if any.
 Object invoke(String methodName, Class[] paramClasses, Object[] paramValues)
          executes the specified method on the current interpreter and returns the result, if any.
static boolean isPresent()
          returns whether the Jython classes are present or not, i.e.
static Object[] loadScriptObject(Class cls, adams.core.io.PlaceholderFile scriptFile, JythonScript inlineScript, String scriptOptions)
          Loads the scripts object and sets its options.
static void main(String[] args)
          If no arguments are given, it just prints the presence of the Jython classes, otherwise it expects a Jython filename to execute.
static Object newInstance(File file, Class template)
          loads the module and returns a new instance of it as instance of the provided Java class template.
static Object newInstance(File file, Class template, File[] paths)
          loads the module and returns a new instance of it as instance of the provided Java class template.
static Object newInterpreter()
          initializes and returns a Python Interpreter.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CLASS_PYTHONINERPRETER

public static final String CLASS_PYTHONINERPRETER
the classname of the Python interpreter.

See Also:
Constant Field Values

CLASS_PYTHONOBJECTINPUTSTREAM

public static final String CLASS_PYTHONOBJECTINPUTSTREAM
the classname of the Python ObjectInputStream.

See Also:
Constant Field Values

m_Present

protected static boolean m_Present
whether the Jython classes are in the Classpath.


m_Interpreter

protected Object m_Interpreter
the interpreter.

Constructor Detail

Jython

public Jython()
default constructor, tries to instantiate a Python Interpreter.

Method Detail

getInterpreter

public Object getInterpreter()
returns the currently used Python Interpreter.

Returns:
the interpreter, can be null

invoke

public Object invoke(String methodName,
                     Class[] paramClasses,
                     Object[] paramValues)
executes the specified method on the current interpreter and returns the result, if any.

Parameters:
methodName - the name of the method
paramClasses - the classes of the parameters
paramValues - the values of the parameters
Returns:
the return value of the method, if any (in that case null)

isPresent

public static boolean isPresent()
returns whether the Jython classes are present or not, i.e. whether the classes are in the classpath or not

Returns:
whether the Jython classes are available

newInterpreter

public static Object newInterpreter()
initializes and returns a Python Interpreter.

Returns:
the interpreter or null if Jython classes not present

newInstance

public static Object newInstance(File file,
                                 Class template)
loads the module and returns a new instance of it as instance of the provided Java class template.

Parameters:
file - the Jython module file
template - the template for the returned Java object
Returns:
the Jython object

newInstance

public static Object newInstance(File file,
                                 Class template,
                                 File[] paths)
loads the module and returns a new instance of it as instance of the provided Java class template. The paths are added to 'sys.path' - can be used if the module depends on other Jython modules.

Parameters:
file - the Jython module file
template - the template for the returned Java object
paths - additional paths to add to "sys.path"
Returns:
the Jython object

invoke

public static Object invoke(Object o,
                            String methodName,
                            Class[] paramClasses,
                            Object[] paramValues)
executes the specified method and returns the result, if any.

Parameters:
o - the object the method should be called from, e.g., a Python Interpreter
methodName - the name of the method
paramClasses - the classes of the parameters
paramValues - the values of the parameters
Returns:
the return value of the method, if any (in that case null)

deserialize

public static Object deserialize(InputStream in)
deserializes the Python Object from the stream.

Parameters:
in - the stream to use
Returns:
the deserialized object

loadScriptObject

public static Object[] loadScriptObject(Class cls,
                                        adams.core.io.PlaceholderFile scriptFile,
                                        JythonScript inlineScript,
                                        String scriptOptions)
Loads the scripts object and sets its options.

Parameters:
cls - the class to instantiate
scriptFile - the external file to load
inlineScript - the inline script to load if external file points to a directory
scriptOptions - the options to set
Returns:
element 0: error messsage (null if ok), element 1: script object

main

public static void main(String[] args)
If no arguments are given, it just prints the presence of the Jython classes, otherwise it expects a Jython filename to execute.

Parameters:
args - commandline arguments


Copyright © 2012 University of Waikato, Hamilton, NZ. All Rights Reserved.