public abstract class AbstractCompileContext extends groovy.lang.Binding implements ExprCompileContext
Many of the abstract methods defined by this class are designed to return information about the compile context source. This source object usually represents the BC4J owner of the script that is compiling. At execute time it is frequently implemented by an oracle.jbo.Row. At compile time it is exepcted that it will be represented by a BC4J def object or its DT equivalent.
Note that many of the typing methods deal with String types rather than the type classes. This is intentional. Type classes are not available in all compile contexts (DT).
Constructor and Description |
---|
AbstractCompileContext() |
Modifier and Type | Method and Description |
---|---|
abstract boolean |
canTypeCheck()
Returns whether this compile context can be used for type checking.
|
protected java.lang.Class[] |
classesFor(java.lang.String[] types) |
protected java.lang.Class |
classFor(java.lang.String type) |
abstract ExprDef |
getExprDef()
Return the definition of the expressio that is compiling.
|
abstract groovy.lang.Script |
getGlobalScript()
Return the global script instance defined by this compile context.
|
java.lang.String |
getMethodReturnType(java.lang.String receiver,
java.lang.String name,
java.lang.String... argtypes)
Return the return type of the given method.
|
abstract java.lang.String |
getNewValueType()
In validator contexts this returns the type of the new attribute
or row.
|
abstract java.lang.String |
getOldValueType()
In validator contexts this returns the type of the new attribute
or row.
|
abstract groovy.lang.Script |
getOperationsScript()
Return the operations script for the current compile context.
|
java.lang.String |
getPropertyType(java.lang.String objectType,
java.lang.String name)
Return the type of the given property.
|
protected java.lang.String |
getReturnType(java.lang.Class receiver,
java.lang.String name,
java.lang.Class... argtypes) |
protected java.lang.String |
getReturnType(java.lang.String receiverType,
java.lang.String name,
java.lang.String... argtypes)
Get the return type of the specified method on the specified receiver
type.
|
abstract java.lang.String |
getSourceAttributeType(java.lang.String name)
Return the source attribute type.
|
abstract java.lang.String |
getSourceMethodReturnType(java.lang.String name,
java.lang.String... argtypes)
Return the return type of a source method.
|
abstract java.lang.String |
getSourcePropertyType(java.lang.String name)
Return the source property type.
|
abstract java.lang.String |
getSourceType()
Return the source type of the current compile context.
|
java.lang.String |
getVariableType(java.lang.String name)
Return the type of the given variable.
|
protected boolean |
isAssignableFrom(java.lang.Class intrf,
java.lang.String type)
Determines if the specified interface class is assignable from the type.
|
protected void |
setNestedContext(ExprCompileContext nestedContext)
May be used to define a nested context in which future ADF
properties/methods may be evaluated.
|
getProperty, getVariable, getVariables, hasVariable, setProperty, setVariable
public abstract ExprDef getExprDef()
ExprCompileContext
getExprDef
in interface ExprCompileContext
public abstract boolean canTypeCheck()
ExprCompileContext
canTypeCheck
in interface ExprCompileContext
public java.lang.String getPropertyType(java.lang.String objectType, java.lang.String name)
ExprCompileContext
Invoked by the type checker if it cannot resolve the specifid property.
getPropertyType
in interface ExprCompileContext
public java.lang.String getVariableType(java.lang.String name)
ExprCompileContext
Invoked by the type checker if it cannot resolve the specified variable.
getVariableType
in interface ExprCompileContext
public java.lang.String getMethodReturnType(java.lang.String receiver, java.lang.String name, java.lang.String... argtypes)
ExprCompileContext
Invoked by the type checker if it cannot resolve the specified method.
getMethodReturnType
in interface ExprCompileContext
protected void setNestedContext(ExprCompileContext nestedContext)
The nested context may be used to store the structure of a BC4J association so that properties of the association may be resolved. For example, in an emp context the nested context could be used to resolve the Emps property in the expression 'Dept.Emps'.
public abstract groovy.lang.Script getGlobalScript()
ExprCompileContext
getGlobalScript
in interface ExprCompileContext
public abstract groovy.lang.Script getOperationsScript()
public abstract java.lang.String getSourceType()
public abstract java.lang.String getSourceAttributeType(java.lang.String name)
public abstract java.lang.String getSourcePropertyType(java.lang.String name)
public abstract java.lang.String getSourceMethodReturnType(java.lang.String name, java.lang.String... argtypes)
public abstract java.lang.String getNewValueType()
public abstract java.lang.String getOldValueType()
protected java.lang.String getReturnType(java.lang.String receiverType, java.lang.String name, java.lang.String... argtypes)
The default implementation uses the groovy MOP to find the method on the receiver class. Concrete implementations may override this method if the receiver class is not available.
receiverType
- the type of the Object that will receive the method
invocationname
- the name of the method that will be invokedargtypes
- the types of arguments that will be passedprotected java.lang.String getReturnType(java.lang.Class receiver, java.lang.String name, java.lang.Class... argtypes)
protected boolean isAssignableFrom(java.lang.Class intrf, java.lang.String type)
The assignable rules should be java.lang.Class. The default implementation looks up the Class to determine if it is assignable. Concrete implementations that may not have the type Class available may override this to perform there own checking.
intrf
- the interface to check fortype
- the type to be checkedprotected java.lang.Class classFor(java.lang.String type)
protected java.lang.Class[] classesFor(java.lang.String[] types)