edu.cmu.sei.aadl.model.core.impl
Class PropertyHolderImpl

java.lang.Object
  extended by org.eclipse.emf.common.notify.impl.BasicNotifierImpl
      extended by org.eclipse.emf.ecore.impl.BasicEObjectImpl
          extended by org.eclipse.emf.ecore.impl.EObjectImpl
              extended by edu.cmu.sei.aadl.model.core.impl.AObjectImpl
                  extended by edu.cmu.sei.aadl.model.core.impl.NamedElementImpl
                      extended by edu.cmu.sei.aadl.model.core.impl.PropertyHolderImpl
All Implemented Interfaces:
AObject, NamedElement, PropertyHolder, org.eclipse.core.runtime.IAdaptable, org.eclipse.emf.common.notify.Notifier, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.InternalEObject
Direct Known Subclasses:
AadlPackageSectionImpl, BusAccessEndImpl, ClassifierImpl, DataAccessEndImpl, FeatureContextImpl, FeatureImpl, FlowSpecImpl, InstanceObjectImpl, ModeImpl, ModeMemberImpl, ParameterEndImpl

public class PropertyHolderImpl
extends NamedElementImpl
implements PropertyHolder

An implementation of the model object 'Property Holder'.

The following features are implemented:

Note: This class is abstract in the metamodel.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl
org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolder, org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolderBaseImpl, org.eclipse.emf.ecore.impl.BasicEObjectImpl.EPropertiesHolderImpl
 
Nested classes/interfaces inherited from class org.eclipse.emf.common.notify.impl.BasicNotifierImpl
org.eclipse.emf.common.notify.impl.BasicNotifierImpl.EAdapterList<E extends java.lang.Object & org.eclipse.emf.common.notify.Adapter>
 
Nested classes/interfaces inherited from interface org.eclipse.emf.ecore.InternalEObject
org.eclipse.emf.ecore.InternalEObject.EStore
 
Field Summary
static java.lang.String copyright
           
protected  Properties properties
          The cached value of the 'Properties' containment reference
 
Fields inherited from class edu.cmu.sei.aadl.model.core.impl.NamedElementImpl
name, NAME_EDEFAULT
 
Fields inherited from class edu.cmu.sei.aadl.model.core.impl.AObjectImpl
comment, locationReference
 
Fields inherited from class org.eclipse.emf.ecore.impl.EObjectImpl
eAdapters, eContainer, eContainerFeatureID, EDELIVER, EDYNAMIC_CLASS, eFlags, ELAST_EOBJECT_FLAG, ELAST_NOTIFIER_FLAG, eProperties, EPROXY
 
Fields inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl
EVIRTUAL_GET, EVIRTUAL_IS_SET, EVIRTUAL_NO_VALUE, EVIRTUAL_SET, EVIRTUAL_UNSET
 
Fields inherited from interface org.eclipse.emf.ecore.InternalEObject
EOPPOSITE_FEATURE_BASE
 
Constructor Summary
protected PropertyHolderImpl()
           
 
Method Summary
 boolean acceptsProperty(PropertyDefinition property)
          Query whether this object accepts values for the given property.
 void addProperty(PropertyAssociation pa)
          Adds property association to the Properties object of the PropertyHolder Creates Properties if non-existent.
 PropertyAssociation addPropertyValue(PropertyDefinition pd, PropertyValue pv)
          Add property association for given property definition with specified value.
 org.eclipse.emf.common.notify.NotificationChain basicSetProperties(Properties newProperties, org.eclipse.emf.common.notify.NotificationChain msgs)
           
 void checkPropertyAssociation(PropertyDefinition pd, java.util.Collection vals)
          Check that the proposed association is legal.
protected  ModalPropertyValueAccumulator createAccumulator(PropertyDefinition property)
          Return a new property value accumulator to use for the representation of property values from this property holder.
protected  PropertyAssociation createPropertyAssociation(boolean isContained)
          Return a new property association model element.
 java.lang.Object eGet(int featureID, boolean resolve, boolean coreType)
           
 org.eclipse.emf.common.notify.NotificationChain eInverseRemove(org.eclipse.emf.ecore.InternalEObject otherEnd, int featureID, org.eclipse.emf.common.notify.NotificationChain msgs)
           
 boolean eIsSet(int featureID)
           
 void eSet(int featureID, java.lang.Object newValue)
           
protected  org.eclipse.emf.ecore.EClass eStaticClass()
           
 void eUnset(int featureID)
           
 PropertyAssociation findPropertyAssociation(PropertyDefinition pd)
          find a locally delcared property asssociation for the given property definition in the properties list of the PropertyHolder.
 Properties getProperties()
           
 org.eclipse.emf.common.util.EList getPropertyAssociation()
          returns list of property associations in properties clause
 ModalPropertyValue getPropertyValue(PropertyDefinition property)
          Returns the property value for the property specified by property
 void getPropertyValueInternal(PropertyDefinition property, ModalPropertyValueAccumulator pva, boolean fromInstanceSlaveCall)
          Helper routine for computing the value of the property.
 java.util.List getPropertyValueList(PropertyDefinition property)
          Retrieves a non-modal property value as a list.
 PropertyValue getSimplePropertyValue(PropertyDefinition property)
          retrieves the property value of a non-modal, single-valued property Use this method if you know the property can only have a single value and is not modal
 boolean isModalPropertyValue(PropertyDefinition property)
          Checks whether the property value is modal.
 void removeContainedPropertyAssociations(PropertyDefinition pd, java.util.List appliesToPath)
          Remove all the contained property associations for the given property definition for given contained component.
 void removeContainedPropertyAssociations(PropertyDefinition pd, java.util.List appliesToPath, java.util.List modes)
          Modify the modal contained property associations for the given contained component so that there are no associations for the given property for the given modes.
 void removePropertyAssociations(PropertyDefinition pd)
          Remove all the local property associations for the given property definition.
 void removePropertyAssociations(PropertyDefinition pd, java.util.List modes)
          Modify the modal property associations so that there are no local associations for the given property for the given modes.
 PropertyAssociation setContainedPropertyValue(PropertyDefinition pd, java.util.List appliesToPath, java.util.List pvl)
          Set the contained property association for given property definition with specified value list.
 PropertyAssociation setContainedPropertyValue(PropertyDefinition pd, java.util.List appliesToPath, java.util.List pvl, java.util.List modes)
          Set the contained property association for given property definition to the specified value list in the given modes.
 PropertyAssociation setContainedPropertyValue(PropertyDefinition pd, java.util.List appliesToPath, PropertyValue pv)
          Set the contained property association for given property definition with specified value.
 PropertyAssociation setContainedPropertyValue(PropertyDefinition pd, java.util.List appliesToPath, PropertyValue pv, java.util.List modes)
          Set contained property association for given property definition with specified value in the given modes.
 void setProperties(Properties newProperties)
          phf: we want an add version for EList
 PropertyAssociation setPropertyValue(PropertyDefinition pd, java.util.List pvl)
          Set property association for given property definition with specified value list.
 PropertyAssociation setPropertyValue(PropertyDefinition pd, java.util.List pvl, java.util.List modes)
          Set property association for given property definition to the specified value list in the given modes.
 PropertyAssociation setPropertyValue(PropertyDefinition pd, PropertyValue pv)
          Set property association for given property definition with specified value.
 PropertyAssociation setPropertyValue(PropertyDefinition pd, PropertyValue pv, java.util.List modes)
          Set property association for given property definition with specified value in the given modes.
 
Methods inherited from class edu.cmu.sei.aadl.model.core.impl.NamedElementImpl
checkName, getName, setName, toString
 
Methods inherited from class edu.cmu.sei.aadl.model.core.impl.AObjectImpl
addComment, eObjectForURIFragmentSegment, eURIFragmentSegment, getAadlSpec, getAdapter, getAObjectRoot, getChildren, getComment, getContainingClassifier, getContainingClassifierNameSpace, getContainingComponentImpl, getContainingComponentType, getContainingPropertyAssociationDefinitionConstant, getContainingSubcomponent, getLocationReference, getReferencedObject, getSecondReferencedObject, getSystemInstance, setLocationReference, setLocationReference
 
Methods inherited from class org.eclipse.emf.ecore.impl.EObjectImpl
eAdapters, eBasicAdapters, eBasicProperties, eBasicSetContainer, eClass, eContainerFeatureID, eDeliver, eInternalContainer, eIsProxy, eProperties, eSetClass, eSetDeliver, eSetProxyURI
 
Methods inherited from class org.eclipse.emf.ecore.impl.BasicEObjectImpl
eAddVirtualValue, eAllContents, eBaseStructuralFeatureID, eBasicRemoveFromContainer, eBasicRemoveFromContainerFeature, eBasicSetContainer, eComputeVirtualValuesCapacity, eContainer, eContainingFeature, eContainmentFeature, eContainmentFeature, eContains, eContents, eCrossReferences, eDerivedStructuralFeatureID, eDerivedStructuralFeatureID, eDirectResource, eDynamicBasicRemoveFromContainer, eDynamicClass, eDynamicFeature, eDynamicFeatureID, eDynamicGet, eDynamicGet, eDynamicGet, eDynamicInverseAdd, eDynamicInverseAdd, eDynamicInverseRemove, eDynamicInverseRemove, eDynamicIsSet, eDynamicIsSet, eDynamicIsSet, eDynamicSet, eDynamicSet, eDynamicSet, eDynamicUnset, eDynamicUnset, eDynamicUnset, eGet, eGet, eGet, eHasSettings, eInternalResource, eInverseAdd, eInverseAdd, eInverseRemove, eIsSet, eOpenGet, eOpenIsSet, eOpenSet, eOpenUnset, eProxyURI, eRemoveVirtualValue, eResolveProxy, eResource, eSet, eSetDirectResource, eSetResource, eSetStore, eSetting, eSettingDelegate, eSettings, eSetVirtualIndexBits, eSetVirtualValue, eSetVirtualValues, eStaticFeatureCount, eStore, eUnset, eVirtualBitCount, eVirtualGet, eVirtualGet, eVirtualIndex, eVirtualIndexBits, eVirtualIsSet, eVirtualSet, eVirtualUnset, eVirtualValue, eVirtualValues
 
Methods inherited from class org.eclipse.emf.common.notify.impl.BasicNotifierImpl
eNotificationRequired, eNotify
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface edu.cmu.sei.aadl.model.core.NamedElement
getName, setName
 
Methods inherited from interface edu.cmu.sei.aadl.model.core.AObject
addComment, getAadlSpec, getAObjectRoot, getChildren, getComment, getContainingClassifier, getContainingClassifierNameSpace, getContainingComponentImpl, getContainingComponentType, getContainingPropertyAssociationDefinitionConstant, getContainingSubcomponent, getLocationReference, getReferencedObject, getSecondReferencedObject, getSystemInstance, setLocationReference, setLocationReference
 
Methods inherited from interface org.eclipse.emf.ecore.EObject
eAllContents, eClass, eContainer, eContainingFeature, eContainmentFeature, eContents, eCrossReferences, eGet, eGet, eIsProxy, eIsSet, eResource, eSet, eUnset
 
Methods inherited from interface org.eclipse.emf.common.notify.Notifier
eAdapters, eDeliver, eNotify, eSetDeliver
 
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
 
Methods inherited from interface org.eclipse.emf.ecore.InternalEObject
eNotificationRequired
 

Field Detail

copyright

public static final java.lang.String copyright

See Also:
Constant Field Values

properties

protected Properties properties
The cached value of the 'Properties' containment reference.

See Also:
getProperties()
Constructor Detail

PropertyHolderImpl

protected PropertyHolderImpl()

Method Detail

eStaticClass

protected org.eclipse.emf.ecore.EClass eStaticClass()

Overrides:
eStaticClass in class NamedElementImpl

getProperties

public Properties getProperties()

Specified by:
getProperties in interface PropertyHolder
Returns:
the value of the 'Properties' containment reference.
See Also:
PropertyHolder.setProperties(Properties), CorePackage.getPropertyHolder_Properties()

basicSetProperties

public org.eclipse.emf.common.notify.NotificationChain basicSetProperties(Properties newProperties,
                                                                          org.eclipse.emf.common.notify.NotificationChain msgs)


setProperties

public void setProperties(Properties newProperties)
phf: we want an add version for EList

Specified by:
setProperties in interface PropertyHolder
Parameters:
newProperties - the new value of the 'Properties' containment reference.
See Also:
PropertyHolder.getProperties()

eInverseRemove

public org.eclipse.emf.common.notify.NotificationChain eInverseRemove(org.eclipse.emf.ecore.InternalEObject otherEnd,
                                                                      int featureID,
                                                                      org.eclipse.emf.common.notify.NotificationChain msgs)

Overrides:
eInverseRemove in class org.eclipse.emf.ecore.impl.BasicEObjectImpl

eGet

public java.lang.Object eGet(int featureID,
                             boolean resolve,
                             boolean coreType)

Specified by:
eGet in interface org.eclipse.emf.ecore.InternalEObject
Overrides:
eGet in class NamedElementImpl

eSet

public void eSet(int featureID,
                 java.lang.Object newValue)

Specified by:
eSet in interface org.eclipse.emf.ecore.InternalEObject
Overrides:
eSet in class NamedElementImpl

eUnset

public void eUnset(int featureID)

Specified by:
eUnset in interface org.eclipse.emf.ecore.InternalEObject
Overrides:
eUnset in class NamedElementImpl

eIsSet

public boolean eIsSet(int featureID)

Specified by:
eIsSet in interface org.eclipse.emf.ecore.InternalEObject
Overrides:
eIsSet in class NamedElementImpl

getPropertyAssociation

public org.eclipse.emf.common.util.EList getPropertyAssociation()
returns list of property associations in properties clause

Specified by:
getPropertyAssociation in interface PropertyHolder
Returns:
Elist of property association or empty list if no such subclause

addProperty

public void addProperty(PropertyAssociation pa)
Adds property association to the Properties object of the PropertyHolder Creates Properties if non-existent. It is assumed that the property applies to the PropertyHolder object It is assumed that the property association does not already exist

Specified by:
addProperty in interface PropertyHolder
Parameters:
pa - PropertyAssociation to be added

removePropertyAssociations

public final void removePropertyAssociations(PropertyDefinition pd)
Description copied from interface: PropertyHolder
Remove all the local property associations for the given property definition. Only the property associations directly contained in the PropertyHolder are affected, that is, any contained property assocations declared in this component, but applicable to another component are not searched.

Specified by:
removePropertyAssociations in interface PropertyHolder
Parameters:
pd - The property definition

removePropertyAssociations

public final void removePropertyAssociations(PropertyDefinition pd,
                                             java.util.List modes)
Description copied from interface: PropertyHolder
Modify the modal property associations so that there are no local associations for the given property for the given modes. Does not affect the property's non-modal association. This method may both remove associations (if all the association's modes are in the given list) and modify associations (if some of the association's modes are in the given list). Only the property associations directly contained in the PropertyHolder are affected, that is, any contained property assocations declared in this component, but applicable to another component are not searched.

Specified by:
removePropertyAssociations in interface PropertyHolder
Parameters:
pd - The property definition
modes - list of modes

removeContainedPropertyAssociations

public final void removeContainedPropertyAssociations(PropertyDefinition pd,
                                                      java.util.List appliesToPath)
Description copied from interface: PropertyHolder
Remove all the contained property associations for the given property definition for given contained component.

Specified by:
removeContainedPropertyAssociations in interface PropertyHolder
Parameters:
pd - The property definition
appliesToPath - list of declarative components that define the path to the component to which the property applies. This list must have a length > 1, which is checked. It is not checked that this path is a valid path to a component/feature/mode/etc. rooted at pd.

removeContainedPropertyAssociations

public final void removeContainedPropertyAssociations(PropertyDefinition pd,
                                                      java.util.List appliesToPath,
                                                      java.util.List modes)
Description copied from interface: PropertyHolder
Modify the modal contained property associations for the given contained component so that there are no associations for the given property for the given modes. Does not affect the property's contained non-modal association. This method may both remove associations (if all the association's modes are in the given list) and modify associations (if some of the association's modes are in the given list).

Specified by:
removeContainedPropertyAssociations in interface PropertyHolder
Parameters:
pd - The property definition
appliesToPath - list of declarative components that define the path to the component to which the property applies. This list must have a length > 1, which is checked. It is not checked that this path is a valid path to a component/feature/mode/etc. rooted at pd.
modes - list of modes

findPropertyAssociation

public final PropertyAssociation findPropertyAssociation(PropertyDefinition pd)
find a locally delcared property asssociation for the given property definition in the properties list of the PropertyHolder. Only the property associations directly contained in the PropertyHolder are searched.

Specified by:
findPropertyAssociation in interface PropertyHolder
Parameters:
pd - PropertyDefinition
Returns:
PropertyAssociation or null

addPropertyValue

public final PropertyAssociation addPropertyValue(PropertyDefinition pd,
                                                  PropertyValue pv)
Add property association for given property definition with specified value. If the property is LIST OF the value is added to any existing list, otherwise the existing value is replaced. The property association is assumed to apply to all modes. If it should apply to specific modes, this can be set on the returned property association object. The method assumes that the property defintion is legal for the PropertyHolder class. The method assumes that the property value is legal for the property definition.

Specified by:
addPropertyValue in interface PropertyHolder
Parameters:
pd - property definition object
pv - property value object
Returns:
PropertyAssociation to which the value has been added (and that has been created as necessary)

setPropertyValue

public final PropertyAssociation setPropertyValue(PropertyDefinition pd,
                                                  PropertyValue pv)
Description copied from interface: PropertyHolder
Set property association for given property definition with specified value. The existing value(s) is(are) replaced. The property association is assumed to apply to all modes; all previous property assocations for this property are removed from the property holder. The PropertyAssociation.isDerived()status of the association is set to false.

When invoked on an instance model object (i.e., a subtype of InstanceObject), the property association is made to apply only to current system operation mode as determined from the containing system instance's SystemInstance.getCurrentSystemOperationMode() method.

Specified by:
setPropertyValue in interface PropertyHolder
Parameters:
pd - property definition object
pv - property value object
Returns:
PropertyAssociation that has been set

setPropertyValue

public final PropertyAssociation setPropertyValue(PropertyDefinition pd,
                                                  PropertyValue pv,
                                                  java.util.List modes)
Description copied from interface: PropertyHolder
Set property association for given property definition with specified value in the given modes. The existing value(s) for the modes is (are) replaced. The PropertyAssociation.isDerived()status of the association is set to false.

Unlike PropertyHolder.setPropertyValue(PropertyDefinition, PropertyValue), this method is not affected by the current system operation mode.

Specified by:
setPropertyValue in interface PropertyHolder
Parameters:
pd - property definition object
pv - property value object
modes - List of modes.
Returns:
PropertyAssociation that has been set

setPropertyValue

public final PropertyAssociation setPropertyValue(PropertyDefinition pd,
                                                  java.util.List pvl)
Description copied from interface: PropertyHolder
Set property association for given property definition with specified value list. The property association is assumed to apply to all modes; all previous property assocations for this property are removed from the property holder. The PropertyAssociation.isDerived()status of the association is set to false.

When the property is not list-valued, i.e., pd.isList() is false, the provided list of values must be of length 1, i.e., pvl.size() == 1.

When invoked on an instance model object (i.e., a subtype of InstanceObject), the property association is made to apply only to current system operation mode as determined from the containing system instance's SystemInstance.getCurrentSystemOperationMode() method.

Specified by:
setPropertyValue in interface PropertyHolder
Parameters:
pd - property definition object
pvl - List of property value objects.
Returns:
PropertyAssociation that has been set

setPropertyValue

public final PropertyAssociation setPropertyValue(PropertyDefinition pd,
                                                  java.util.List pvl,
                                                  java.util.List modes)
Description copied from interface: PropertyHolder
Set property association for given property definition to the specified value list in the given modes. The existing value list is replaced for the given modes. The PropertyAssociation.isDerived()status of the association is set to false.

When the property is not list-valued, i.e., pd.isList() is false, the provided list of values must be of length 1, i.e., pvl.size() == 1.

Unlike PropertyHolder.setPropertyValue(PropertyDefinition, List), this method is not affected by the current system operation mode.

Specified by:
setPropertyValue in interface PropertyHolder
Parameters:
pd - property definition object
pvl - List of property value objects
modes - list of modes.
Returns:
PropertyAssociation that has been set

createPropertyAssociation

protected PropertyAssociation createPropertyAssociation(boolean isContained)
Return a new property association model element. This method exists so that it can be overridden by ComponentAccess to set the "access" feature to true.

Parameters:
isContained - Whether the property association object is for a contained property association.
Returns:
A new property association object. This default implementation always leaves the "access" feature false.

setContainedPropertyValue

public final PropertyAssociation setContainedPropertyValue(PropertyDefinition pd,
                                                           java.util.List appliesToPath,
                                                           PropertyValue pv)
Description copied from interface: PropertyHolder
Set the contained property association for given property definition with specified value. The existing value(s) is(are) replaced. The property association is assumed to apply to all modes; all previous property assocations for this property are removed from the property holder. The PropertyAssociation.isDerived() status of the association is set to false.

Specified by:
setContainedPropertyValue in interface PropertyHolder
Parameters:
pd - property definition object
appliesToPath - list of declarative components that define the path to the component to which the property applies. This list must have a length > 1, which is checked. It is not checked that this path is a valid path to a component/feature/mode/etc. rooted at pd.
pv - property value object
Returns:
PropertyAssociation that has been set

setContainedPropertyValue

public final PropertyAssociation setContainedPropertyValue(PropertyDefinition pd,
                                                           java.util.List appliesToPath,
                                                           PropertyValue pv,
                                                           java.util.List modes)
Description copied from interface: PropertyHolder
Set contained property association for given property definition with specified value in the given modes. The existing value(s) for the modes is (are) replaced. The PropertyAssociation.isDerived() status of the association is set to false.

Specified by:
setContainedPropertyValue in interface PropertyHolder
Parameters:
pd - property definition object
appliesToPath - list of declarative components that define the path to the component to which the property applies. This list must have a length > 1, which is checked. It is not checked that this path is a valid path to a component/feature/mode/etc. rooted at pd.
pv - property value object
modes - List of modes.
Returns:
PropertyAssociation that has been set

setContainedPropertyValue

public final PropertyAssociation setContainedPropertyValue(PropertyDefinition pd,
                                                           java.util.List appliesToPath,
                                                           java.util.List pvl)
Description copied from interface: PropertyHolder
Set the contained property association for given property definition with specified value list. The property association is assumed to apply to all modes; all previous property assocations for this property are removed from the property holder. The PropertyAssociation.isDerived() status of the association is set to false.

Specified by:
setContainedPropertyValue in interface PropertyHolder
Parameters:
pd - property definition object
appliesToPath - list of declarative components that define the path to the component to which the property applies. This list must have a length > 1, which is checked. It is not checked that this path is a valid path to a component/feature/mode/etc. rooted at pd.
pvl - List of property value objects
Returns:
PropertyAssociation that has been set

setContainedPropertyValue

public final PropertyAssociation setContainedPropertyValue(PropertyDefinition pd,
                                                           java.util.List appliesToPath,
                                                           java.util.List pvl,
                                                           java.util.List modes)
Description copied from interface: PropertyHolder
Set the contained property association for given property definition to the specified value list in the given modes. The existing value list is replaced for the given modes. The PropertyAssociation.isDerived()status of the association is set to false.

Specified by:
setContainedPropertyValue in interface PropertyHolder
Parameters:
pd - property definition object
appliesToPath - list of declarative components that define the path to the component to which the property applies. This list must have a length > 1, which is checked. It is not checked that this path is a valid path to a component/feature/mode/etc. rooted at pd.
pvl - List of property value objects
modes - list of modes.
Returns:
PropertyAssociation that has been set

checkPropertyAssociation

public void checkPropertyAssociation(PropertyDefinition pd,
                                     java.util.Collection vals)
Check that the proposed association is legal.

Specified by:
checkPropertyAssociation in interface PropertyHolder

getPropertyValue

public final ModalPropertyValue getPropertyValue(PropertyDefinition property)
                                          throws java.lang.IllegalStateException,
                                                 InvalidModelException,
                                                 PropertyDoesNotApplyToHolderException,
                                                 java.lang.IllegalArgumentException
Returns the property value for the property specified by property

Specified by:
getPropertyValue in interface PropertyHolder
Parameters:
property - The property to lookup
Returns:
ModalPropertyValue
Throws:
java.lang.IllegalStateException - Thrown if the lookup encounters a cycle of property reference dependencies.
InvalidModelException - Thrown if the property value cannot be retreived because the model is incomplete or otherwise invalid.
PropertyDoesNotApplyToHolderException - Thrown if the given property does not apply to the property holder, i.e., PropertyHolder.acceptsProperty(PropertyDefinition) returns false.
java.lang.IllegalArgumentException - Thrown if property is null.

createAccumulator

protected ModalPropertyValueAccumulator createAccumulator(PropertyDefinition property)
Return a new property value accumulator to use for the representation of property values from this property holder.

Parameters:
property - The property for which the accumulator will hold a value.
Returns:
A property value accumulator

getSimplePropertyValue

public final PropertyValue getSimplePropertyValue(PropertyDefinition property)
                                           throws InvalidModelException,
                                                  PropertyNotPresentException,
                                                  PropertyIsModalException,
                                                  java.lang.IllegalStateException,
                                                  java.lang.IllegalArgumentException,
                                                  PropertyDoesNotApplyToHolderException,
                                                  PropertyIsListException
retrieves the property value of a non-modal, single-valued property Use this method if you know the property can only have a single value and is not modal

Specified by:
getSimplePropertyValue in interface PropertyHolder
Parameters:
property - PropertyDefinition
Returns:
PropertyValue, does not return null.
Throws:
InvalidModelException - Thrown if the property value cannot be retreived because the model is incomplete or otherwise invalid.
PropertyNotPresentException - Thrown if the property is undefined for this PropertyHolder.
PropertyIsModalException - Thrown if this PropertyHolder is modal and declarative.
java.lang.IllegalStateException - Thrown if the lookup encounters a cycle of property reference dependencies.
java.lang.IllegalArgumentException - Thrown if property is null.
PropertyDoesNotApplyToHolderException - Thrown if the PropertyDefinition property does not apply to this PropertyHolder.
PropertyIsListException - Thrown if the property is not scalar.
See Also:
SystemInstance.setSystemOperationMode(edu.cmu.sei.aadl.model.instance.SystemOperationMode)

getPropertyValueList

public final java.util.List getPropertyValueList(PropertyDefinition property)
                                          throws InvalidModelException,
                                                 java.lang.IllegalArgumentException,
                                                 PropertyNotPresentException,
                                                 PropertyIsModalException,
                                                 java.lang.IllegalStateException,
                                                 PropertyDoesNotApplyToHolderException
Retrieves a non-modal property value as a list. Use this method if you know that the property is defined as a LIST OF. While this method can be used on scalar properties, getSimplePropertyValue should be used if you know that it is scalar. If the property is scalar, a list of length 1 is returned.

Specified by:
getPropertyValueList in interface PropertyHolder
Parameters:
property - PropertyDefinition
Returns:
A list of PropertyValues. This does not return null.
Throws:
InvalidModelException - Thrown if the property value cannot be retreived because the model is incomplete or otherwise invalid.
java.lang.IllegalArgumentException - Thrown if property is null.
PropertyNotPresentException - Thrown if the PropertyDefinition property is undefined for this PropertyHolder.
PropertyIsModalException - Thrown if this PropertyHolder is modal and declarative.
java.lang.IllegalStateException - Thrown if the lookup encounters a cycle of property reference dependencies.
PropertyDoesNotApplyToHolderException - Thrown if the PropertyDefinition property does not apply to this PropertyHolder.
See Also:
SystemInstance.setSystemOperationMode(edu.cmu.sei.aadl.model.instance.SystemOperationMode)

isModalPropertyValue

public final boolean isModalPropertyValue(PropertyDefinition property)
                                   throws InvalidModelException
Checks whether the property value is modal.

Specified by:
isModalPropertyValue in interface PropertyHolder
Parameters:
property - PropertyDefinition
Returns:
true if the value is modal, otherwise false. Also returns false if the property does not apply to this property holder.
Throws:
InvalidModelException - Thrown if the property value cannot be retreived because the model is incomplete or otherwise invalid.

acceptsProperty

public boolean acceptsProperty(PropertyDefinition property)
Description copied from interface: PropertyHolder
Query whether this object accepts values for the given property. That is, does the given property apply to this element?

Specified by:
acceptsProperty in interface PropertyHolder
Parameters:
property - The property definition to test.
Returns:
true if the given property applies to this element.

getPropertyValueInternal

public void getPropertyValueInternal(PropertyDefinition property,
                                     ModalPropertyValueAccumulator pva,
                                     boolean fromInstanceSlaveCall)
                              throws InvalidModelException
Description copied from interface: PropertyHolder
Helper routine for computing the value of the property. As the name suggests, this method is not intended for use by clients of the model, but is used during the property lookup process. It should really be a protected method in PropertyHolderImpl, but because of the way that EMF deals with multiple inheritance, not all implementations of PropertyHolder actually extend from PropertyHolderImpl.

In particular, this method does not create a new property value accumulator—it uses the one provided—and it does not look up the default value of the property.

Specified by:
getPropertyValueInternal in interface PropertyHolder
Parameters:
property - The property whose value is to be retreived. It must be the case that this property is accepted by the property holder, i.e., PropertyHolder.acceptsProperty(PropertyDefinition) must return true.
pva - The working property value accumulator to add results to.
fromInstanceSlaveCall - true if the call is performing a lookup on the declarative model on behalf of an instance model object. When true the lookup algorithm ignores the "inherits" attribute on property definitions when it would mean that the lookup should defer to the containing component implemenation. Also disables the interpretation of contained property associations in the declarative model because they have already been applied to the instance model at this point. The expectation is that the instance model lookup itself is not ignoring the inherits attribute, and thus any inherited property values will still be found correctly. Interpreting the inherits attribute during the declarative model search is redundant and causes problems later on. This flag does not affect lookup for feature declarations because in that case the inherit flag defers to the component type or port group type.
Throws:
InvalidModelException - Thrown if the property value cannot be retreived because the model is incomplete or otherwise invalid.