|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.eclipse.ocl.AbstractTypeChecker<C,O,P,PM>
public abstract class AbstractTypeChecker<C,O,P,PM>
Implementation of the TypeChecker
interface which offers the default
implementation for the type checking system. This class encapsulates the
behaviour of the 1.2 release's TypeUtil
class, in an extensible unit.
This class is not intended to be extended by clients. They should extend
AbstractTypeResolver
instead, so that TypeChecker
can be
successfully adapted by AbstractEnvironment
. However, if an already
implemented TypeResolver
wants to exploit the type checking system
extensibility, it may extend this class.
See Environment
for generic parameters description
AbstractTypeResolver
,
TypeUtil
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface org.eclipse.ocl.TypeChecker |
---|
TypeChecker.Cached<C,O,P> |
Constructor Summary | |
---|---|
AbstractTypeChecker(Environment<?,C,O,P,?,PM,?,?,?,?,?,?> env)
Initializes me with my environment. |
Method Summary | |
---|---|
boolean |
checkMutuallyComparable(java.lang.Object problemObject,
C type1,
C type2,
int opcode)
Checks whether two types are mutually comparable in the determination of the applicability of = and <> operations. |
protected CollectionKind |
commonSuperType(CollectionKind kind1,
CollectionKind kind2)
Common-supertype helper method for collection kinds |
C |
commonSuperType(java.lang.Object problemObject,
C type1,
C type2)
Get the common supertype of two types. |
boolean |
compatibleTypeMatch(C type1,
C type2)
Compare two types. |
boolean |
exactTypeMatch(C type1,
C type2)
Compare two types. |
P |
findAttribute(C owner,
java.lang.String name)
Finds the most specific (re)definition of an attribute in the specified classifier. |
O |
findOperationMatching(C owner,
java.lang.String name,
java.util.List<? extends TypedElement<C>> args)
Finds an operation by signature in the specified classifier. |
C |
findSignalMatching(C receiver,
java.util.List<C> signals,
java.lang.String name,
java.util.List<? extends TypedElement<C>> args)
Find a matching signal in the specified list. |
java.util.List<P> |
getAttributes(C owner)
Obtains all of the OCL attributes applicable to the specified owner type, including any that were defined in the OCL environment as additional attributes. |
protected java.util.List<O> |
getBestMatchingOperations(C owner,
java.lang.String name,
java.util.List<? extends TypedElement<C>> args)
|
protected Environment<?,C,O,P,?,PM,?,?,?,?,?,?> |
getEnvironment()
Obtains my OCL parsing environment. |
protected OCLFactory |
getOCLFactory()
Obtains the OCL factory that I use to instantiate the OCL Abstract Syntax. |
java.util.List<O> |
getOperations(C owner)
Obtains all of the OCL operations applicable to the specified owner type, including any that were defined in the OCL environment as additional operations. |
C |
getPropertyType(C owner,
P property)
Gets the type of a property, accounting for the fact that we may be navigating to it from an association class (in which the member ends of an association always have multiplicity 1) or not. |
int |
getRelationship(C type1,
C type2)
Queries the relationship, according to generalizations, of two types. |
protected int |
getRelationship(CollectionKind kind1,
CollectionKind kind2)
Get-relationship helper comparing collection kinds. |
C |
getResultType(java.lang.Object problemObject,
C owner,
O operation,
java.util.List<? extends TypedElement<C>> args)
Obtains the effective result type of the specified operation, which may or may not have parameters type by generic type variables. |
protected UMLReflection<?,C,O,P,?,PM,?,?,?,?> |
getUMLReflection()
Obtains the UML introspector that I use to access the subject model. |
boolean |
isStandardLibraryFeature(C owner,
java.lang.Object feature)
Queries whether the specified feature (operation or attribute), as applied to a particular owner classifier, is defined by the standard library or not (in which case it would, presumably, be user-defined). |
boolean |
matchArgs(C owner,
java.util.List<?> paramsOrProperties,
java.util.List<? extends TypedElement<C>> args)
Compares an actual argument list against the signature of an operation or a signal. |
protected int |
matchArgsWithExactitude(C owner,
java.util.List<?> paramsOrProperties,
java.util.List<? extends TypedElement<C>> args)
Return the number of arguments with exact type matches, or -ve if there is no match. |
protected abstract C |
resolve(C type)
Resolves the specified template of a demand-created type to one that is already defined in the current environment, or else a new one or even the given type (which would usually then be added to the environment). |
protected abstract CollectionType<C,O> |
resolveCollectionType(CollectionKind kind,
C elementType)
Resolves the specified collection type to a collection type already available in the current environment, or else a new one. |
O |
resolveGenericSignature(C owner,
O oper)
Resolves the signature of a generic operation (where it has parameters of type and/or T or T2) against the source type of the operation, as appropriate. |
protected C |
resolveGenericType(C owner,
C paramType,
C argType)
Resolves the generic type of an operation parameter (where it is T or T2) against the source type of the operation or the type of the actual argument, as appropriate. |
protected abstract TupleType<O,P> |
resolveTupleType(org.eclipse.emf.common.util.EList<? extends TypedElement<C>> parts)
Resolves the specified signature of tuple parts to a tuple type already available in the current environment, or else a new one. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public AbstractTypeChecker(Environment<?,C,O,P,?,PM,?,?,?,?,?,?> env)
env
- my environmentMethod Detail |
---|
protected Environment<?,C,O,P,?,PM,?,?,?,?,?,?> getEnvironment()
protected UMLReflection<?,C,O,P,?,PM,?,?,?,?> getUMLReflection()
protected OCLFactory getOCLFactory()
public int getRelationship(C type1, C type2)
TypeChecker
UMLReflection.getRelationship(Object, Object)
method does not.
getRelationship
in interface TypeChecker<C,O,P>
type1
- a typetype2
- another type
UMLReflection
interfaceUMLReflection.getRelationship(Object, Object)
protected int getRelationship(CollectionKind kind1, CollectionKind kind2)
public C getResultType(java.lang.Object problemObject, C owner, O operation, java.util.List<? extends TypedElement<C>> args)
TypeChecker
getResultType
in interface TypeChecker<C,O,P>
problemObject
- the context object on which to report any problem that we may
find in computing the result type. Usually this is some
abstract or concrete syntax tree nodeowner
- the owner of the operation (type on which the operation is
called)operation
- the operation signatureargs
- the arguments of the operation call, which are expressions or
variables
public C getPropertyType(C owner, P property)
TypeChecker
getPropertyType
in interface TypeChecker<C,O,P>
owner
- the source of the navigation of the property, which may be an
association class (the interesting scenario)property
- the property to navigate
public C commonSuperType(java.lang.Object problemObject, C type1, C type2)
UMLReflection.getCommonSuperType(Object, Object)
method does not.
commonSuperType
in interface TypeChecker<C,O,P>
type1
- a typetype2
- another typeproblemObject
- the object which could have problems.
UMLReflection.getCommonSuperType(Object, Object)
protected CollectionKind commonSuperType(CollectionKind kind1, CollectionKind kind2)
public boolean checkMutuallyComparable(java.lang.Object problemObject, C type1, C type2, int opcode)
TypeChecker
checkMutuallyComparable
in interface TypeChecker<C,O,P>
problemObject
- the object which could have problems.type1
- a typetype2
- another typeopcode
- the operation code
public boolean exactTypeMatch(C type1, C type2)
TypeChecker
exactTypeMatch
in interface TypeChecker<C,O,P>
type1
- a typetype2
- another type
public boolean compatibleTypeMatch(C type1, C type2)
TypeChecker
compatibleTypeMatch
in interface TypeChecker<C,O,P>
type1
- a typetype2
- another type
public java.util.List<O> getOperations(C owner)
TypeChecker
getOperations
in interface TypeChecker<C,O,P>
owner
- the operation owner type
public P findAttribute(C owner, java.lang.String name)
findAttribute
in interface TypeChecker<C,O,P>
owner
- the classifier to searchname
- the name of the operation
null
if not foundpublic java.util.List<P> getAttributes(C owner)
TypeChecker
getAttributes
in interface TypeChecker<C,O,P>
owner
- the attribute owner type
public O resolveGenericSignature(C owner, O oper)
TypeChecker
resolveGenericSignature
in interface TypeChecker<C,O,P>
owner
- the operation source typeoper
- the generic operation
protected C resolveGenericType(C owner, C paramType, C argType)
env
- the OCL environmentowner
- the operation source typeparamType
- the operation parameter typeargType
- the actual operation argument type
public boolean matchArgs(C owner, java.util.List<?> paramsOrProperties, java.util.List<? extends TypedElement<C>> args)
TypeChecker
matchArgs
in interface TypeChecker<C,O,P>
owner
- the type that owns the operationparamsOrProperties
- the operation parameters or signal attributes to match against
the argumentsargs
- a list of OCLExpression
s or Variable
s
protected int matchArgsWithExactitude(C owner, java.util.List<?> paramsOrProperties, java.util.List<? extends TypedElement<C>> args)
public C findSignalMatching(C receiver, java.util.List<C> signals, java.lang.String name, java.util.List<? extends TypedElement<C>> args)
TypeChecker
findSignalMatching
in interface TypeChecker<C,O,P>
receiver
- the type that receives the signalsignals
- the signals to searchname
- name of signal to findargs
- list of arguments to match against the signal signature
null
if not foundpublic O findOperationMatching(C owner, java.lang.String name, java.util.List<? extends TypedElement<C>> args)
TypeChecker
findOperationMatching
in interface TypeChecker<C,O,P>
owner
- the classifier to searchname
- the name of the operationargs
- a list of arguments to match against the operation signature,
as either expressions or variables
null
if not foundprotected java.util.List<O> getBestMatchingOperations(C owner, java.lang.String name, java.util.List<? extends TypedElement<C>> args)
public boolean isStandardLibraryFeature(C owner, java.lang.Object feature)
TypeChecker
isStandardLibraryFeature
in interface TypeChecker<C,O,P>
owner
- a classifier on which a feature is to be accessedfeature
- the feature to be accessed
protected abstract TupleType<O,P> resolveTupleType(org.eclipse.emf.common.util.EList<? extends TypedElement<C>> parts)
parts
- specification of the tuple type signature
protected abstract CollectionType<C,O> resolveCollectionType(CollectionKind kind, C elementType)
kind
- the kind of collection type to obtainelementType
- the element type of the requisite collection type
protected abstract C resolve(C type)
type
- the template/prototype/example of a type to resolve in the
current environment
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |