bsh
Class ExternalNameSpace

java.lang.Object
  extended by bsh.NameSpace
      extended by bsh.ExternalNameSpace
All Implemented Interfaces:
BshClassManager.Listener, NameSource, java.io.Serializable

public class ExternalNameSpace
extends NameSpace

A namespace which maintains an external map of values held in variables in its scope. This mechanism provides a standard collections based interface to the namespace as well as a convenient way to export and view values of the namespace without the ordinary BeanShell wrappers.

Variables are maintained internally in the normal fashion to support meta-information (such as variable type and visibility modifiers), but exported and imported in a synchronized way. Variables are exported each time they are written by BeanShell. Imported variables from the map appear in the BeanShell namespace as untyped variables with no modifiers and shadow any previously defined variables in the scope.

Note: this class is inherentely dependent on Java 1.2 (for Map), however it is not used directly by the core as other than type NameSpace, so no dependency is introduced.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface bsh.NameSource
NameSource.Listener
 
Field Summary
 
Fields inherited from class bsh.NameSpace
importedClasses, JAVACODE
 
Constructor Summary
ExternalNameSpace()
           
ExternalNameSpace(NameSpace parent, java.lang.String name, java.util.Map externalMap)
           
 
Method Summary
 void clear()
          Clear all variables, methods, and imports from this namespace and clear all values from the external map (via Map clear()).
 Variable createVariable(java.lang.String name, java.lang.Class type, java.lang.Object value, Modifiers mods)
           
 java.util.Map getMap()
          Get the map view of this namespace.
protected  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.
 void setMap(java.util.Map map)
          Set the external Map which to which this namespace synchronizes.
 void unsetVariable(java.lang.String name)
          Remove the variable from the namespace.
 
Methods inherited from class bsh.NameSpace
addNameSourceListener, classLoaderChanged, createVariable, createVariable, doSuperImport, get, getAllNames, getAllNamesAux, getClass, getClassManager, getCommand, getDeclaredVariables, getGlobal, getImportedMethod, getImportedVar, getInvocationLine, getInvocationText, getMethod, getMethod, getMethodNames, getMethods, getName, getParent, getSuper, getThis, getVariable, getVariable, identifierToClass, importClass, importCommands, importObject, importPackage, importStatic, invokeMethod, invokeMethod, loadDefaultImports, nameSpaceChanged, prune, setMethod, setName, setParent, setTypedVariable, setTypedVariable, setVariable, toString, unwrapVariable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ExternalNameSpace

public ExternalNameSpace()

ExternalNameSpace

public ExternalNameSpace(NameSpace parent,
                         java.lang.String name,
                         java.util.Map externalMap)
Method Detail

getMap

public java.util.Map getMap()
Get the map view of this namespace.


setMap

public void setMap(java.util.Map map)
Set the external Map which to which this namespace synchronizes. The previous external map is detached from this namespace. Previous map values are retained in the external map, but are removed from the BeanShell namespace.


unsetVariable

public void unsetVariable(java.lang.String name)
Description copied from class: NameSpace
Remove the variable from the namespace.

Overrides:
unsetVariable in class NameSpace

getVariableNames

public java.lang.String[] getVariableNames()
Description copied from class: NameSpace
Get the names of variables defined in this namespace. (This does not show variables in parent namespaces).

Overrides:
getVariableNames in class NameSpace

getVariableImpl

protected Variable getVariableImpl(java.lang.String name,
                                   boolean recurse)
                            throws UtilEvalError
Description copied from class: NameSpace
Locate a variable and return the Variable object with optional recursion through parent name spaces.

If this namespace is static, return only static variables.

Overrides:
getVariableImpl in class NameSpace
Returns:
the Variable value or null if it is not defined
Throws:
UtilEvalError

createVariable

public Variable createVariable(java.lang.String name,
                               java.lang.Class type,
                               java.lang.Object value,
                               Modifiers mods)
Overrides:
createVariable in class NameSpace

clear

public void clear()
Clear all variables, methods, and imports from this namespace and clear all values from the external map (via Map clear()).

Overrides:
clear in class NameSpace
See Also:
NameSpace.loadDefaultImports()


? 2000-2005 pat@pat.net :-)