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

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
                          extended by edu.cmu.sei.aadl.model.core.impl.ClassifierImpl
                              extended by edu.cmu.sei.aadl.model.core.impl.ComponentClassifierImpl
                                  extended by edu.cmu.sei.aadl.model.core.impl.ComponentTypeImpl
All Implemented Interfaces:
AObject, Classifier, ComponentClassifier, ComponentType, 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:
BusTypeImpl, DataTypeImpl, DeviceTypeImpl, MemoryTypeImpl, ProcessorTypeImpl, ProcessTypeImpl, SubprogramTypeImpl, SystemTypeImpl, ThreadGroupTypeImpl, ThreadTypeImpl

public abstract class ComponentTypeImpl
extends ComponentClassifierImpl
implements ComponentType

An implementation of the model object 'Component Type'.

The following features are implemented:


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  FlowSpecs flowSpecs
          The cached value of the 'Flow Specs' containment reference
 
Fields inherited from class edu.cmu.sei.aadl.model.core.impl.ComponentClassifierImpl
extendedClassifierReference
 
Fields inherited from class edu.cmu.sei.aadl.model.core.impl.ClassifierImpl
annexSubclause
 
Fields inherited from class edu.cmu.sei.aadl.model.core.impl.PropertyHolderImpl
properties
 
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 ComponentTypeImpl()
           
 
Method Summary
 void addFeature(Feature f)
          add a feature to a component type It only adds features that are acceptable to the component
 org.eclipse.emf.common.notify.NotificationChain basicSetFlowSpecs(FlowSpecs newFlowSpecs, org.eclipse.emf.common.notify.NotificationChain msgs)
           
 Features createXFeatures()
          create a Features object of the appropriate category
 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)
           
 Feature findFeature(java.lang.String name)
          Find feature by name in type and supertypes.
 FlowSpec findFlowSpec(java.lang.String name)
          Find flow specificaton by name in type and its supertypes.
 org.eclipse.emf.common.util.EList getAllFlowSpec()
          get list of all flow spec objects of a component type, including ancestor features In case of refined flow specs the refined flow spec is returned in the list.
 org.eclipse.emf.common.util.EList getFlowSpec()
          get a list of locally declared flow spec objects of a component type
 FlowSpecs getFlowSpecs()
           
 FlowSpecs getFlowSpecs(boolean create)
          retrieve FlowSpecs object.
 org.eclipse.emf.common.util.EList getImplementations()
          returns the component implementations of a given type
 void getPropertyValueInternal(PropertyDefinition property, ModalPropertyValueAccumulator pva, boolean fromInstanceSlaveCall)
          Helper routine for computing the value of the property.
 java.lang.String getQualifiedName()
          get qualified component type name.
 org.eclipse.emf.common.util.EList getXAllFeature()
          get list of all features of a component type, including ancestor features In case of refined features the refined feature is returned.
 org.eclipse.emf.common.util.EList getXFeature()
          get the Features list of a component type
 Features getXFeatures()
          get the Interface specification of a componenet type
 Features getXFeatures(boolean create)
          get the features of a component type create the object if it does not exist yet.
 boolean isDescendentOf(ComponentClassifier cc)
          Does this component type descend from the given classifier?
 void setFlowSpecs(FlowSpecs newFlowSpecs)
          phf: we want an add version for EList
 
Methods inherited from class edu.cmu.sei.aadl.model.core.impl.ComponentClassifierImpl
checkAppliesToClassifier, getCategory, getName
 
Methods inherited from class edu.cmu.sei.aadl.model.core.impl.ClassifierImpl
addAnnexSubclause, getAllPropertyAssociation, getAnnexSubclause, getExtendedClassifierReference, getExtendedQualifiedName, getPackageName, getQualifiedTypeName, getXAllExtend, getXAllExtendPlusSelf, getXExtend, hasExtends, setExtendedClassifierReference
 
Methods inherited from class edu.cmu.sei.aadl.model.core.impl.PropertyHolderImpl
acceptsProperty, addProperty, addPropertyValue, basicSetProperties, checkPropertyAssociation, createAccumulator, createPropertyAssociation, findPropertyAssociation, getProperties, getPropertyAssociation, getPropertyValue, getPropertyValueList, getSimplePropertyValue, isModalPropertyValue, removeContainedPropertyAssociations, removeContainedPropertyAssociations, removePropertyAssociations, removePropertyAssociations, setContainedPropertyValue, setContainedPropertyValue, setContainedPropertyValue, setContainedPropertyValue, setProperties, setPropertyValue, setPropertyValue, setPropertyValue, setPropertyValue
 
Methods inherited from class edu.cmu.sei.aadl.model.core.impl.NamedElementImpl
checkName, 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.ComponentClassifier
checkAppliesToClassifier, getCategory
 
Methods inherited from interface edu.cmu.sei.aadl.model.core.Classifier
addAnnexSubclause, getAllPropertyAssociation, getAnnexSubclause, getExtendedClassifierReference, getExtendedQualifiedName, getPackageName, getXAllExtend, getXAllExtendPlusSelf, getXExtend, hasExtends, setExtendedClassifierReference
 
Methods inherited from interface edu.cmu.sei.aadl.model.core.PropertyHolder
acceptsProperty, addProperty, addPropertyValue, checkPropertyAssociation, findPropertyAssociation, getProperties, getPropertyAssociation, getPropertyValue, getPropertyValueList, getSimplePropertyValue, isModalPropertyValue, removeContainedPropertyAssociations, removeContainedPropertyAssociations, removePropertyAssociations, removePropertyAssociations, setContainedPropertyValue, setContainedPropertyValue, setContainedPropertyValue, setContainedPropertyValue, setProperties, setPropertyValue, setPropertyValue, setPropertyValue, setPropertyValue
 
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

flowSpecs

protected FlowSpecs flowSpecs
The cached value of the 'Flow Specs' containment reference.

See Also:
getFlowSpecs()
Constructor Detail

ComponentTypeImpl

protected ComponentTypeImpl()

Method Detail

eStaticClass

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

Overrides:
eStaticClass in class ComponentClassifierImpl

getFlowSpecs

public FlowSpecs getFlowSpecs()

Specified by:
getFlowSpecs in interface ComponentType
Returns:
the value of the 'Flow Specs' containment reference.
See Also:
ComponentType.setFlowSpecs(FlowSpecs), CorePackage.getComponentType_FlowSpecs()

getFlowSpecs

public FlowSpecs getFlowSpecs(boolean create)
retrieve FlowSpecs object. Create it if it does not exist and create is true

Specified by:
getFlowSpecs in interface ComponentType
Parameters:
create - if true create the object if it does not exist
Returns:
FlowSpecs

basicSetFlowSpecs

public org.eclipse.emf.common.notify.NotificationChain basicSetFlowSpecs(FlowSpecs newFlowSpecs,
                                                                         org.eclipse.emf.common.notify.NotificationChain msgs)


setFlowSpecs

public void setFlowSpecs(FlowSpecs newFlowSpecs)
phf: we want an add version for EList

Specified by:
setFlowSpecs in interface ComponentType
Parameters:
newFlowSpecs - the new value of the 'Flow Specs' containment reference.
See Also:
ComponentType.getFlowSpecs()

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 ClassifierImpl

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 ClassifierImpl

eSet

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

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

eUnset

public void eUnset(int featureID)

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

eIsSet

public boolean eIsSet(int featureID)

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

getImplementations

public org.eclipse.emf.common.util.EList getImplementations()
returns the component implementations of a given type

Specified by:
getImplementations in interface ComponentType
Returns:
list of component implementations

getQualifiedName

public java.lang.String getQualifiedName()
get qualified component type name. Always a String

Specified by:
getQualifiedName in interface Classifier
Specified by:
getQualifiedName in interface ComponentType
Overrides:
getQualifiedName in class ClassifierImpl

getXFeatures

public Features getXFeatures()
get the Interface specification of a componenet type

Specified by:
getXFeatures in interface ComponentType
Returns:
Object of subclass of component interface

getXFeatures

public Features getXFeatures(boolean create)
get the features of a component type create the object if it does not exist yet.

Specified by:
getXFeatures in interface ComponentType
Parameters:
create - boolean create object if it does not exist
Returns:
Object of subclass of component interface

createXFeatures

public Features createXFeatures()
create a Features object of the appropriate category

Specified by:
createXFeatures in interface ComponentType
Returns:
ComponentFeatures

getXFeature

public org.eclipse.emf.common.util.EList getXFeature()
get the Features list of a component type

Specified by:
getXFeature in interface ComponentType
Returns:
List of feature objects

getXAllFeature

public org.eclipse.emf.common.util.EList getXAllFeature()
get list of all features of a component type, including ancestor features In case of refined features the refined feature is returned.

Specified by:
getXAllFeature in interface Classifier
Specified by:
getXAllFeature in interface ComponentType
Overrides:
getXAllFeature in class ComponentClassifierImpl
Returns:
List of feature objects

getFlowSpec

public org.eclipse.emf.common.util.EList getFlowSpec()
get a list of locally declared flow spec objects of a component type

Specified by:
getFlowSpec in interface ComponentType
Returns:
List of Flowspec objects

getAllFlowSpec

public org.eclipse.emf.common.util.EList getAllFlowSpec()
get list of all flow spec objects of a component type, including ancestor features In case of refined flow specs the refined flow spec is returned in the list.

Specified by:
getAllFlowSpec in interface ComponentType
Returns:
List of flow specs

findFeature

public Feature findFeature(java.lang.String name)
Description copied from interface: ComponentType
Find feature by name in type and supertypes.

Specified by:
findFeature in interface ComponentType
Parameters:
name - the name of the feature
Returns:
the feature object if found, null otherwise

findFlowSpec

public FlowSpec findFlowSpec(java.lang.String name)
Description copied from interface: ComponentType
Find flow specificaton by name in type and its supertypes.

Specified by:
findFlowSpec in interface ComponentType
Parameters:
name - the name of the flow specificaton.
Returns:
the flow spec object if found, null otherwise

getPropertyValueInternal

public final 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
Overrides:
getPropertyValueInternal in class PropertyHolderImpl
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.

isDescendentOf

public final boolean isDescendentOf(ComponentClassifier cc)
Does this component type descend from the given classifier? A component type descends from another component type if they are the same type, it extends the other type, or it extends a descendent of the other type. A component type never descends from a component implementation.

Specified by:
isDescendentOf in interface ComponentClassifier
Overrides:
isDescendentOf in class ComponentClassifierImpl
Returns:
Whether this classifier descends from the given classifier.

addFeature

public void addFeature(Feature f)
add a feature to a component type It only adds features that are acceptable to the component

Specified by:
addFeature in interface ComponentType
Parameters:
f - Feature