koala.dynamicjava.interpreter.context
Class GlobalContext

java.lang.Object
  extended bykoala.dynamicjava.interpreter.context.VariableContext
      extended bykoala.dynamicjava.interpreter.context.GlobalContext
All Implemented Interfaces:
Context, SimpleContext
Direct Known Subclasses:
StaticContext

public class GlobalContext
extends VariableContext
implements Context

A global context.


Nested Class Summary
protected  class GlobalContext.PseudoClassLoader
          To test the existance of a class without loading it
protected  class GlobalContext.PseudoError
          To test the existance of a class without loading it
 
Nested classes inherited from class koala.dynamicjava.interpreter.context.VariableContext
VariableContext.AbstractVariable, VariableContext.Constant, VariableContext.Link, VariableContext.LinkFactory, VariableContext.Scope, VariableContext.Variable
 
Field Summary
protected  boolean accessible
           
protected static ReferenceType CLASS_TYPE
           
protected static int classCount
          To generate an unique name for the generated classes
protected  java.lang.ClassLoader classLoader
          The class loader
protected  ClassLoaderContainer clc
          The class loader container
protected  java.util.List functions
          The functions
protected  ImportationManager importationManager
          The importation manager
protected  Interpreter interpreter
          The interpreter
protected static FieldDeclaration LOCALS
           
protected static java.lang.String LOCALS_NAME
           
protected static ReferenceType MAP_TYPE
           
protected static ArrayType OBJECT_ARRAY_ARRAY
           
protected static TypeExpression OBJECT_CLASS
           
protected static ReferenceType OBJECT_TYPE
           
 
Fields inherited from class koala.dynamicjava.interpreter.context.VariableContext
cscope, scope, scopes
 
Constructor Summary
GlobalContext(Interpreter i)
          Creates a new context
GlobalContext(Interpreter i, java.lang.ClassLoader cl)
          Creates a new context
GlobalContext(Interpreter i, java.util.Set entries)
          Creates a new context initialized with the given entries defined in the initial scope.
 
Method Summary
 boolean classExists(java.lang.String name)
          Whether a simple identifier is a class
protected  ArrayInitializer createClassArrayInitializer()
          Creates an initializer for the variable class array used to implement inner classes
 Expression createName(Node node, IdentifierToken name)
          Creates the tree that is associated with the given name
 void declareClassImport(java.lang.String cname)
          Declares a new single-type-import clause
 void declarePackageImport(java.lang.String pkg)
          Declares a new import-on-demand clause
 void defineClass(TypeDeclaration node)
          Defines a class from its syntax tree
 void defineFunction(MethodDeclaration node)
          Defines a MethodDeclaration as a function
 boolean exists(java.lang.String name)
          Whether a simple identifier represents an existing variable or field or type in this context.
 boolean getAccessible()
          Returns the accessibility state of this context.
protected  java.lang.ClassLoader getAdditionalClassLoader()
          Gets the additional class loader
 java.lang.String getCurrentPackage()
          Returns the current package
 Node getDefaultQualifier(Node node)
          Returns the default qualifier for this context
 Node getDefaultQualifier(Node node, java.lang.String tname)
          Returns the default qualifier for this context
 java.lang.reflect.Field getField(java.lang.Class fc, java.lang.String fn)
          Looks for a field
 java.util.List getFunctions()
          Returns the defined functions
 java.lang.Object getHiddenArgument()
          Returns the default argument to pass to methods in this context
 ImportationManager getImportationManager()
          Returns the importation manager
 Interpreter getInterpreter()
          Returns the current interpreter
 LeftHandSideModifier getModifier(ObjectFieldAccess node)
          Returns the modifier that match the given node
 LeftHandSideModifier getModifier(QualifiedName node)
          Returns the modifier that match the given node
 LeftHandSideModifier getModifier(StaticFieldAccess node)
          Returns the modifier that match the given node
 LeftHandSideModifier getModifier(SuperFieldAccess node)
          Returns the modifier that match the given node
protected  java.lang.String getPackageName(java.lang.Class c)
          Gets the package name for the given class
 java.lang.reflect.Field getSuperField(Node node, java.lang.String fn)
          Looks for a field in the super class
 java.lang.Object invokeConstructor(ClassAllocation node, java.lang.Object[] args)
          Invokes a constructor
 java.lang.Object invokeConstructor(SimpleAllocation node, java.lang.Object[] args)
          Invokes a constructor
 boolean isDefined(java.lang.String name)
          Tests whether a variable is defined in this context
 java.lang.Class lookupClass(java.lang.String cname)
          Looks for a class
 java.lang.Class lookupClass(java.lang.String cname, java.lang.String ccname)
          Looks for a class (context-free lookup)
 java.lang.reflect.Constructor lookupConstructor(java.lang.Class c, java.lang.Class[] params)
          Looks for a constructor
 MethodDeclaration lookupFunction(java.lang.String mname, java.lang.Class[] params)
          Looks for a function
 java.lang.reflect.Method lookupMethod(Node prefix, java.lang.String mname, java.lang.Class[] params)
          Looks for a method
 java.lang.reflect.Method lookupSuperMethod(Node node, java.lang.String mname, java.lang.Class[] params)
          Looks for a super method
protected  void setAccessFlag(java.lang.reflect.Member m)
          Sets the access flag of a member
 void setAccessible(boolean accessible)
          Allows the scripts to access private fields.
 void setAdditionalClassLoaderContainer(ClassLoaderContainer clc)
          Sets the additional class loader container
 void setCurrentPackage(java.lang.String pkg)
          Sets the current package
 void setFunctions(java.util.List l)
          Sets the defined functions
 void setImportationManager(ImportationManager im)
          Sets the importation manager
 java.lang.Class setProperties(ClassAllocation node, java.lang.Class c, java.lang.Class[] args, java.util.List memb)
          Sets the properties of a ClassAllocation node
 java.lang.Class setProperties(SimpleAllocation node, java.lang.Class c, java.lang.Class[] cargs)
          Sets the properties of a SimpleAllocation node
 
Methods inherited from class koala.dynamicjava.interpreter.context.VariableContext
define, defineConstant, defineVariables, enterScope, enterScope, get, getConstants, getCurrentScopeVariableNames, getCurrentScopeVariables, isDefinedVariable, isFinal, leaveScope, set, setConstant, setVariable
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface koala.dynamicjava.interpreter.context.SimpleContext
define, defineConstant, defineVariables, enterScope, enterScope, get, getConstants, getCurrentScopeVariableNames, getCurrentScopeVariables, isDefinedVariable, isFinal, leaveScope, set, setConstant, setVariable
 

Field Detail

CLASS_TYPE

protected static final ReferenceType CLASS_TYPE

MAP_TYPE

protected static final ReferenceType MAP_TYPE

OBJECT_TYPE

protected static final ReferenceType OBJECT_TYPE

OBJECT_ARRAY_ARRAY

protected static final ArrayType OBJECT_ARRAY_ARRAY

OBJECT_CLASS

protected static final TypeExpression OBJECT_CLASS

LOCALS_NAME

protected static final java.lang.String LOCALS_NAME
See Also:
Constant Field Values

LOCALS

protected static final FieldDeclaration LOCALS

classCount

protected static int classCount
To generate an unique name for the generated classes


importationManager

protected ImportationManager importationManager
The importation manager


interpreter

protected Interpreter interpreter
The interpreter


classLoader

protected java.lang.ClassLoader classLoader
The class loader


clc

protected ClassLoaderContainer clc
The class loader container


functions

protected java.util.List functions
The functions


accessible

protected boolean accessible
Constructor Detail

GlobalContext

public GlobalContext(Interpreter i)
Creates a new context

Parameters:
i - the interpreter

GlobalContext

public GlobalContext(Interpreter i,
                     java.lang.ClassLoader cl)
Creates a new context

Parameters:
i - the interpreter
cl - the classloader to use

GlobalContext

public GlobalContext(Interpreter i,
                     java.util.Set entries)
Creates a new context initialized with the given entries defined in the initial scope.

Parameters:
i - the interpreter
entries - a set of string
Method Detail

setAdditionalClassLoaderContainer

public void setAdditionalClassLoaderContainer(ClassLoaderContainer clc)
Sets the additional class loader container

Specified by:
setAdditionalClassLoaderContainer in interface Context

setAccessible

public void setAccessible(boolean accessible)
Allows the scripts to access private fields.

Specified by:
setAccessible in interface Context

getAccessible

public boolean getAccessible()
Returns the accessibility state of this context.

Specified by:
getAccessible in interface Context

getAdditionalClassLoader

protected java.lang.ClassLoader getAdditionalClassLoader()
Gets the additional class loader


setFunctions

public void setFunctions(java.util.List l)
Sets the defined functions

Specified by:
setFunctions in interface Context

getFunctions

public java.util.List getFunctions()
Returns the defined functions

Specified by:
getFunctions in interface Context

getInterpreter

public Interpreter getInterpreter()
Returns the current interpreter

Specified by:
getInterpreter in interface Context

getImportationManager

public ImportationManager getImportationManager()
Returns the importation manager

Specified by:
getImportationManager in interface Context

setImportationManager

public void setImportationManager(ImportationManager im)
Sets the importation manager

Specified by:
setImportationManager in interface Context

exists

public boolean exists(java.lang.String name)
Whether a simple identifier represents an existing variable or field or type in this context.

Specified by:
exists in interface Context
Parameters:
name - the identifier

classExists

public boolean classExists(java.lang.String name)
Whether a simple identifier is a class

Specified by:
classExists in interface Context
Parameters:
name - the identifier

defineFunction

public void defineFunction(MethodDeclaration node)
Defines a MethodDeclaration as a function

Specified by:
defineFunction in interface Context
Parameters:
node - the function declaration

defineClass

public void defineClass(TypeDeclaration node)
Defines a class from its syntax tree

Specified by:
defineClass in interface Context
Parameters:
node - the class declaration

isDefined

public boolean isDefined(java.lang.String name)
Tests whether a variable is defined in this context

Specified by:
isDefined in interface Context
Parameters:
name - the name of the entry
Returns:
false if the variable is undefined

setCurrentPackage

public void setCurrentPackage(java.lang.String pkg)
Sets the current package

Specified by:
setCurrentPackage in interface Context
Parameters:
pkg - the package name

getCurrentPackage

public java.lang.String getCurrentPackage()
Returns the current package

Specified by:
getCurrentPackage in interface Context

declarePackageImport

public void declarePackageImport(java.lang.String pkg)
Declares a new import-on-demand clause

Specified by:
declarePackageImport in interface Context
Parameters:
pkg - the package name

declareClassImport

public void declareClassImport(java.lang.String cname)
                        throws java.lang.ClassNotFoundException
Declares a new single-type-import clause

Specified by:
declareClassImport in interface Context
Parameters:
cname - the fully qualified class name
Throws:
java.lang.ClassNotFoundException - if the class cannot be found

getDefaultQualifier

public Node getDefaultQualifier(Node node)
Returns the default qualifier for this context

Specified by:
getDefaultQualifier in interface Context
Parameters:
node - the current node

getDefaultQualifier

public Node getDefaultQualifier(Node node,
                                java.lang.String tname)
Returns the default qualifier for this context

Specified by:
getDefaultQualifier in interface Context
Parameters:
node - the current node
tname - the qualifier of 'this'

getModifier

public LeftHandSideModifier getModifier(QualifiedName node)
Returns the modifier that match the given node

Specified by:
getModifier in interface Context
Parameters:
node - a tree node

getModifier

public LeftHandSideModifier getModifier(ObjectFieldAccess node)
Returns the modifier that match the given node

Specified by:
getModifier in interface Context
Parameters:
node - a tree node

getModifier

public LeftHandSideModifier getModifier(StaticFieldAccess node)
Returns the modifier that match the given node

Specified by:
getModifier in interface Context
Parameters:
node - a tree node

getModifier

public LeftHandSideModifier getModifier(SuperFieldAccess node)
Returns the modifier that match the given node

Specified by:
getModifier in interface Context
Parameters:
node - a tree node

getHiddenArgument

public java.lang.Object getHiddenArgument()
Returns the default argument to pass to methods in this context

Specified by:
getHiddenArgument in interface Context

createName

public Expression createName(Node node,
                             IdentifierToken name)
Creates the tree that is associated with the given name

Specified by:
createName in interface Context
Parameters:
node - the current node
name - the variable name
Throws:
java.lang.IllegalStateException - if the variable is not defined

lookupClass

public java.lang.Class lookupClass(java.lang.String cname)
                            throws java.lang.ClassNotFoundException
Looks for a class

Specified by:
lookupClass in interface Context
Parameters:
cname - the class name
Throws:
java.lang.ClassNotFoundException - if the class cannot be found

lookupClass

public java.lang.Class lookupClass(java.lang.String cname,
                                   java.lang.String ccname)
                            throws java.lang.ClassNotFoundException
Looks for a class (context-free lookup)

Specified by:
lookupClass in interface Context
Parameters:
cname - the class name
ccname - the fully qualified name of the context class
Throws:
java.lang.ClassNotFoundException - if the class cannot be found

setProperties

public java.lang.Class setProperties(SimpleAllocation node,
                                     java.lang.Class c,
                                     java.lang.Class[] cargs)
Sets the properties of a SimpleAllocation node

Specified by:
setProperties in interface Context
Parameters:
node - the allocation node
c - the class of the constructor
cargs - the classes of the arguments of the constructor

setProperties

public java.lang.Class setProperties(ClassAllocation node,
                                     java.lang.Class c,
                                     java.lang.Class[] args,
                                     java.util.List memb)
Sets the properties of a ClassAllocation node

Specified by:
setProperties in interface Context
Parameters:
node - the allocation node
c - the class of the constructor
args - the classes of the arguments of the constructor
memb - the class members

createClassArrayInitializer

protected ArrayInitializer createClassArrayInitializer()
Creates an initializer for the variable class array used to implement inner classes


lookupConstructor

public java.lang.reflect.Constructor lookupConstructor(java.lang.Class c,
                                                       java.lang.Class[] params)
                                                throws java.lang.NoSuchMethodException
Looks for a constructor

Specified by:
lookupConstructor in interface Context
Parameters:
c - the class of the constructor
params - the parameter types
Throws:
java.lang.NoSuchMethodException - if the constructor cannot be found

invokeConstructor

public java.lang.Object invokeConstructor(SimpleAllocation node,
                                          java.lang.Object[] args)
Invokes a constructor

Specified by:
invokeConstructor in interface Context
Parameters:
node - the SimpleAllocation node
args - the arguments

invokeConstructor

public java.lang.Object invokeConstructor(ClassAllocation node,
                                          java.lang.Object[] args)
Invokes a constructor

Specified by:
invokeConstructor in interface Context
Parameters:
node - the ClassAllocation node
args - the arguments

lookupMethod

public java.lang.reflect.Method lookupMethod(Node prefix,
                                             java.lang.String mname,
                                             java.lang.Class[] params)
                                      throws java.lang.NoSuchMethodException
Looks for a method

Specified by:
lookupMethod in interface Context
Parameters:
prefix - the method prefix
mname - the method name
params - the parameter types
Throws:
java.lang.NoSuchMethodException - if the method cannot be found

lookupFunction

public MethodDeclaration lookupFunction(java.lang.String mname,
                                        java.lang.Class[] params)
                                 throws NoSuchFunctionException
Looks for a function

Specified by:
lookupFunction in interface Context
Parameters:
mname - the function name
params - the parameter types
Throws:
NoSuchFunctionException - if the function cannot be found

lookupSuperMethod

public java.lang.reflect.Method lookupSuperMethod(Node node,
                                                  java.lang.String mname,
                                                  java.lang.Class[] params)
                                           throws java.lang.NoSuchMethodException
Looks for a super method

Specified by:
lookupSuperMethod in interface Context
Parameters:
node - the current node
mname - the method name
params - the parameter types
Throws:
java.lang.NoSuchMethodException - if the method cannot be find

getField

public java.lang.reflect.Field getField(java.lang.Class fc,
                                        java.lang.String fn)
                                 throws java.lang.NoSuchFieldException,
                                        AmbiguousFieldException
Looks for a field

Specified by:
getField in interface Context
Parameters:
fc - the field class
fn - the field name
Throws:
java.lang.NoSuchFieldException - if the field cannot be find
AmbiguousFieldException - if the field is ambiguous

getSuperField

public java.lang.reflect.Field getSuperField(Node node,
                                             java.lang.String fn)
                                      throws java.lang.NoSuchFieldException,
                                             AmbiguousFieldException
Looks for a field in the super class

Specified by:
getSuperField in interface Context
Parameters:
node - the current node
fn - the field name
Throws:
java.lang.NoSuchFieldException - if the field cannot be find
AmbiguousFieldException - if the field is ambiguous

setAccessFlag

protected void setAccessFlag(java.lang.reflect.Member m)
Sets the access flag of a member


getPackageName

protected java.lang.String getPackageName(java.lang.Class c)
Gets the package name for the given class



Copyright © 2001 Stephane Hillion. All Rights Reserved.