| java.lang.Object org.apache.bsf.BSFManager
BSFManager | public class BSFManager (Code) | | This class is the entry point to the bean scripting framework. An
application wishing to integrate scripting to a Java app would
place an instance of a BSFManager in their code and use its services
to register the beans they want to make available for scripting,
load scripting engines, and run scripts.
BSFManager serves as the registry of available scripting engines
as well. Loading and unloading of scripting engines is
supported as well. Each BSFManager loads one engine per language.
Several BSFManagers can be created per JVM.
author: Sanjiva Weerawarana author: Matthew J. Duftler author: Sam Ruby author: Olivier Gruber (added original debugging support) author: Don Schwarz (added support for registering languages dynamically) |
Method Summary | |
public Object | apply(String lang, String source, int lineNo, int columnNo, Object funcBody, Vector paramNames, Vector arguments) Apply the given anonymous function of the given language to the given
parameters and return the resulting value. | public void | compileApply(String lang, String source, int lineNo, int columnNo, Object funcBody, Vector paramNames, Vector arguments, CodeBuffer cb) Compile the application of the given anonymous function of the given
language to the given parameters into the given CodeBuffer. | public void | compileExpr(String lang, String source, int lineNo, int columnNo, Object expr, CodeBuffer cb) Compile the given expression of the given language into the given
CodeBuffer. | public void | compileScript(String lang, String source, int lineNo, int columnNo, Object script, CodeBuffer cb) Compile the given script of the given language into the given
CodeBuffer. | public void | declareBean(String beanName, Object bean, Class type) Declare a bean. | public Object | eval(String lang, String source, int lineNo, int columnNo, Object expr) Evaluate the given expression of the given language and return the
resulting value. | public void | exec(String lang, String source, int lineNo, int columnNo, Object script) Execute the given script of the given language. | public ClassLoader | getClassLoader() | public String | getClassPath() | public static String | getLangFromFilename(String fileName) Determine the language of a script file by looking at the file
extension. | public ObjectRegistry | getObjectRegistry() Return the current object registry of the manager. | public String | getTempDir() | public static String | getVersion() Returns the version string of BSF. | public void | iexec(String lang, String source, int lineNo, int columnNo, Object script) Execute the given script of the given language, attempting to
emulate an interactive session w/ the language. | public static boolean | isLanguageRegistered(String lang) Determine whether a language is registered. | public BSFEngine | loadScriptingEngine(String lang) Load a scripting engine based on the lang string identifying it.
Parameters: lang - string identifying language exception: BSFException - if the language is unknown (i.e., if ithas not been registered) with a reason ofREASON_UNKNOWN_LANGUAGE. | public Object | lookupBean(String beanName) return a handle to a bean registered in the bean registry by the
application or a scripting engine. | public void | registerBean(String beanName, Object bean) Registering a bean allows a scripting engine or the application to
access that bean by name and to manipulate it. | public static void | registerScriptingEngine(String lang, String engineClassName, String[] extensions) Register a scripting engine in the static registry of the
BSFManager.
Parameters: lang - string identifying language Parameters: engineClassName - fully qualified name of the class interfacingthe language to BSF. Parameters: extensions - array of file extensions that should be mapped tothis language type. | public void | setClassLoader(ClassLoader classLoader) Set the class loader for those that need to use it. | public void | setClassPath(String classPath) Set the classpath for those that need to use it. | public void | setObjectRegistry(ObjectRegistry objectRegistry) Set the object registry used by this manager. | public void | setTempDir(String tempDir) Temporary directory to put stuff into (for those who need to). | public void | terminate() | public void | undeclareBean(String beanName) Undeclare a previously declared bean. | public void | unregisterBean(String beanName) Unregister a previously registered bean. |
BSFManager | public BSFManager()(Code) | | |
apply | public Object apply(String lang, String source, int lineNo, int columnNo, Object funcBody, Vector paramNames, Vector arguments) throws BSFException(Code) | | Apply the given anonymous function of the given language to the given
parameters and return the resulting value.
Parameters: lang - language identifier Parameters: source - (context info) the source of this expression(e.g., filename) Parameters: lineNo - (context info) the line number in source for expr Parameters: columnNo - (context info) the column number in source for expr Parameters: funcBody - the multi-line, value returning script to evaluate Parameters: paramNames - the names of the parameters above assumes Parameters: arguments - values of the above parameters exception: BSFException - if anything goes wrong while running the script |
compileApply | public void compileApply(String lang, String source, int lineNo, int columnNo, Object funcBody, Vector paramNames, Vector arguments, CodeBuffer cb) throws BSFException(Code) | | Compile the application of the given anonymous function of the given
language to the given parameters into the given CodeBuffer.
Parameters: lang - language identifier Parameters: source - (context info) the source of this expression(e.g., filename) Parameters: lineNo - (context info) the line number in source for expr Parameters: columnNo - (context info) the column number in source for expr Parameters: funcBody - the multi-line, value returning script to evaluate Parameters: paramNames - the names of the parameters above assumes Parameters: arguments - values of the above parameters Parameters: cb - code buffer to compile into exception: BSFException - if anything goes wrong while running the script |
compileExpr | public void compileExpr(String lang, String source, int lineNo, int columnNo, Object expr, CodeBuffer cb) throws BSFException(Code) | | Compile the given expression of the given language into the given
CodeBuffer.
Parameters: lang - language identifier Parameters: source - (context info) the source of this expression(e.g., filename) Parameters: lineNo - (context info) the line number in source for expr Parameters: columnNo - (context info) the column number in source for expr Parameters: expr - the expression to compile Parameters: cb - code buffer to compile into exception: BSFException - if any error while compiling the expression |
compileScript | public void compileScript(String lang, String source, int lineNo, int columnNo, Object script, CodeBuffer cb) throws BSFException(Code) | | Compile the given script of the given language into the given
CodeBuffer.
Parameters: lang - language identifier Parameters: source - (context info) the source of this script(e.g., filename) Parameters: lineNo - (context info) the line number in source for script Parameters: columnNo - (context info) the column number in source for script Parameters: script - the script to compile Parameters: cb - code buffer to compile into exception: BSFException - if any error while compiling the script |
declareBean | public void declareBean(String beanName, Object bean, Class type) throws BSFException(Code) | | Declare a bean. The difference between declaring and registering
is that engines are spsed to make declared beans "pre-available"
in the scripts as far as possible. That is, if a script author
needs a registered bean, he needs to look it up in some way. However
if he needs a declared bean, the language has the responsibility to
make those beans avaialable "automatically."
When a bean is declared it is automatically registered as well
so that any declared bean can be gotton to by looking it up as well.
If any of the languages that are already running in this manager
says they don't like this (by throwing an exception) then this
method will simply quit with that exception. That is, any engines
that come after than in the engine enumeration will not even be
told about this new bean.
So, in general its best to declare beans before the manager has
been asked to load any engines because then the user can be informed
when an engine rejects it. Also, its much more likely that an engine
can declare a bean at start time than it can at any time.
Parameters: beanName - name to declare bean as Parameters: bean - the bean that's being declared Parameters: type - the type to represent the bean as exception: BSFException - if any of the languages that are alreadyrunning decides to throw an exception when asked todeclare this bean. |
eval | public Object eval(String lang, String source, int lineNo, int columnNo, Object expr) throws BSFException(Code) | | Evaluate the given expression of the given language and return the
resulting value.
Parameters: lang - language identifier Parameters: source - (context info) the source of this expression(e.g., filename) Parameters: lineNo - (context info) the line number in source for expr Parameters: columnNo - (context info) the column number in source for expr Parameters: expr - the expression to evaluate exception: BSFException - if anything goes wrong while running the script |
exec | public void exec(String lang, String source, int lineNo, int columnNo, Object script) throws BSFException(Code) | | Execute the given script of the given language.
Parameters: lang - language identifier Parameters: source - (context info) the source of this expression(e.g., filename) Parameters: lineNo - (context info) the line number in source for expr Parameters: columnNo - (context info) the column number in source for expr Parameters: script - the script to execute exception: BSFException - if anything goes wrong while running the script |
getClassPath | public String getClassPath()(Code) | | Get classPath
|
getLangFromFilename | public static String getLangFromFilename(String fileName) throws BSFException(Code) | | Determine the language of a script file by looking at the file
extension.
Parameters: fileName - the name of the file the scripting language the file is in if the file extensionis known to me (must have been registered viaregisterScriptingEngine). exception: BSFException - if file's extension is unknown. |
getObjectRegistry | public ObjectRegistry getObjectRegistry()(Code) | | Return the current object registry of the manager.
the current registry. |
getVersion | public static String getVersion()(Code) | | Returns the version string of BSF.
version string in the form "abc.yyyymmdd" where"abc" represents a dewey decimal number (three levels, each between 0 and 9), and"yyyy" a four digit year, "mm" a two digit month,"dd" a two digit day. Example: "240.20061006 "stands for: BSF version 2.4.0 as of 2006-10-06 . since: 2006-01-17 |
iexec | public void iexec(String lang, String source, int lineNo, int columnNo, Object script) throws BSFException(Code) | | Execute the given script of the given language, attempting to
emulate an interactive session w/ the language.
Parameters: lang - language identifier Parameters: source - (context info) the source of this expression(e.g., filename) Parameters: lineNo - (context info) the line number in source for expr Parameters: columnNo - (context info) the column number in source for expr Parameters: script - the script to execute exception: BSFException - if anything goes wrong while running the script |
isLanguageRegistered | public static boolean isLanguageRegistered(String lang)(Code) | | Determine whether a language is registered.
Parameters: lang - string identifying a language true iff it is |
loadScriptingEngine | public BSFEngine loadScriptingEngine(String lang) throws BSFException(Code) | | Load a scripting engine based on the lang string identifying it.
Parameters: lang - string identifying language exception: BSFException - if the language is unknown (i.e., if ithas not been registered) with a reason ofREASON_UNKNOWN_LANGUAGE. If the language is known butif the interface can't be created for some reason, thenthe reason is set to REASON_OTHER_ERROR and the actualexception is passed on as well. |
lookupBean | public Object lookupBean(String beanName)(Code) | | return a handle to a bean registered in the bean registry by the
application or a scripting engine. Returns null if bean is not found.
Parameters: beanName - name of bean to look up the bean if its found or null |
registerBean | public void registerBean(String beanName, Object bean)(Code) | | Registering a bean allows a scripting engine or the application to
access that bean by name and to manipulate it.
Parameters: beanName - name to register under Parameters: bean - the bean to register |
registerScriptingEngine | public static void registerScriptingEngine(String lang, String engineClassName, String[] extensions)(Code) | | Register a scripting engine in the static registry of the
BSFManager.
Parameters: lang - string identifying language Parameters: engineClassName - fully qualified name of the class interfacingthe language to BSF. Parameters: extensions - array of file extensions that should be mapped tothis language type. may be null. |
setClassLoader | public void setClassLoader(ClassLoader classLoader)(Code) | | Set the class loader for those that need to use it. Default is he
who loaded me or null (i.e., its Class.forName).
Parameters: classLoader - the class loader to use. |
setClassPath | public void setClassPath(String classPath)(Code) | | Set the classpath for those that need to use it. Default is the value
of the java.class.path property.
Parameters: classPath - the classpath to use |
setObjectRegistry | public void setObjectRegistry(ObjectRegistry objectRegistry)(Code) | | Set the object registry used by this manager. By default a new
one is created when the manager is new'ed and this overwrites
that one.
Parameters: objectRegistry - the registry to use |
setTempDir | public void setTempDir(String tempDir)(Code) | | Temporary directory to put stuff into (for those who need to). Note
that unless this directory is in the classpath or unless the
classloader knows to look in here, any classes here will not
be found! BSFManager provides a service method to load a class
which uses either the classLoader provided by the class loader
property or, if that fails, a class loader which knows to load from
the tempdir to try to load the class. Default value of tempDir
is "." (current working dir).
Parameters: tempDir - the temporary directory |
terminate | public void terminate()(Code) | | Gracefully terminate all engines
|
undeclareBean | public void undeclareBean(String beanName) throws BSFException(Code) | | Undeclare a previously declared bean. This removes the bean from
the list of declared beans in the manager as well as asks every
running engine to undeclared the bean. As with above, if any
of the engines except when asked to undeclare, this method does
not catch that exception. Quietly returns if the bean is unknown.
Parameters: beanName - name of bean to undeclare exception: BSFException - if any of the languages that are alreadyrunning decides to throw an exception when asked toundeclare this bean. |
unregisterBean | public void unregisterBean(String beanName)(Code) | | Unregister a previously registered bean. Silent if name is not found.
Parameters: beanName - name of bean to unregister |
|
|