public abstract class AbstractCompileContext extends groovy.lang.Binding implements GroovyExprCompileContext
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).
Modifier and Type | Class and Description |
---|---|
class |
AbstractCompileContext.GlobalExtendedType |
class |
AbstractCompileContext.UntypedExtendedType |
ExprCompileContext.CompilerCallback
Modifier and Type | Field and Description |
---|---|
protected ExprCompileContext |
mExtendedType |
UNKNOWN_PARAMETER_TYPE_NAME, VOID_RETURN_TYPE
Constructor and Description |
---|
AbstractCompileContext() |
Modifier and Type | Method and Description |
---|---|
void |
checkAssignment(java.lang.String token,
java.lang.String type,
ExprCompileContext.CompilerCallback callback) |
protected java.lang.Class[] |
classesFor(java.lang.String[] types) |
java.lang.Class |
classFor(java.lang.String type) |
protected ExprCompileContext |
createExtendedType(StructureDefinition structureDefinition)
Creates a new compile context for the specified structureDefinition.
|
protected ExprCompileContext |
createExtendedTypeForView(java.lang.String view)
Invoked when typing expressions like newView.
|
ExprCompileContext |
createUntypedExtendedType(int flags) |
protected java.lang.String |
getAttributeType(java.lang.String name) |
protected org.codehaus.groovy.ast.ASTNode |
getCurrentASTNode() |
protected org.codehaus.groovy.ast.MethodNode |
getCurrentNode() |
java.lang.String |
getDisplayType()
Return a type name for the compile context to be used in error and
and warning messages.
|
org.codehaus.groovy.control.ErrorCollector |
getErrorCollector()
Returns the error collector that was used during type checking.
|
abstract ExprDef |
getExprDef()
Return the definition of the expressio that is compiling.
|
ExprTrustSupplier |
getExprTrustSupplier()
Return the security policiy that is associated with this context.
|
ExprCompileContext |
getExtendedType()
Return a compile context to type an unhandled
variable/property/method that is defined within the context of
another variable/property/method.
|
abstract java.lang.String |
getGlobalOperationReturnType(java.lang.String name,
java.lang.String... argtypes)
Return the type of the given global operations.
|
java.lang.String |
getMethodReturnType(java.lang.String receiver,
java.lang.String name,
java.lang.String[] argtypes,
java.lang.String[] argvals)
Return the return type of the given method.
|
java.lang.String |
getNewValueType()
In validator contexts this returns the type of the new attribute
or row.
|
java.lang.String |
getOldValueType()
In validator contexts this returns the type of the new attribute
or row.
|
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.
|
java.lang.String |
getSourceAttributeType(java.lang.String name)
Deprecated.
since 11.1.1.7.1. Use the StructureDefinition attributes instead.
|
java.lang.String |
getSourceMethodReturnType(java.lang.String name,
java.lang.String... argtypes)
Deprecated.
since 11.1.1.7.1. Use the StructureDefinition operations instead.
|
java.lang.String |
getSourceOperationReturnType(java.lang.String name,
java.lang.String... argtypes)
Deprecated.
since 11.1.1.7.1. Use the StructureDefinition operations instead.
|
java.lang.String |
getSourcePropertyType(java.lang.String name)
Deprecated.
since 11.1.1.7.1. Use the StructureDefinition attributes instead.
|
java.lang.String |
getSourceType()
Deprecated.
since 11.1.1.7.1 This should be available as a property
of the
StructureDefinition .
See oracle.adf.model.utils.JSR227Util.ROW_CLASS_NAME . |
StructureDefinition |
getStructureDefinition()
Return the
oracle.binding.meta.StructureDefnition of the compile
context. |
java.lang.ClassLoader |
getTypeCheckerClassLoader() |
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)
Deprecated.
since 11.1.1. Use
isAssignableFrom(String, String)
instead. |
protected boolean |
isAssignableFrom(java.lang.String interfaceName,
java.lang.String type)
Determines if the specified interface class is assignable from the type.
|
boolean |
isMandatoryAttribute(java.lang.String name)
Returns whether the specified attribute is mandatory.
|
boolean |
isRowAttribute(java.lang.String name)
Returns whether the variable resolves to an row attribute.
|
static boolean |
isTriggerRowType(java.lang.String triggerType) |
boolean |
isTypeChecked()
Returns whether type checking should be performed in this compile context.
|
protected java.lang.String |
mapType(java.lang.String type) |
protected boolean |
operationMatches(OperationDefinition operDef,
java.lang.String methodName,
java.lang.String... params) |
void |
setCurrentASTNode(org.codehaus.groovy.ast.ASTNode node) |
void |
setCurrentNode(org.codehaus.groovy.ast.MethodNode node) |
void |
setErrorCollector(org.codehaus.groovy.control.ErrorCollector errorCollector) |
void |
setTypeCheckerClassLoader(java.lang.ClassLoader classLoader) |
getProperty, getVariable, getVariables, hasVariable, setProperty, setVariable
getMetaClass, invokeMethod, setMetaClass
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
isCodeSource
protected ExprCompileContext mExtendedType
public abstract ExprDef getExprDef()
ExprCompileContext
getExprDef
in interface ExprCompileContext
public boolean isTypeChecked()
ExprCompileContext
isTypeChecked
in interface ExprCompileContext
public java.lang.String getSourceType()
StructureDefinition
.
See oracle.adf.model.utils.JSR227Util.ROW_CLASS_NAME
.public StructureDefinition getStructureDefinition()
ExprCompileContext
oracle.binding.meta.StructureDefnition
of the compile
context. For example, when compiling an entity validation rule this
should return the StructureDefinition of the entity.getStructureDefinition
in interface ExprCompileContext
public static boolean isTriggerRowType(java.lang.String triggerType)
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 boolean isRowAttribute(java.lang.String name)
ExprCompileContext
Invoked by the type checker to perform additional validation of attribute variables.
isRowAttribute
in interface ExprCompileContext
public boolean isMandatoryAttribute(java.lang.String name)
ExprCompileContext
isMandatoryAttribute
in interface ExprCompileContext
public java.lang.String getMethodReturnType(java.lang.String receiver, java.lang.String name, java.lang.String[] argtypes, java.lang.String[] argvals)
ExprCompileContext
Invoked by the type checker if it cannot resolve the specified method.
getMethodReturnType
in interface ExprCompileContext
public abstract java.lang.String getGlobalOperationReturnType(java.lang.String name, java.lang.String... argtypes)
ExprCompileContext
getGlobalOperationReturnType
in interface ExprCompileContext
public java.lang.String getSourceAttributeType(java.lang.String name)
public java.lang.String getSourcePropertyType(java.lang.String name)
protected java.lang.String getAttributeType(java.lang.String name)
public java.lang.String getSourceMethodReturnType(java.lang.String name, java.lang.String... argtypes)
public java.lang.String getSourceOperationReturnType(java.lang.String name, java.lang.String... argtypes)
protected ExprCompileContext createExtendedType(StructureDefinition structureDefinition)
protected ExprCompileContext createExtendedTypeForView(java.lang.String view)
public java.lang.String getNewValueType()
public java.lang.String getOldValueType()
public ExprTrustSupplier getExprTrustSupplier()
ExprCompileContext
getExprTrustSupplier
in interface ExprCompileContext
public ExprCompileContext getExtendedType()
ExprCompileContext
This will be invoked once by the type checker after it resolves an unhandled variable/property/method. This method may be used to pass a compile context back to the compile context that will be invoked later to handle types in the enclosing context.
For example, consider an expression that is evaluated in the context of
an Emp validator:
Dept.Loc
where 'Dept' is defined as an accessor that references the Emp's department.
When the compile context is asked for the java type of the 'Dept' variable (i.e. 'oracle.jbo.Row') an extended type may also be defined by instantiating a new compile context for the 'Dept' structure and returning that when the type checker invokes getExtendedType. The ADF type checking extension will store the extended type with the returned java type. When the 'Loc' property is later typed the type checker will query the 'Dept' variable extended data rather than the base script context.
getExtendedType
in interface ExprCompileContext
public org.codehaus.groovy.control.ErrorCollector getErrorCollector()
GroovyExprCompileContext
Applications may use the ErrorCollector to get a list of errors/warnings that were discovered during type checking.
getErrorCollector
in interface GroovyExprCompileContext
public java.lang.String getDisplayType()
ExprCompileContext
getDisplayType
in interface ExprCompileContext
public void setErrorCollector(org.codehaus.groovy.control.ErrorCollector errorCollector)
setErrorCollector
in interface GroovyExprCompileContext
public void setTypeCheckerClassLoader(java.lang.ClassLoader classLoader)
setTypeCheckerClassLoader
in interface ExprCompileContext
public java.lang.ClassLoader getTypeCheckerClassLoader()
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.String interfaceName, 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 boolean isAssignableFrom(java.lang.Class intrf, java.lang.String type)
isAssignableFrom(String, String)
instead.public java.lang.Class classFor(java.lang.String type)
protected java.lang.Class[] classesFor(java.lang.String[] types)
public void setCurrentNode(org.codehaus.groovy.ast.MethodNode node)
setCurrentNode
in interface GroovyExprCompileContext
protected org.codehaus.groovy.ast.MethodNode getCurrentNode()
public void setCurrentASTNode(org.codehaus.groovy.ast.ASTNode node)
setCurrentASTNode
in interface GroovyExprCompileContext
protected org.codehaus.groovy.ast.ASTNode getCurrentASTNode()
protected boolean operationMatches(OperationDefinition operDef, java.lang.String methodName, java.lang.String... params)
@Concealed public ExprCompileContext createUntypedExtendedType(int flags)
protected java.lang.String mapType(java.lang.String type)
public void checkAssignment(java.lang.String token, java.lang.String type, ExprCompileContext.CompilerCallback callback)