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

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.FeatureImpl
All Implemented Interfaces:
AObject, Feature, 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:
AbstractPortImpl, ComponentAccessImpl, ServerSubprogramImpl, SubprogramImpl

public class FeatureImpl
extends PropertyHolderImpl
implements Feature

An implementation of the model object 'Feature'.

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
protected  ClassifierReference classifierReference
          holds classifier reference
static java.lang.String copyright
           
protected  boolean refined
          The cached value of the 'Refined' attribute
protected static boolean REFINED_EDEFAULT
          The default value of the 'Refined' attribute
protected  RefinedReference refinedReference
          holds feature refined reference
 
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 FeatureImpl()
           
 
Method Summary
protected  org.eclipse.emf.ecore.EClass eStaticClass()
           
 org.eclipse.emf.common.util.EList getAllFeatureRefinements()
          Return the feature and any of the features it refines
 ClassifierReference getClassifierReference()
          get reference names from ClassifierReference
 org.eclipse.emf.common.util.EList getConnection(ComponentImpl connectionScope)
          get all connections of component impl whose source or destination is the feature.
 ModeContext getFeaturesModeContext()
          Get the component whose modes apply to the properties of a feature.
 org.eclipse.emf.common.util.EList getIncomingConnection(ComponentImpl connectionScope)
          get all connections of component impl whose destination is the feature.
 org.eclipse.emf.common.util.EList getOutgoingConnection(ComponentImpl connectionScope)
          get all connections of component impl whose source is the feature.
 void getPropertyValueInternal(PropertyDefinition pn, ModalPropertyValueAccumulator pva, boolean fromInstanceSlaveCall)
          Helper routine for computing the value of the property.
 RefinedReference getRefinedReference()
          get reference names from flowReference
 Feature getRefinesFeature()
          gets feature being refined
 Classifier getXAllClassifier()
          Get the data classifier of given feature or its refinement ancestor, if it has one, otherwise null.
 Classifier getXClassifier()
          Get the component classifier of given feature, if it has one, otherwise null.
 Feature getXRefines()
          Get the feature refined by a given feature.
 boolean isRefined()
          flag indicating whether the subcomponent is refined
protected  void lookupPropertyInClassifier(PropertyDefinition pn, ModalPropertyValueAccumulator pva, boolean fromInstanceSlaveCall)
           
 void setClassifierReference(ClassifierReference cr)
          set sets reference names from ClassifierReference
 void setRefined(boolean newRefined)
          set flag indicating whether the subcomponent is refined
 void setRefinedReference(RefinedReference fr)
          set sets reference names from refined reference
 
Methods inherited from class edu.cmu.sei.aadl.model.core.impl.PropertyHolderImpl
acceptsProperty, addProperty, addPropertyValue, basicSetProperties, checkPropertyAssociation, createAccumulator, createPropertyAssociation, eGet, eInverseRemove, eIsSet, eSet, eUnset, 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, 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.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

refinedReference

protected RefinedReference refinedReference
holds feature refined reference


classifierReference

protected ClassifierReference classifierReference
holds classifier reference


REFINED_EDEFAULT

protected static final boolean REFINED_EDEFAULT
The default value of the 'Refined' attribute.

See Also:
isRefined(), Constant Field Values

refined

protected boolean refined
The cached value of the 'Refined' attribute.

See Also:
isRefined()
Constructor Detail

FeatureImpl

protected FeatureImpl()

Method Detail

eStaticClass

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

Overrides:
eStaticClass in class PropertyHolderImpl

isRefined

public boolean isRefined()
flag indicating whether the subcomponent is refined

Specified by:
isRefined in interface Feature

setRefined

public void setRefined(boolean newRefined)
set flag indicating whether the subcomponent is refined

Specified by:
setRefined in interface Feature
Parameters:
newRefined - boolean

setClassifierReference

public void setClassifierReference(ClassifierReference cr)
set sets reference names from ClassifierReference

Specified by:
setClassifierReference in interface Feature

getClassifierReference

public ClassifierReference getClassifierReference()
get reference names from ClassifierReference

Specified by:
getClassifierReference in interface Feature

setRefinedReference

public void setRefinedReference(RefinedReference fr)
set sets reference names from refined reference

Specified by:
setRefinedReference in interface Feature

getRefinedReference

public RefinedReference getRefinedReference()
get reference names from flowReference

Specified by:
getRefinedReference in interface Feature

getRefinesFeature

public Feature getRefinesFeature()
gets feature being refined

Specified by:
getRefinesFeature in interface Feature
Returns:
feature being refined or null

getFeaturesModeContext

public ModeContext getFeaturesModeContext()
Get the component whose modes apply to the properties of a feature. If the feature is part of a component implementation's "refines type" clause then that component implementation is returned. Otherwise, the feature is part of a component type declaration and cannot reference modes, so null is returned.

Specified by:
getFeaturesModeContext in interface Feature

getAllFeatureRefinements

public org.eclipse.emf.common.util.EList getAllFeatureRefinements()
Return the feature and any of the features it refines

Specified by:
getAllFeatureRefinements in interface Feature
Returns:
EList of feature

getXRefines

public Feature getXRefines()
Get the feature refined by a given feature.

Specified by:
getXRefines in interface Feature
Returns:
The refined feature, or null if the feature doesn't refine another feature.

getConnection

public org.eclipse.emf.common.util.EList getConnection(ComponentImpl connectionScope)
get all connections of component impl whose source or destination is the feature. If the port is part of the component impl, it is connections from/to subcomponents

Specified by:
getConnection in interface Feature
Parameters:
connectionScope - the component impl whose connections are considered
Returns:
EList of Connection

getIncomingConnection

public org.eclipse.emf.common.util.EList getIncomingConnection(ComponentImpl connectionScope)
get all connections of component impl whose destination is the feature. If the port is part of the component impl, it is an outgoing connection

Specified by:
getIncomingConnection in interface Feature
Parameters:
connectionScope - the component impl whose connections are considered
Returns:
EList of Connection

getOutgoingConnection

public org.eclipse.emf.common.util.EList getOutgoingConnection(ComponentImpl connectionScope)
get all connections of component impl whose source is the feature. If the port is part of the component impl, it is an incoming connection

Specified by:
getOutgoingConnection in interface Feature
Parameters:
connectionScope - the component impl whose connections are considered
Returns:
EList of Connection

getPropertyValueInternal

public final void getPropertyValueInternal(PropertyDefinition pn,
                                           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:
pn - 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.

lookupPropertyInClassifier

protected void lookupPropertyInClassifier(PropertyDefinition pn,
                                          ModalPropertyValueAccumulator pva,
                                          boolean fromInstanceSlaveCall)

getXClassifier

public Classifier getXClassifier()
Description copied from interface: Feature
Get the component classifier of given feature, if it has one, otherwise null. If the feature is a Parameter, DataPort, EventDataPort, or DataAccess then this retreives the value of the "dataClassifier" attribute. If the feature is a BusAccess then this retreives the value of the "busClassifier" attribute. If the feature is a Subprogram or ServerSubprogram then this retreives the value of the "subprogramClassifier" attribute. If the feature is a PortGroup then this retrevies the value of the "portGroupType" attribute.

Specified by:
getXClassifier in interface Feature
Returns:
The classifier, or null if no data classifier.

getXAllClassifier

public Classifier getXAllClassifier()
Get the data classifier of given feature or its refinement ancestor, if it has one, otherwise null.

Specified by:
getXAllClassifier in interface Feature
Returns:
The data classifier, or null if no data classifier.