Save This Page
Home » bsf-src-2.4.0 » org.apache.bsf » [javadoc | source]
org.apache.bsf
public class: BSFManager [javadoc | source]
java.lang.Object
   org.apache.bsf.BSFManager
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.

Field Summary
protected static  String version     
protected static  Hashtable registeredEngines     
protected static  Hashtable extn2Lang     
protected  Hashtable loadedEngines     
protected  ObjectRegistry objectRegistry     
protected  PropertyChangeSupport pcs     
protected  ClassLoader classLoader     
protected  String tempDir     
protected  String classPath     
protected  Vector declaredBeans     
Constructor:
 public BSFManager() 
Method from org.apache.bsf.BSFManager Summary:
apply,   compileApply,   compileExpr,   compileScript,   declareBean,   eval,   exec,   getClassLoader,   getClassPath,   getLangFromFilename,   getObjectRegistry,   getTempDir,   getVersion,   iexec,   isLanguageRegistered,   loadScriptingEngine,   lookupBean,   registerBean,   registerScriptingEngine,   setClassLoader,   setClassPath,   setObjectRegistry,   setTempDir,   terminate,   undeclareBean,   unregisterBean
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.apache.bsf.BSFManager Detail:
 public Object apply(String lang,
    String source,
    int lineNo,
    int columnNo,
    Object funcBody,
    Vector paramNames,
    Vector arguments) throws BSFException 
    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) throws BSFException 
    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) throws BSFException 
    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) throws BSFException 
    Compile the given script of the given language into the given CodeBuffer.
 public  void declareBean(String beanName,
    Object bean,
    Class type) throws BSFException 
    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.

 public Object eval(String lang,
    String source,
    int lineNo,
    int columnNo,
    Object expr) throws BSFException 
    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) throws BSFException 
    Execute the given script of the given language.
 public ClassLoader getClassLoader() 
    Get classLoader
 public String getClassPath() 
    Get classPath
 public static String getLangFromFilename(String fileName) throws BSFException 
    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() 
    Get tempDir
 public static String getVersion() 
    Returns the version string of BSF.
 public  void iexec(String lang,
    String source,
    int lineNo,
    int columnNo,
    Object script) throws BSFException 
    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) throws BSFException 
    Load a scripting engine based on the lang string identifying it.
 public Object lookupBean(String beanName) 
    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.
 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.
 public  void setClassLoader(ClassLoader classLoader) 
    Set the class loader for those that need to use it. Default is he who loaded me or null (i.e., its Class.forName).
 public  void setClassPath(String classPath) 
    Set the classpath for those that need to use it. Default is the value of the java.class.path property.
 public  void setObjectRegistry(ObjectRegistry objectRegistry) 
    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.
 public  void setTempDir(String tempDir) 
    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).
 public  void terminate() 
    Gracefully terminate all engines
 public  void undeclareBean(String beanName) throws BSFException 
    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.
 public  void unregisterBean(String beanName) 
    Unregister a previously registered bean. Silent if name is not found.