## org.gjt.sp.jedit.bsh
Class ExternalNameSpace

    java.lang.Object
      org.gjt.sp.jedit.bsh.NameSpace
          org.gjt.sp.jedit.bsh.ExternalNameSpace

All Implemented Interfaces:
  java.io.Serializable, BshClassManager.Listener, NameSource

    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, 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 org.gjt.sp.jedit.bsh.NameSource
`NameSource.Listener`

Field Summary

Fields inherited from class org.gjt.sp.jedit.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()).
`protected void` `getAllNamesAux(java.util.Vector vec)` Helper for implementing NameSource
`Variable[]` `getDeclaredVariables()`
`java.util.Map` `getMap()` Get the map view of this namespace.
`BshMethod` `getMethod(java.lang.String name, java.lang.Class[] sig, boolean declaredOnly)` Get the bsh method matching the specified signature declared in this name space or a parent.
`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.
`protected void` `putExternalMap(java.lang.String name, java.lang.Object value)` Place an unwrapped value in the external map.
`void` `setMap(java.util.Map map)` Set the external Map which to which this namespace synchronizes.
`void` `setMethod(java.lang.String name, BshMethod method)` Note: this is primarily for internal use.
`void` `setTypedVariable(java.lang.String name, java.lang.Class type, java.lang.Object value, Modifiers modifiers)` Declare a variable in the local scope and set its initial value.
`void` `unsetVariable(java.lang.String name)` Remove the variable from the namespace.

Methods inherited from class org.gjt.sp.jedit.bsh.NameSpace

`addCommandPath, addNameSourceListener, classLoaderChanged, doSuperImport, get, getAllNames, getClass, getClassManager, getCommand, getCommand, getGlobal, getImportedMethod, getImportedVar, getInvocationLine, getInvocationText, getMethod, getMethodNames, getMethods, getName, getParent, getSuper, getVariable, getVariable, identifierToClass, importClass, importCommands, importObject, importPackage, importStatic, invokeMethod, invokeMethod, loadDefaultImports, nameSpaceChanged, prune, removeCommandPath, setName, setParent, setTypedVariable, setVariable, 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`

### getDeclaredVariables

    public Variable[] getDeclaredVariables()

  Overrides:
    `getDeclaredVariables` in class `NameSpace`

### setTypedVariable

    public void setTypedVariable(java.lang.String name,
                                 java.lang.Class type,
                                 java.lang.Object value,
                                 Modifiers modifiers)
                          throws UtilEvalError

  Description copied from class: `NameSpace`
  Declare a variable in the local scope and set its initial value. Value may be null to indicate that we would like the default value for the variable type. (e.g. 0 for integer types, null for object types). An existing typed variable may only be set to the same type. If an untyped variable of the same name exists it will be overridden with the new typed var. The set will perform a Types.getAssignableForm() on the value if necessary.

  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.

  Overrides:
    `setTypedVariable` in class `NameSpace`
    `value` - If value is null, you'll get the default value for the type
    `modifiers` - may be null
  Throws:
    `UtilEvalError`
  See Also:
    `Primitive`

### setMethod

    public void setMethod(java.lang.String name,
                          BshMethod method)
                   throws UtilEvalError

  Description copied from class: `NameSpace`
  Note: this is primarily for internal use.

  Overrides:
    `setMethod` in class `NameSpace`
  Throws:
    `UtilEvalError`
  See Also:
    `Interpreter.source( String )`, `Interpreter.eval( String )`

### getMethod

    public BshMethod getMethod(java.lang.String name,
                               java.lang.Class[] sig,
                               boolean declaredOnly)
                        throws UtilEvalError

  Description copied from class: `NameSpace`
  Get the bsh method matching the specified signature declared in this name space or a parent.

  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.

  Overrides:
    `getMethod` in class `NameSpace`
    `declaredOnly` - if true then only methods declared directly in this namespace will be found and no inherited or imported methods will be visible.
  Returns:
    the BshMethod or null if not found
  Throws:
    `UtilEvalError`
  See Also:
    `Primitive`

### getAllNamesAux

    protected void getAllNamesAux(java.util.Vector vec)

  Description copied from class: `NameSpace`
  Helper for implementing NameSource

  Overrides:
    `getAllNamesAux` 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()`

### putExternalMap

    protected void putExternalMap(java.lang.String name,
                                  java.lang.Object value)

  Place an unwrapped value in the external map. BeanShell primitive types are represented by their object wrappers, so it is not possible to differentiate between wrapper types and primitive types via the external Map.