Class BSFEngineImpl

java.lang.Object
org.apache.bsf.util.BSFEngineImpl
All Implemented Interfaces:
PropertyChangeListener, EventListener, BSFEngine

public abstract class BSFEngineImpl extends Object implements BSFEngine
This is a base implementation of the BSFEngine interface which engine implementations may choose to extend to get the basic methods of the interface implemented.

Author:
Sanjiva Weerawarana, Olivier Gruber (added original debugging support)
  • Field Details

    • mgr

      protected BSFManager mgr
    • lang

      protected String lang
    • declaredBeans

      protected Vector declaredBeans
    • classPath

      protected String classPath
    • tempDir

      protected String tempDir
    • classLoader

      protected ClassLoader classLoader
  • Constructor Details

    • BSFEngineImpl

      public BSFEngineImpl()
  • Method Details

    • apply

      public Object apply(String source, int lineNo, int columnNo, Object funcBody, Vector paramNames, Vector arguments) throws BSFException
      Default impl of apply - calls eval ignoring parameters and returns the result.
      Specified by:
      apply in interface BSFEngine
      Parameters:
      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
      funcBody - the multi-line, value returning script to evaluate
      paramNames - the names of the parameters above assumes
      arguments - values of the above parameters
      Throws:
      BSFException - if anything goes wrong while doin' it.
    • compileApply

      public void compileApply(String source, int lineNo, int columnNo, Object funcBody, Vector paramNames, Vector arguments, CodeBuffer cb) throws BSFException
      Default impl of compileApply - calls compileExpr ignoring parameters.
      Specified by:
      compileApply in interface BSFEngine
      Parameters:
      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
      funcBody - the multi-line, value returning script to evaluate
      paramNames - the names of the parameters above assumes
      arguments - values of the above parameters
      cb - the CodeBuffer to compile into
      Throws:
      BSFException - if anything goes wrong while doin' it.
    • compileExpr

      public void compileExpr(String source, int lineNo, int columnNo, Object expr, CodeBuffer cb) throws BSFException
      Default impl of compileExpr - generates code that'll create a new manager, evaluate the expression, and return the value.
      Specified by:
      compileExpr in interface BSFEngine
      Parameters:
      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
      expr - the expression to compile
      cb - the CodeBuffer to compile into
      Throws:
      BSFException - if anything goes wrong while compiling a BSFException is thrown. The reason indicates the problem.
    • compileScript

      public void compileScript(String source, int lineNo, int columnNo, Object script, CodeBuffer cb) throws BSFException
      Default impl of compileScript - generates code that'll create a new manager, and execute the script.
      Specified by:
      compileScript in interface BSFEngine
      Parameters:
      source - (context info) the source of this script (e.g., filename)
      lineNo - (context info) the line number in source for script
      columnNo - (context info) the column number in source for script
      script - the script to compile
      cb - the CodeBuffer to compile into
      Throws:
      BSFException - if anything goes wrong while compiling a BSFException is thrown. The reason indicates the problem.
    • declareBean

      public void declareBean(BSFDeclaredBean bean) throws BSFException
      Description copied from interface: BSFEngine
      Declare a bean after the engine has been started. Declared beans are beans that are named and which the engine must make available to the scripts it runs in the most first class way possible.
      Specified by:
      declareBean in interface BSFEngine
      Parameters:
      bean - the bean to declare
      Throws:
      BSFException - if the engine cannot do this operation
    • exec

      public void exec(String source, int lineNo, int columnNo, Object script) throws BSFException
      Default impl of execute - calls eval and ignores the result.
      Specified by:
      exec in interface BSFEngine
      Parameters:
      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
      Throws:
      BSFException - if anything goes wrong while exec'ing a BSFException is thrown. The reason indicates the problem.
    • iexec

      public void iexec(String source, int lineNo, int columnNo, Object script) throws BSFException
      Default impl of interactive execution - calls eval and ignores the result.
      Specified by:
      iexec in interface BSFEngine
      Parameters:
      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
      Throws:
      BSFException - if anything goes wrong while exec'ing a BSFException is thrown. The reason indicates the problem.
    • initialize

      public void initialize(BSFManager mgr, String lang, Vector declaredBeans) throws BSFException
      initialize the engine; called right after construction by the manager. Declared beans are simply kept in a vector and that's it. Subclasses must do whatever they want with it.
      Specified by:
      initialize in interface BSFEngine
      Parameters:
      mgr - The BSFManager that's hosting this engine.
      lang - Language string which this engine is handling.
      declaredBeans - Vector of BSFDeclaredObject containing beans that should be declared into the language runtime at init time as best as possible.
      Throws:
      BSFException - if anything goes wrong while init'ing a BSFException is thrown. The reason indicates the problem.
    • propertyChange

      public void propertyChange(PropertyChangeEvent e)
      Receive property change events from the manager and update my fields as needed.
      Specified by:
      propertyChange in interface PropertyChangeListener
      Parameters:
      e - PropertyChange event with the change data
    • terminate

      public void terminate()
      Description copied from interface: BSFEngine
      Graceful termination
      Specified by:
      terminate in interface BSFEngine
    • undeclareBean

      public void undeclareBean(BSFDeclaredBean bean) throws BSFException
      Description copied from interface: BSFEngine
      Undeclare a previously declared bean.
      Specified by:
      undeclareBean in interface BSFEngine
      Parameters:
      bean - the bean to undeclare
      Throws:
      BSFException - if the engine cannot do this operation