visad.util
Class ReflectedUniverse

java.lang.Object
  extended by visad.util.ReflectedUniverse

public class ReflectedUniverse
extends Object

A general-purpose reflection wrapper class. See visad.data.jai.JAIForm for examples of usage.


Field Summary
protected  boolean debug
          Debugging flag.
protected  ClassLoader loader
          Class loader for imported classes.
protected  Hashtable variables
          Hashtable containing all variables present in the universe.
 
Constructor Summary
ReflectedUniverse()
          Constructs a new reflected universe.
ReflectedUniverse(ClassLoader loader)
          Constructs a new reflected universe that uses the given class loader.
ReflectedUniverse(URL[] urls)
          Constructs a new reflected universe, with the given URLs representing additional search paths for imported classes (in addition to the CLASSPATH).
 
Method Summary
 Object exec(String command)
          Executes a command in the universe.
 Object getVar(String varName)
          Returns the value of a variable or field in the universe.
 boolean isDebug()
          Gets whether extended debugging output is enabled.
static boolean isInstance(Class c, Object o)
          Returns whether the given object is compatible with the specified class for the purposes of reflection.
 void setDebug(boolean debug)
          Enables or disables extended debugging output.
 void setVar(String varName, boolean b)
          Registers a variable of primitive type boolean in the universe.
 void setVar(String varName, byte b)
          Registers a variable of primitive type byte in the universe.
 void setVar(String varName, char c)
          Registers a variable of primitive type char in the universe.
 void setVar(String varName, double d)
          Registers a variable of primitive type double in the universe.
 void setVar(String varName, float f)
          Registers a variable of primitive type float in the universe.
 void setVar(String varName, int i)
          Registers a variable of primitive type int in the universe.
 void setVar(String varName, long l)
          Registers a variable of primitive type long in the universe.
 void setVar(String varName, Object obj)
          Registers a variable in the universe.
 void setVar(String varName, short s)
          Registers a variable of primitive type short in the universe.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

variables

protected Hashtable variables
Hashtable containing all variables present in the universe.


loader

protected ClassLoader loader
Class loader for imported classes.


debug

protected boolean debug
Debugging flag.

Constructor Detail

ReflectedUniverse

public ReflectedUniverse()
Constructs a new reflected universe.


ReflectedUniverse

public ReflectedUniverse(URL[] urls)
Constructs a new reflected universe, with the given URLs representing additional search paths for imported classes (in addition to the CLASSPATH).


ReflectedUniverse

public ReflectedUniverse(ClassLoader loader)
Constructs a new reflected universe that uses the given class loader.

Method Detail

isInstance

public static boolean isInstance(Class c,
                                 Object o)
Returns whether the given object is compatible with the specified class for the purposes of reflection.


exec

public Object exec(String command)
            throws VisADException
Executes a command in the universe. The following syntaxes are valid:
  • import fully.qualified.package.ClassName
  • var = new ClassName(param1, ..., paramN)
  • var.method(param1, ..., paramN)
  • var2 = var1.method(param1, ..., paramN)
  • ClassName.method(param1, ..., paramN)

    Important guidelines:

  • Any referenced class must be imported first using "import".
  • Variables can be exported from the universe with getVar().
  • Variables can be imported to the universe with setVar().
  • Each parameter must be either a variable in the universe or a static or instance field (i.e., no nested methods).

    Throws:
    VisADException

  • setVar

    public void setVar(String varName,
                       Object obj)
    Registers a variable in the universe.


    setVar

    public void setVar(String varName,
                       boolean b)
    Registers a variable of primitive type boolean in the universe.


    setVar

    public void setVar(String varName,
                       byte b)
    Registers a variable of primitive type byte in the universe.


    setVar

    public void setVar(String varName,
                       char c)
    Registers a variable of primitive type char in the universe.


    setVar

    public void setVar(String varName,
                       double d)
    Registers a variable of primitive type double in the universe.


    setVar

    public void setVar(String varName,
                       float f)
    Registers a variable of primitive type float in the universe.


    setVar

    public void setVar(String varName,
                       int i)
    Registers a variable of primitive type int in the universe.


    setVar

    public void setVar(String varName,
                       long l)
    Registers a variable of primitive type long in the universe.


    setVar

    public void setVar(String varName,
                       short s)
    Registers a variable of primitive type short in the universe.


    getVar

    public Object getVar(String varName)
                  throws VisADException
    Returns the value of a variable or field in the universe. Primitive types will be wrapped in their Java Object wrapper classes.

    Throws:
    VisADException

    setDebug

    public void setDebug(boolean debug)
    Enables or disables extended debugging output.


    isDebug

    public boolean isDebug()
    Gets whether extended debugging output is enabled.