|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--bsh.NameSpace
A namespace in which methods, variables, and imports (class names) live. This is package public because it is used in the implementation of some bsh commands. However for normal use you should be using methods on bsh.Interpreter to interact with your scripts.
A bsh.This object is a thin layer over a NameSpace that associates it with an Interpreter instance. Together they comprise a Bsh scripted object context.
Note: I'd really like to use collections here, but we have to keep this compatible with JDK1.1
Nested Class Summary |
Nested classes inherited from class bsh.NameSource |
NameSource.Listener |
Field Summary | |
boolean |
isMethod
Note that the namespace is a method body namespace. |
static NameSpace |
JAVACODE
|
java.lang.String |
nsName
|
Constructor Summary | |
NameSpace(BshClassManager classManager,
java.lang.String name)
|
|
NameSpace(NameSpace parent,
BshClassManager classManager,
java.lang.String name)
|
|
NameSpace(NameSpace parent,
java.lang.String name)
|
Method Summary | |
void |
addNameSourceListener(NameSource.Listener listener)
Implements NameSource Add a listener who is notified upon changes to names in this space. |
void |
classLoaderChanged()
Clear all cached classes and names |
void |
clear()
Clear all variables, methods, and imports from this namespace. |
void |
doSuperImport()
Perform "import *;" causing the entire classpath to be mapped. |
java.lang.Object |
get(java.lang.String name,
Interpreter interpreter)
Resolve name to an object through this namespace. |
java.lang.String[] |
getAllNames()
Implements NameSource |
protected void |
getAllNamesAux(java.util.Vector vec)
Helper for implementing NameSource |
static java.lang.Object |
getAssignableForm(java.lang.Object rhs,
java.lang.Class lhsType)
Determine if the RHS object can be assigned to the LHS type: 1) As in a legal Java assignment (as determined by Reflect.isJavaAssignable()) through widening or promotion 2) Via special BeanShell extensions like interface generation or (gag) numeric-style promotion of primitive wrappers (e.g. |
java.lang.Class |
getClass(java.lang.String name)
Load a class through this namespace taking into account imports. |
BshClassManager |
getClassManager()
|
java.lang.Object |
getCommand(java.lang.String name,
java.lang.Class[] argTypes,
Interpreter interpreter)
A command is a scripted method or compiled command class implementing a specified method signature. |
NameSpace |
getGlobal()
|
int |
getInvocationLine()
|
java.lang.String |
getInvocationText()
|
BshMethod |
getMethod(java.lang.String name,
java.lang.Class[] sig)
Get the bsh method matching the specified signature declared in this name space or a parent. |
java.lang.String[] |
getMethodNames()
Get the names of methods defined in this namespace. |
BshMethod[] |
getMethods()
Get the methods defined in this namespace. |
java.lang.String |
getName()
|
NameSpace |
getParent()
Get the parent namespace. |
NameSpace |
getSuper()
|
java.lang.Object |
getVariable(java.lang.String name)
Get the specified variable in this namespace or a parent namespace. |
java.lang.Object |
getVariable(java.lang.String name,
boolean recurse)
Get the specified variable in this namespace. |
protected bsh.NameSpace.Variable |
getVariableImpl(java.lang.String name,
boolean recurse)
Locate a variable and return the Variable object with optional recursion through parent name spaces. |
java.lang.String[] |
getVariableNames()
Get the names of variables defined in this namespace. |
static java.lang.Class |
identifierToClass(ClassIdentifier ci)
This is a helper method for working inside of bsh scripts and commands. |
void |
importClass(java.lang.String name)
Import a class name. |
void |
importCommands(java.lang.String name)
Import scripted or compiled BeanShell commands in the following package in the classpath. |
void |
importPackage(java.lang.String name)
subsequent imports override earlier ones |
java.lang.Object |
invokeMethod(java.lang.String methodName,
java.lang.Object[] args,
Interpreter interpreter)
Invoke a method in this namespace with the specified args and interpreter reference. |
java.lang.Object |
invokeMethod(java.lang.String methodName,
java.lang.Object[] args,
Interpreter interpreter,
CallStack callstack,
bsh.SimpleNode callerInfo)
This method simply delegates to This.invokeMethod(); |
void |
loadDefaultImports()
Import standard packages. |
void |
nameSpaceChanged()
Clear all cached classes and names |
void |
prune()
Used for serialization |
void |
setMethod(java.lang.String name,
BshMethod method)
Note: this is primarily for internal use. |
void |
setName(java.lang.String name)
|
void |
setParent(NameSpace parent)
|
void |
setTypedVariable(java.lang.String name,
java.lang.Class type,
java.lang.Object value,
boolean isFinal)
Declare a variable in the local scope and set its initial value. |
void |
setVariable(java.lang.String name,
java.lang.Object value,
boolean strictJava)
Set the variable through this namespace. |
java.lang.String |
toString()
|
void |
unsetVariable(java.lang.String name)
Remove the variable from the namespace. |
protected java.lang.Object |
unwrapVariable(bsh.NameSpace.Variable var)
Unwrap a variable to its value. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final NameSpace JAVACODE
public java.lang.String nsName
public boolean isMethod
Constructor Detail |
public NameSpace(NameSpace parent, java.lang.String name)
public NameSpace(BshClassManager classManager, java.lang.String name)
public NameSpace(NameSpace parent, BshClassManager classManager, java.lang.String name)
Method Detail |
public void setName(java.lang.String name)
public java.lang.String getName()
public java.lang.Object get(java.lang.String name, Interpreter interpreter) throws UtilEvalError
UtilEvalError
public void setVariable(java.lang.String name, java.lang.Object value, boolean strictJava) throws UtilEvalError
Note: this method is primarily intended for use internally. If you use this method outside of the bsh package and wish to set variables with primitive values you will have to wrap them using bsh.Primitive.
strictJava
- specifies whether strict java rules are applied.
UtilEvalError
Setting a new variable (which didn't exist before) or removing
a variable causes a namespace change.
public void unsetVariable(java.lang.String name)
public java.lang.String[] getVariableNames()
public java.lang.String[] getMethodNames()
public BshMethod[] getMethods()
public NameSpace getParent()
public NameSpace getSuper()
public NameSpace getGlobal()
public BshClassManager getClassManager()
public void prune()
public void setParent(NameSpace parent)
public java.lang.Object getVariable(java.lang.String name)
Note: this method is primarily intended for use internally. If you use this method outside of the bsh package you will have to use Primitive.unwrap() to get primitive values.
Primitive.unwrap( Object )
public java.lang.Object getVariable(java.lang.String name, boolean recurse)
recurse
- If recurse is true then we recursively search through
parent namespaces for the variable.
Note: this method is primarily intended for use internally. If you use this method outside of the bsh package you will have to use Primitive.unwrap() to get primitive values.
Primitive.unwrap( Object )
protected bsh.NameSpace.Variable getVariableImpl(java.lang.String name, boolean recurse)
protected java.lang.Object unwrapVariable(bsh.NameSpace.Variable var)
public void setTypedVariable(java.lang.String name, java.lang.Class type, java.lang.Object value, boolean isFinal) throws UtilEvalError
Note: this method is primarily intended for use internally. If you use this method outside of the bsh package and wish to set variables with primitive values you will have to wrap them using bsh.Primitive.
value
- If value is null, you'll get the default value for the type
UtilEvalError
Primitive
public void setMethod(java.lang.String name, BshMethod method)
Interpreter.source( String )
,
Interpreter.eval( String )
public BshMethod getMethod(java.lang.String name, java.lang.Class[] sig)
Note: this method is primarily intended for use internally. If you use this method outside of the bsh package you will have to be familiar with BeanShell's use of the Primitive wrapper class.
Primitive
public void importClass(java.lang.String name)
public void importPackage(java.lang.String name)
public void importCommands(java.lang.String name)
public java.lang.Object getCommand(java.lang.String name, java.lang.Class[] argTypes, Interpreter interpreter) throws UtilEvalError
name
- is the name of the desired command methodargTypes
- is the signature of the desired command method.
UtilEvalError
- if loadScriptedCommand throws UtilEvalError
i.e. on errors loading a script that was foundpublic java.lang.Class getClass(java.lang.String name) throws UtilEvalError
UtilEvalError
public java.lang.String[] getAllNames()
getAllNames
in interface NameSource
protected void getAllNamesAux(java.util.Vector vec)
public void addNameSourceListener(NameSource.Listener listener)
addNameSourceListener
in interface NameSource
public void doSuperImport() throws UtilEvalError
UtilEvalError
public static java.lang.Object getAssignableForm(java.lang.Object rhs, java.lang.Class lhsType) throws UtilEvalError
The primary purpose of the "returning the assignable form" abstraction is to allow non-standard Java assignment conversions. e.g. wrapper conversion for boxing and unboxing. Some of this will be considered standard in Java 1.5.
lhsType
- lhsType is a real Java class type or Java primitive TYPErhs
- is a value, bsh.Primitive wrapper, or Primitive.NULL.
If it is a Primitive wrapper it will be unwrapped and compared using
Reflect.isJavaAssignableFrom(). If it is Primtive.VOID an error will
occur.
UtilEvalError
- if the assignment cannot be made legally
UtilEvalError
- on rhs of Primitive.VOID (void assignment)BSHCastExpression#castObject( java.lang.Object, java.lang.Class )
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.Object invokeMethod(java.lang.String methodName, java.lang.Object[] args, Interpreter interpreter) throws EvalError
EvalError
bsh.This.invokeMethod(
String methodName, Object [] args, Interpreter interpreter,
CallStack callstack, SimpleNode callerInfo )
public java.lang.Object invokeMethod(java.lang.String methodName, java.lang.Object[] args, Interpreter interpreter, CallStack callstack, bsh.SimpleNode callerInfo) throws EvalError
EvalError
bsh.This.invokeMethod(
String methodName, Object [] args, Interpreter interpreter,
CallStack callstack, SimpleNode callerInfo )
public void classLoaderChanged()
classLoaderChanged
in interface BshClassManager.Listener
public void nameSpaceChanged()
public void loadDefaultImports()
importClass("bsh.EvalError"); importClass("bsh.Interpreter"); importPackage("javax.swing.event"); importPackage("javax.swing"); importPackage("java.awt.event"); importPackage("java.awt"); importPackage("java.net"); importPackage("java.util"); importPackage("java.io"); importPackage("java.lang"); importCommands("/bsh/commands");
public int getInvocationLine()
public java.lang.String getInvocationText()
public static java.lang.Class identifierToClass(ClassIdentifier ci)
public void clear()
loadDefaultImports()
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |