org.apache.bsf.debug.jsdi

Interface JsEngine

All Superinterfaces:
Remote
Known Implementing Classes:
JsEngineStub, JsEngineStub

public interface JsEngine
extends Remote

Represents a remote engine as seen from the debugger. It matches the notion of global object in JavaScript specification. In other words, a JsEngine is an execution context rather than an explicit engine. This also means that a JsEngine is not multi-threaded, there is only one execution being carried. Hence, there is only one stack of JsContext for a JsEngine. The stack is only accesible if the engine is in a callback mode to the debugger, that is, the execution is stopped at a breakpoint or after a stepping order has completed.

Method Summary

Object
eval(String docname, String fnOrScript, int lineno)
Allow the debugger to evaluate an expression within the current context.
JsContext
getContext(int depth)
Returns the JsContext at a certain depth.
int
getContextCount()
Returns the count of JsContext on the current stack.
JsCallbacks
getDebugger()
Return the current debugger.
JsObject
getGlobalObject()
Any execution in JavaScript happen with respect to a global object, sort of the top-level name space for properties.
String
getThread()
Returns name of the thread currently running in the engine
String
getThreadGroup()
Returns name of the ThreadGroup of the thread currently running in the engine
JsObject
getUndefinedValue()
As per ECMA specification, each JavaScript execution defines a unique object for the undefined value.
boolean
isSuspended()
boolean
poll()
Allows the client debugger to poll the connection.
void
run()
Stepping commands: run: resume execution until it finishes or a breakpoint is hit.
void
setDebugger(JsCallbacks debugger)
Set the associated debugger.
void
stepIn()
void
stepOut()
void
stepOver()

Method Details

eval

public Object eval(String docname,
                   String fnOrScript,
                   int lineno)
            throws RemoteException
Allow the debugger to evaluate an expression within the current context.

getContext

public JsContext getContext(int depth)
            throws RemoteException
Returns the JsContext at a certain depth. Depth zero is the top of the stack, that is, the inner execution context. This is a valid call only if the engine is stopped in a callback to the debugger (breakpoint or stepping completed).

getContextCount

public int getContextCount()
            throws RemoteException
Returns the count of JsContext on the current stack. This is a valid call only if the engine is stopped in a callback to the debugger (breakpoint or stepping completed).

getDebugger

public JsCallbacks getDebugger()
            throws RemoteException
Return the current debugger.
Returns:
the debugger, or null if none is attached.

getGlobalObject

public JsObject getGlobalObject()
            throws RemoteException
Any execution in JavaScript happen with respect to a global object, sort of the top-level name space for properties. This is global object return by this call.

getThread

public String getThread()
            throws RemoteException
Returns name of the thread currently running in the engine

getThreadGroup

public String getThreadGroup()
            throws RemoteException
Returns name of the ThreadGroup of the thread currently running in the engine

getUndefinedValue

public JsObject getUndefinedValue()
            throws RemoteException
As per ECMA specification, each JavaScript execution defines a unique object for the undefined value.

isSuspended

public boolean isSuspended()
            throws RemoteException

poll

public boolean poll()
            throws RemoteException
Allows the client debugger to poll the connection.

run

public void run()
            throws RemoteException
Stepping commands: run: resume execution until it finishes or a breakpoint is hit. stepIn: steps to the next statement, considering callee's statement if any. stepOut: steps until the current JsContext exits. stepOver: steps to the next statement within the same JsContext.

setDebugger

public void setDebugger(JsCallbacks debugger)
            throws RemoteException
Set the associated debugger.
Parameters:
debugger - the debugger to be used on callbacks from the engine.

stepIn

public void stepIn()
            throws RemoteException

stepOut

public void stepOut()
            throws RemoteException

stepOver

public void stepOver()
            throws RemoteException