Model History

This model description is not a real EMF artifact. It was generated by the
org.eclipse.emf.examples.generator.validator plug-in to illustrate how EMF's
code generator can be extended.
This can be disabled with -vmargs -Dorg.eclipse.emf.examples.generator.validator=false.

Package history <http://www.bmw.de/emf/evolution/history>

  Class History
    Reference releases : Release<<0..*>>
    Reference /firstRelease : Release
    Reference /lastRelease : Release

  Class Release
    Attribute number : EInt<<1..1>>
    Attribute /date : EDate
    Reference changes : Change<<0..*>>
    Reference history : History<<1..1>>
    Reference /nextRelease : Release
    Reference /previousRelease : Release
    Attribute /firstRelease : EBoolean<<1..1>>
    Attribute /lastRelease : EBoolean<<1..1>>

  Class Change
    Attribute breaking : EBoolean

  Class PrimitiveChange -> MigrateableChange

  Class NoChange -> PrimitiveChange

  Class AddRootPackage -> PrimitiveChange
    Reference package : EPackage<<1..1>>

  Class ContentChange -> PrimitiveChange

  Class NonDelete -> ContentChange
    Reference target : EObject<<1..1>>
    Reference element : EObject<<1..1>>
    Attribute index : EInt
    Reference /reference : EReference<<1..1>>
    Attribute referenceName : EString<<1..1>>

  Class CreateChild -> NonDelete

  Class Move -> NonDelete

  Class Delete -> ContentChange
    Reference element : EObject<<1..1>>

  Class ValueChange -> PrimitiveChange
    Reference element : EObject<<1..1>>
    Reference /feature : EStructuralFeature<<1..1>>
    Attribute featureName : EString<<1..1>>
    Attribute dataValue : EString
    Reference referenceValue : EObject
    Attribute /value : EJavaObject

  Class Set -> ValueChange

  Class Add -> ValueChange

  Class Remove -> ValueChange

  Class CompositeChange -> MigrateableChange
    Reference changes : PrimitiveChange<<0..*>>

  Class OperationChange -> MigrateableChange
    Reference operation : OperationInstance<<1..1>>
    Reference deletedElements : EObject<<0..*>>
    Reference createdElements : EObject<<0..*>>

  Class OperationInstance -> NamedElement
    Reference parameters : ParameterInstance<<0..*>>
    Reference variables : VariableInstance<<0..*>>
    Reference /operation : Operation
    Operation getParameter(EString<<1..1>>) : ParameterInstance
    Operation getParameterValue(EString<<1..1>>) : EJavaObject
    Operation getVariable(EString<<1..1>>) : VariableInstance
    Operation getVariableValue(EString<<1..1>>) : EJavaObject
    Operation assembleCode() : EString<<1..1>>

  Class PlaceholderInstance -> NamedElement
    Attribute value : EJavaObject
    Attribute dataValue : EString<<0..*>>
    Reference referenceValue : ModelReference<<0..*>>
    Operation getPlaceholder() : Placeholder

  Class ParameterInstance -> PlaceholderInstance
    Reference /parameter : Parameter

  Class ModelReference
    Reference element : EObject<<1..1>>

  Class VariableInstance -> PlaceholderInstance
    Reference /variable : Variable

  Class NamedElement
    Attribute name : EString<<1..1>>

  Class MigrateableChange -> Change

  Class MigrationChange -> Change
    Attribute migration : EString<<1..1>>
    Reference changes : MigrateableChange<<0..*>>
