org.apache.bsf.util

Class EngineUtils

public class EngineUtils extends Object

This class contains utilities that language integrators can use when implementing the BSFEngine interface.

Author: Sanjiva Weerawarana Sam Ruby Rony G. Flatscher (added addEventListenerReturningEventInfos)

Method Summary
static voidaddEventListener(Object bean, String eventSetName, String filter, BSFEngine engine, BSFManager manager, String source, int lineNo, int columnNo, Object script)
Add a script as a listener to some event coming out of an object.
static voidaddEventListenerReturningEventInfos(Object bean, String eventSetName, String filter, BSFEngine engine, BSFManager manager, String source, int lineNo, int columnNo, Object script, Object dataFromScriptingEngine)
Add a script as a listener to some event coming out of an object.
static ObjectcallBeanMethod(Object bean, String methodName, Object[] args)
Finds and invokes a method with the given signature on the given bean.
static ObjectcreateBean(String className, Object[] args)
Creates a new bean.
static StringgetTypeSignatureString(Class cl)
Given a class return the type signature string fragment for it.
static ClassloadClass(BSFManager mgr, String name)
Load a class using the class loader of given manager.

Method Detail

addEventListener

public static void addEventListener(Object bean, String eventSetName, String filter, BSFEngine engine, BSFManager manager, String source, int lineNo, int columnNo, Object script)
Add a script as a listener to some event coming out of an object. The first two args identify the src of the event and the event set and the rest identify the script which should be run when the event fires.

Parameters: bean event source eventSetName name of event set from event src to bind to filter filter for events engine BSFEngine which can run this script manager BSFManager of the above engine source (context info) the source of this expression (e.g., filename) lineNo (context info) the line number in source for expr columnNo (context info) the column number in source for expr script the script to execute when the event occurs

Throws: BSFException if anything goes wrong while running the script

addEventListenerReturningEventInfos

public static void addEventListenerReturningEventInfos(Object bean, String eventSetName, String filter, BSFEngine engine, BSFManager manager, String source, int lineNo, int columnNo, Object script, Object dataFromScriptingEngine)
Add a script as a listener to some event coming out of an object. The first two args identify the src of the event and the event set and the rest identify the script which should be run when the event fires. The processing will use the engine's apply() method.

Parameters: bean event source eventSetName name of event set from event src to bind to filter filter for events engine BSFEngine which can run this script manager BSFManager of the above engine source (context info) the source of this expression (e.g., filename) lineNo (context info) the line number in source for expr columnNo (context info) the column number in source for expr script the script to execute when the event occurs dataFromScriptingEngine this contains any object supplied by the scripting engine and gets sent back with the supplied script, if the event occurs. This could be used e.g. for indicating to the scripting engine which scripting engine object/routine/function/procedure should be ultimately informed of the event occurrence.

Throws: BSFException if anything goes wrong while running the script

callBeanMethod

public static Object callBeanMethod(Object bean, String methodName, Object[] args)
Finds and invokes a method with the given signature on the given bean. The signature of the method that's invoked is first taken as the types of the args, but if that fails, this tries to convert any primitive wrapper type args to their primitive counterparts to see whether a method exists that way. If it does, done.

Parameters: bean the object on which to invoke the method methodName name of the method args arguments to be given to the method

Returns: the result of invoking the method, if any

Throws: BSFException if something goes wrong

createBean

public static Object createBean(String className, Object[] args)
Creates a new bean. The signature of the constructor that's invoked is first taken as the types of the args, but if that fails, this tries to convert any primitive wrapper type args to their primitive counterparts to see whether a method exists that way. If it does, done.

Parameters: className fully qualified name of class to instantiate args array of constructor args (or null if none)

Returns: the created bean

Throws: BSFException if something goes wrong (@see org.apache.cs.util.MethodUtils for the real exceptions that can occur).

getTypeSignatureString

public static String getTypeSignatureString(Class cl)
Given a class return the type signature string fragment for it. That is, return "I" for int, "J" for long, ... etc..

Parameters: cl class object for whom the signature fragment is needed.

Returns: the string representing the type signature

loadClass

public static Class loadClass(BSFManager mgr, String name)
Load a class using the class loader of given manager. If that fails try using a class loader that loads from the tempdir of the manager.

Parameters: mgr BSFManager who's classLoader and tempDir props are consulted name name of the class to load

Returns: the loaded class

Throws: BSFException if something goes wrong.