public abstract class AbstractEnvironment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> extends AbstractBasicEnvironment implements Environment.Internal<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>, Environment.Lookup<PK,C,O,P>
Environment interface providing
some useful common behavior for providers of metamodel bindings. It is
recommended to extend this class rather than to implement the
Environment interface from scratch.
In particular, this class provides:
along with some subclass hook methods and convenience methods.
See the Environment class for a description of the
generic type parameters of this class.
| Modifier and Type | Class and Description |
|---|---|
protected class |
AbstractEnvironment.VariableEntry
Wrapper for OCL variable declarations that additionally tracks whether
they are explicit or implicit variables.
|
Environment.Internal<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>, Environment.Lookup<PK,C,O,P>, Environment.RegistryOCL_NAMESPACE_URI, RESULT_VARIABLE_NAME, SELF_VARIABLE_NAME| Modifier | Constructor and Description |
|---|---|
protected |
AbstractEnvironment()
Initializes me without a parent environment.
|
protected |
AbstractEnvironment(AbstractEnvironment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> parent)
Initializes me with the specified parent environment, which should be
of the same type as me.
|
protected |
AbstractEnvironment(Environment.Internal<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> parent)
Initializes me with the specified parent environment.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
addedVariable(String name,
Variable<C,PM> variable,
boolean isExplicit)
Persists the specified variable in my resource.
|
boolean |
addElement(String name,
Variable<C,PM> elem,
boolean isExplicit)
Adds a variable declaration to the environment.
|
void |
addHelperOperation(C owner,
O operation)
Adds an OCL-defined additional ("helper") operation to
the environment.
|
void |
addHelperProperty(C owner,
P property)
Adds an OCL-defined additional ("helper") attribute to
the environment.
|
protected void |
addOperation(C owner,
O operation)
Deprecated.
Since 1.2, use the
Environment.Internal.addHelperOperation(Object, Object)
API, instead |
protected void |
addProperty(C owner,
P property)
Deprecated.
Since 1.2, use the
Environment.Internal.addHelperProperty(Object, Object)
API, instead |
protected TypeChecker<C,O,P> |
createTypeChecker()
Creates my extensible type checker utility when it is first needed.
|
void |
deleteElement(String name)
Removes a variable when it goes out of scope.
|
void |
dispose()
I dispose my type resolver, if it is an
AbstractTypeResolver
and I am the root environment (which owns the resolver). |
protected void |
findNonNavigableAssociationEnds(C classifier,
String name,
List<P> ends)
Searches for non-navigable association ends with the specified
name at the given classifier's end of an association.
|
protected void |
findUnnamedAssociationEnds(C classifier,
String name,
List<P> ends)
Searches for unnamed association ends using the specified name
at the given classifier's end of an association.
|
<T> T |
getAdapter(Class<T> adapterType)
Since
AbstractTypeResolver implements TypeChecker,
AbstractEnvironment will try to adapt TypeChecker, via its
TypeResolver. |
List<P> |
getAdditionalAttributes(C classifier)
Obtains the additional attributes defined in this environment in the
context of the specified classifier.
|
List<O> |
getAdditionalOperations(C classifier)
Obtains the additional operations defined in this environment in the
context of the specified classifier.
|
CT |
getBodyCondition(O operation)
Obtains an operation's body condition constraint.
|
C |
getContextClassifier()
Obtains the context classifier of this environment.
|
O |
getContextOperation()
Obtains the context operation of this environment, if it is an operation
context.
|
PK |
getContextPackage()
Obtains my context package, if any.
|
P |
getContextProperty()
Obtains the context property of this environment, if it is a property
context.
|
CT |
getDeriveConstraint(P property)
Obtains a property's derived-value constraint.
|
protected AbstractEnvironment.VariableEntry |
getElement(int index) |
protected int |
getElementsSize() |
CT |
getInitConstraint(P property)
Obtains a property's with an initial-value constraint, if any.
|
Environment.Internal<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> |
getInternalParent()
Obtains my parent environment after construction.
|
AbstractEnvironment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> |
getParent()
Deprecated.
Since 1.2, use the
getInternalParent() method, instead. |
protected Resource |
getResource()
Obtains the resource in which my
type resolver persists
OCL-generated types and additional features.
|
Variable<C,PM> |
getSelfVariable()
Gets the self variable, looking it up in a parent environment if necessary.
|
protected TypeChecker<C,O,P> |
getTypeChecker()
Obtains my extensible type checker utility.
|
Collection<Variable<C,PM>> |
getVariables()
Returns the
Variables registered explicitly in me and any
parents that I may have. |
protected String |
initialLower(Object element)
Gets the name of a named
element with its initial character
in lower case. |
boolean |
isEmpty()
Queries whether the environment has any local variables defined in it.
|
Variable<C,PM> |
lookup(String name)
Obtains the Variable bound to a variable name.
|
C |
lookupAssociationClassReference(C owner,
String name)
Finds a reference in the specified class to the named association class.
|
Variable<C,PM> |
lookupImplicitSourceForAssociationClass(String name)
Return an implicit variable that references the
named association class.
|
Variable<C,PM> |
lookupImplicitSourceForOperation(String name,
List<? extends TypedElement<C>> args)
Return an implicit variable declaration that defines the specified
operation signature.
|
Variable<C,PM> |
lookupImplicitSourceForProperty(String name)
Return the most appropriate matching variable to use as the implicit
source of a call to the specified property.
|
Variable<C,PM> |
lookupImplicitSourceForSignal(String name,
List<? extends TypedElement<C>> args)
Return an implicit variable declaration that defines the specified
signal reception signature.
|
Variable<C,PM> |
lookupImplicitSourceForState(List<String> path)
Finds the best-matching implicit variable to use as a source for
the unqualified oclIsInState() invocation with the specified
state qualified name path.
|
Variable<C,PM> |
lookupLocal(String name)
Obtains the Variable bound to a local variable name.
|
protected P |
lookupNonNavigableEnd(C owner,
String name)
Looks up a non-navigable association end on behalf of
the specified
owner classifier (which is at that end). |
O |
lookupOperation(C owner,
String name,
List<? extends TypedElement<C>> args)
Find an operation in the specified class.
|
P |
lookupProperty(C owner,
String name)
Finds a property defined or inherited by the specified classifier.
|
C |
lookupSignal(C owner,
String name,
List<? extends TypedElement<C>> args)
Finds a received signal in the specified classifier.
|
S |
lookupState(C owner,
List<String> path)
Finds the state identified by the specified qualified name path, to
resolve an oclIsInState() operation.
|
boolean |
notOK(Option<ProblemHandler.Severity> option)
Queries whether I have a non-OK setting for the specified problem option.
|
protected void |
removedVariable(String name,
Variable<C,PM> variable,
boolean isExplicit)
Removes the specified variable from my resource.
|
void |
setBodyCondition(O operation,
CT constraint)
Associates an operation with an body condition constraint.
|
protected void |
setContextOperation(O contextOperation)
Assigns my context operation.
|
protected void |
setContextPackage(PK contextPackage)
Assigns my context package.
|
protected void |
setContextProperty(P contextProperty)
Assigns my context property.
|
void |
setDeriveConstraint(P property,
CT constraint)
Associates a property with an derived-value constraint.
|
void |
setInitConstraint(P property,
CT constraint)
Associates a property with an initial-value constraint.
|
void |
setInternalParent(Environment.Internal<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> parent)
Assigns me a parent environment after construction.
|
protected void |
setParent(AbstractEnvironment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> parent)
Assigns me a parent environment after construction.
|
void |
setSelfVariable(Variable<C,PM> var)
Sets the "self" variable that is the implicit source of any property,
operation, or association class call.
|
C |
tryLookupAssociationClassReference(C owner,
String name)
This default implementation simply delegates to the
Environment.lookupAssociationClassReference(Object, String) method. |
C |
tryLookupClassifier(List<String> names)
This default implementation simply delegates to the
Environment.lookupClassifier(List) method. |
O |
tryLookupOperation(C owner,
String name,
List<? extends TypedElement<C>> args)
This default implementation simply delegates to the
Environment.lookupOperation(Object, String, List) method. |
PK |
tryLookupPackage(List<String> names)
This default implementation simply delegates to the
Environment.lookupPackage(List) method. |
P |
tryLookupProperty(C owner,
String name)
This default implementation simply delegates to the
Environment.lookupProperty(Object, String) method. |
C |
tryLookupSignal(C owner,
String name,
List<? extends TypedElement<C>> args)
This default implementation simply delegates to the
Environment.lookupSignal(Object, String, List) method. |
analyzerError, analyzerError, analyzerError, analyzerWarning, basicGetOptions, clearOptions, createDefaultProblemHandler, createFormattingHelper, getASTMapping, getASTNodeToCSTNodeMap, getFormatter, getOptions, getParser, getProblemHandler, getValue, initASTMapping, initASTMapping, isEnabled, lexerError, parserError, problem, putOptions, removeOption, removeOptions, setASTNodeToCSTNodeMap, setOption, setParent, setParser, setProblemHandler, utilityError, validatorErrorclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitanalyzerError, analyzerError, analyzerError, analyzerWarning, getASTMapping, getFormatter, getParser, getProblemHandler, initASTMapping, lexerError, parserError, problem, setParser, setProblemHandler, utilityError, validatorErrorclearOptions, getOptions, getValue, isEnabled, putOptions, removeOption, removeOptions, setOptiondefineAttribute, defineOperation, getDefinition, getFactory, getOCLFactory, getOCLStandardLibrary, getStates, getTypeResolver, getUMLReflection, isInPostcondition, lookupClassifier, lookupPackage, setParent, undefineprotected AbstractEnvironment()
protected AbstractEnvironment(Environment.Internal<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> parent)
parent - an environment (or null)public Environment.Internal<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> getInternalParent()
Environment.Internal@Deprecated public AbstractEnvironment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> getParent()
getInternalParent() method, instead.Environmentpublic void setInternalParent(Environment.Internal<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> parent)
null if I previously had one.protected void setParent(AbstractEnvironment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E> parent)
null if I previously had one.parent - my new parentpublic PK getContextPackage()
EnvironmentgetContextPackage in interface Environment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>Environment.getContextClassifier()protected void setContextPackage(PK contextPackage)
contextPackage - my new context packagepublic C getContextClassifier()
Environmentpublic O getContextOperation()
Environmentprotected void setContextOperation(O contextOperation)
contextOperation - my context operationpublic P getContextProperty()
Environmentprotected void setContextProperty(P contextProperty)
contextProperty - my context propertyprotected Resource getResource()
public boolean isEmpty()
Environmentpublic Collection<Variable<C,PM>> getVariables()
EnvironmentVariables registered explicitly in me and any
parents that I may have. This does not include implicit variables or
variables from parent environments that are shadowed by variables in
the nested scope.public boolean addElement(String name, Variable<C,PM> elem, boolean isExplicit)
EnvironmentaddElement in interface Environment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>name - the name of the variable, or nullelem - a variable declarationisExplicit - whether this is an explicitly declared variabletrue if the variable was successfully added because
it wasn't already declared locally in this environment;
false, otherwiseprotected void addedVariable(String name, Variable<C,PM> variable, boolean isExplicit)
name - the variable namevariable - the variable addedisExplicit - whether it is an explicit or implicit variablepublic void deleteElement(String name)
Environmentprotected void removedVariable(String name, Variable<C,PM> variable, boolean isExplicit)
name - the variable namevariable - the variable removedisExplicit - whether it was an explicit or implicit variablepublic void setSelfVariable(Variable<C,PM> var)
Environmentpublic Variable<C,PM> getSelfVariable()
Environmentprotected int getElementsSize()
protected AbstractEnvironment.VariableEntry getElement(int index)
public void addHelperProperty(C owner, P property)
Environment.InternalEnvironment.defineAttribute(C, org.eclipse.ocl.expressions.Variable<C, PM>, CT) method).@Deprecated protected void addProperty(C owner, P property)
Environment.Internal.addHelperProperty(Object, Object)
API, insteadEnvironment.defineAttribute(C, org.eclipse.ocl.expressions.Variable<C, PM>, CT) method.owner - the classifier in which context the attribute is definedproperty - the additional attributepublic List<P> getAdditionalAttributes(C classifier)
Environmentpublic void addHelperOperation(C owner, O operation)
Environment.InternalEnvironment.defineOperation(C, java.lang.String, C, java.util.List<org.eclipse.ocl.expressions.Variable<C, PM>>, CT) method).@Deprecated protected void addOperation(C owner, O operation)
Environment.Internal.addHelperOperation(Object, Object)
API, insteadEnvironment.defineOperation(C, java.lang.String, C, java.util.List<org.eclipse.ocl.expressions.Variable<C, PM>>, CT) method.owner - the classifier in which context the attribute is definedoperation - the additional operationpublic List<O> getAdditionalOperations(C classifier)
Environmentpublic void setInitConstraint(P property, CT constraint)
Environmentpublic CT getInitConstraint(P property)
Environmentpublic void setDeriveConstraint(P property, CT constraint)
Environmentpublic CT getDeriveConstraint(P property)
Environmentpublic void setBodyCondition(O operation, CT constraint)
Environmentpublic CT getBodyCondition(O operation)
Environmentpublic Variable<C,PM> lookupLocal(String name)
Environmentpublic Variable<C,PM> lookup(String name)
Environmentpublic O lookupOperation(C owner, String name, List<? extends TypedElement<C>> args)
EnvironmentlookupOperation in interface Environment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>owner - the owner type of the called operation, or null
to find an implicit owner type (in iteration expressions)name - the name of the called operationargs - the arguments (expressions or variables) to be matched against
the parameter signature of the operationnull if not foundpublic P lookupProperty(C owner, String name)
EnvironmentlookupProperty in interface Environment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>owner - the owner of the property that we are looking for, or
null to find an implicit owner type (in iteration
expressions)name - the property namenull if it could not be foundpublic C lookupAssociationClassReference(C owner, String name)
EnvironmentlookupAssociationClassReference in interface Environment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>owner - the referencing class to search, or
null to find an implicit owner type (in iteration
expressions)name - the association class name (with an initial lower case as
per the OCL convention)null if the specified owner is not at the
end of an association with this particular namepublic C lookupSignal(C owner, String name, List<? extends TypedElement<C>> args)
EnvironmentlookupSignal in interface Environment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>owner - the owner type of the signal receptionname - the name of the signalargs - the arguments (expressions or variables) matching the
properties of the signal (parameters of the reception feature)null if not foundpublic S lookupState(C owner, List<String> path) throws LookupException
EnvironmentlookupState in interface Environment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>owner - the type on which the oclIsInState() operation is
invokedpath - the state name to seeknull if not foundLookupException - in the case that this path is
ambiguous; i.e., that it does not qualify a state reference with
the state machine name to select between same-named states in
different state machinespublic Variable<C,PM> lookupImplicitSourceForOperation(String name, List<? extends TypedElement<C>> args)
EnvironmentlookupImplicitSourceForOperation in interface Environment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>name - the operation nameargs - the list of arguments (expressions or variables) to match
against the operation parametersnull if no appropriate
variable can be found whose type defines a property of this namepublic Variable<C,PM> lookupImplicitSourceForProperty(String name)
Environmentpublic Variable<C,PM> lookupImplicitSourceForAssociationClass(String name)
Environmentpublic Variable<C,PM> lookupImplicitSourceForSignal(String name, List<? extends TypedElement<C>> args)
EnvironmentlookupImplicitSourceForSignal in interface Environment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>name - the signal nameargs - the list of arguments (expressions or variables) to match
against the signal reception parametersnull if no appropriate
variable can be found whose type defines a property of this namepublic Variable<C,PM> lookupImplicitSourceForState(List<String> path) throws LookupException
EnvironmentlookupImplicitSourceForState in interface Environment<PK,C,O,P,EL,PM,S,COA,SSA,CT,CLS,E>path - the state name to seeknull if not foundLookupException - in the case that this path is
ambiguous; i.e., that it does not qualify a state reference with
the state machine name to select between same-named states in
different state machinesprotected String initialLower(Object element)
element with its initial character
in lower case.element - a named elementpublic C tryLookupAssociationClassReference(C owner, String name) throws LookupException
Environment.lookupAssociationClassReference(Object, String) method.tryLookupAssociationClassReference in interface Environment.Lookup<PK,C,O,P>owner - the referencing class to search, or
null to find an implicit owner type (in iteration
expressions)name - the association class name (with an initial lower case as
per the OCL convention)null if the specified owner is not at the
end of an association with this particular nameLookupException - if lookup fails due to an error such as an ambiguitypublic C tryLookupClassifier(List<String> names) throws LookupException
Environment.lookupClassifier(List) method.tryLookupClassifier in interface Environment.Lookup<PK,C,O,P>names - the qualified namenull if not foundLookupException - if lookup fails due to an error such as an ambiguitypublic O tryLookupOperation(C owner, String name, List<? extends TypedElement<C>> args) throws LookupException
Environment.lookupOperation(Object, String, List) method.tryLookupOperation in interface Environment.Lookup<PK,C,O,P>owner - the owner type of the called operation, or null
to find an implicit owner type (in iteration expressions)name - the name of the called operationargs - the arguments (expressions or variables) to be matched against
the parameter signature of the operationnull if not foundLookupException - if lookup fails due to an error such as an ambiguitypublic C tryLookupSignal(C owner, String name, List<? extends TypedElement<C>> args) throws LookupException
Environment.lookupSignal(Object, String, List) method.tryLookupSignal in interface Environment.Lookup<PK,C,O,P>owner - the owner type of the signal receptionname - the name of the signalargs - the arguments (expressions or variables) matching the
properties of the signal (parameters of the reception feature)null if not foundLookupException - if lookup fails due to an error such as an ambiguitypublic PK tryLookupPackage(List<String> names) throws LookupException
Environment.lookupPackage(List) method.tryLookupPackage in interface Environment.Lookup<PK,C,O,P>names - the qualified namenull if not foundLookupException - if lookup fails due to an error such as an ambiguitypublic P tryLookupProperty(C owner, String name) throws LookupException
Environment.lookupProperty(Object, String) method.tryLookupProperty in interface Environment.Lookup<PK,C,O,P>owner - the owner of the property that we are looking for, or
null to find an implicit owner type (in iteration
expressions)name - the property namenull if it could not be foundLookupException - if lookup fails due to an error such as an ambiguityprotected P lookupNonNavigableEnd(C owner, String name) throws LookupException
owner classifier (which is at that end).owner - a classifier in the context of which the property is usedname - the end name to look upnull if it cannot
be foundLookupException - in case that multiple non-navigable properties
are found that have the same name and the problem option is ERROR
or worseprotected void findNonNavigableAssociationEnds(C classifier, String name, List<P> ends)
classifier - a classifier at an association endname - the non-navigable end name to look forends - collects the ends found by the subclass implementationprotected void findUnnamedAssociationEnds(C classifier, String name, List<P> ends)
classifier - a classifier at an association endname - the initial-lower classifier name to look forends - collects the ends found by the subclass implementationpublic boolean notOK(Option<ProblemHandler.Severity> option)
option - the problem optionProblemHandler.Severity#OKpublic void dispose()
AbstractTypeResolver
and I am the root environment (which owns the resolver).protected TypeChecker<C,O,P> getTypeChecker()
createTypeChecker()protected TypeChecker<C,O,P> createTypeChecker()
getTypeChecker()public <T> T getAdapter(Class<T> adapterType)
AbstractTypeResolver implements TypeChecker,
AbstractEnvironment will try to adapt TypeChecker, via its
TypeResolver.getAdapter in interface AdaptablegetAdapter in class AbstractBasicEnvironmentT - the requested adapter interfaceadapterType - the requested adapter interfacenull
if this environment does not adapt to itAbstractBasicEnvironment.getAdapter(java.lang.Class)Copyright © 2015 Open eHealth Foundation. All rights reserved.