Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/.classpath8
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/.project34
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/.settings/org.eclipse.jdt.core.prefs9
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/META-INF/MANIFEST.MF29
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/build.properties23
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/models/Cyber.architecture10
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/models/newChildMenu.creationmenumodel12
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.ecore18
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.elementtypesconfigurations27
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.di2
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.genmodel50
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.notation175
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.uml57
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/plugin.properties16
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/plugin.xml62
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/Communication.java72
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/Soft.java99
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftFactory.java80
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftLayer.java70
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftPackage.java361
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/CommunicationImpl.java178
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftFactoryImpl.java137
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftImpl.java246
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftLayerImpl.java176
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftPackageImpl.java287
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/util/SoftAdapterFactory.java176
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/util/SoftSwitch.java172
-rw-r--r--examples/custo/org.eclipse.papyrus.example.custo.cyber/src/org/eclipse/papyrus/example/custo/cyber/SOFTModelCreation.java25
-rw-r--r--examples/pom.xml2
-rw-r--r--features/papyrus-main-features/org.eclipse.papyrus.doc.feature/feature.xml7
-rw-r--r--features/papyrus-main-features/org.eclipse.papyrus.infra.nattable.feature/pom.xml10
-rw-r--r--features/papyrus-main-features/org.eclipse.papyrus.infra.services.feature/pom.xml10
-rw-r--r--features/papyrus-main-features/org.eclipse.papyrus.infra.ui.feature/feature.xml8
-rw-r--r--features/papyrus-main-features/org.eclipse.papyrus.infra.ui.feature/pom.xml12
-rw-r--r--features/papyrus-main-features/org.eclipse.papyrus.sdk.feature/pom.xml9
-rw-r--r--features/papyrus-main-features/pom.xml2
-rw-r--r--features/papyrus-tests-features/org.eclipse.papyrus.tests.toolsmiths.feature/feature.xml7
-rw-r--r--features/papyrus-tests-features/org.eclipse.papyrus.tests.uml.feature/feature.xml7
-rw-r--r--features/papyrus-toolsmiths-features/org.eclipse.papyrus.toolsmiths.validation.feature/feature.xml7
-rw-r--r--features/papyrus-toolsmiths-features/pom.xml2
-rw-r--r--features/papyrus.user.examples-features/org.eclipse.papyrus.user.examples.feature/pom.xml27
-rw-r--r--features/papyrus.user.examples-features/pom.xml2
-rw-r--r--plugins/doc/org.eclipse.papyrus.developer.doc/plugin.properties4
-rw-r--r--plugins/doc/org.eclipse.papyrus.developer.doc/plugin.xml8
-rw-r--r--plugins/doc/org.eclipse.papyrus.infra.doc/.classpath7
-rw-r--r--plugins/doc/org.eclipse.papyrus.infra.doc/META-INF/MANIFEST.MF5
-rw-r--r--plugins/doc/org.eclipse.papyrus.infra.doc/build.properties5
-rw-r--r--plugins/doc/org.eclipse.papyrus.infra.doc/plugin.xml7
-rw-r--r--plugins/doc/org.eclipse.papyrus.infra.doc/resource/stylesheet.css21
-rw-r--r--plugins/doc/org.eclipse.papyrus.infra.doc/src/org/eclipse/papyrus/infra/doc/internal/filters/HTMLHeadAndBodyInjectionStream.java178
-rw-r--r--plugins/doc/org.eclipse.papyrus.infra.doc/src/org/eclipse/papyrus/infra/doc/internal/filters/PapyrusContentFilter.java62
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.classpath10
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.project53
-rwxr-xr-xplugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.jdt.core.prefs314
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.jdt.ui.prefs127
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/META-INF/MANIFEST.MF10
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/about.html28
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/build.properties9
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.classpath7
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.project34
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.runtime.prefs2
-rwxr-xr-xplugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.core.prefs319
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.ui.prefs127
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.pde.api.tools.prefs104
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/META-INF/MANIFEST.MF33
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/build.properties7
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.pngbin0 -> 461 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels@2x.pngbin0 -> 912 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey.pngbin0 -> 423 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey@2x.pngbin0 -> 800 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.architecture96
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.creationmenumodel6
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations266
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.paletteconfiguration12
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels_di.elementtypesconfigurations7
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/plugin.xml17
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/Activator.java65
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEditAdvice.java218
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEndAdvice.java66
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/CreateDefaultMetaclassAdvice.java47
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/DataTypeDeletionAdvice.java142
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/MetamodelRequiredAttributesAdvice.java66
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/NewMetaclassAdvice.java84
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/RequiredVisibilityAdvice.java120
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/commands/CreateUMLMetamodelCommand.java115
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePrivateMatcher.java55
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePublicMatcher.java79
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/types/MetamodelElementTypes.java43
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/icons/full/ctool16/new_example.gifbin0 -> 561 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/icons/full/wizban/new_example.pngbin0 -> 2395 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/plugin.properties17
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/plugin.xml45
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/pom.xml84
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-example.pngbin0 -> 127889 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-model-wizard.pngbin0 -> 107117 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-model.pngbin0 -> 313439 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/reference-constraint.pngbin0 -> 78022 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/relationship-constraint.pngbin0 -> 92144 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/reorient-constraint.pngbin0 -> 89109 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/required-stereotype.pngbin0 -> 51706 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/set-values.pngbin0 -> 73631 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/stereotype-matcher.pngbin0 -> 134059 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/stereotype-types.pngbin0 -> 27162 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/types-example.pngbin0 -> 105487 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/value-specifications.pngbin0 -> 297586 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/recipeToolsmiths-devDoc-main-toc.xml6
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/recipeToolsmithsElementTypesDoc.mediawiki695
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.validation.doc/src/site/mediawiki/images/devDoc/Papyrus_ProblemsViewNewChild.pngbin0 -> 207761 bytes
-rw-r--r--plugins/doc/org.eclipse.papyrus.toolsmiths.validation.doc/src/site/mediawiki/validationToolsmithsDevDoc.mediawiki37
-rw-r--r--plugins/doc/pom.xml1
-rw-r--r--plugins/editor/org.eclipse.papyrus.eclipse.project.editors/src/org/eclipse/papyrus/eclipse/project/editors/project/PluginProjectEditor.java12
-rw-r--r--plugins/infra/architecture/org.eclipse.papyrus.infra.architecture.representation.edit/META-INF/MANIFEST.MF5
-rw-r--r--plugins/infra/architecture/org.eclipse.papyrus.infra.architecture.representation.edit/src-gen/org/eclipse/papyrus/infra/architecture/representation/provider/RootAutoSelectItemProvider.java1
-rw-r--r--plugins/infra/architecture/org.eclipse.papyrus.infra.architecture.representation/META-INF/MANIFEST.MF1
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/META-INF/MANIFEST.MF4
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/Model/Constraints.ecore12
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/Model/Constraints.genmodel103
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/Model/Constraints.uml128
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/plugin.xml15
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/CompositeConstraint.java2
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/ConfigProperty.java2
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/ConstraintDescriptor.java4
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/ConstraintsPackage.java135
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/DisplayUnit.java2
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/ReferenceProperty.java2
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/SimpleConstraint.java2
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/ValueProperty.java2
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/environment/ConstraintEnvironment.java2
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/environment/ConstraintType.java2
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/environment/EnvironmentPackage.java21
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/environment/impl/ConstraintEnvironmentImpl.java9
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/environment/impl/ConstraintTypeImpl.java12
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/environment/impl/EnvironmentFactoryImpl.java5
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/environment/impl/EnvironmentPackageImpl.java33
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/environment/util/EnvironmentAdapterFactory.java29
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/environment/util/EnvironmentSwitch.java3
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/impl/CompositeConstraintImpl.java5
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/impl/ConfigPropertyImpl.java10
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/impl/ConstraintDescriptorImpl.java44
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/impl/ConstraintsFactoryImpl.java7
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/impl/ConstraintsPackageImpl.java74
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/impl/DisplayUnitImpl.java13
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/impl/ReferencePropertyImpl.java4
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/impl/SimpleConstraintImpl.java7
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/impl/ValuePropertyImpl.java6
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/util/ConstraintsAdapterFactory.java69
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src-gen/org/eclipse/papyrus/infra/constraints/util/ConstraintsSwitch.java19
-rw-r--r--plugins/infra/constraints/org.eclipse.papyrus.infra.constraints/src/org/eclipse/papyrus/infra/constraints/runtime/DefaultConstraintEngine.java10
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core.architecture/src/org/eclipse/papyrus/infra/core/architecture/util/ArchitectureCommandUtils.java25
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/META-INF/MANIFEST.MF2
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/pom.xml2
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/resource/ResourceAdapter.java43
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.core/src/org/eclipse/papyrus/infra/core/utils/TransactionHelper.java53
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.tools/META-INF/MANIFEST.MF2
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.tools/pom.xml2
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.tools/src/org/eclipse/papyrus/infra/tools/file/ICleanUntouched.java5
-rw-r--r--plugins/infra/core/org.eclipse.papyrus.infra.tools/src/org/eclipse/papyrus/infra/tools/file/ProjectBasedFileAccess.java12
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/WelcomeConstants.java25
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/WelcomeLayout.java11
-rw-r--r--plugins/infra/editor/org.eclipse.papyrus.infra.editor.welcome/src/org/eclipse/papyrus/infra/editor/welcome/internal/WelcomePage.java12
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/META-INF/MANIFEST.MF14
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/AnyReference.gifbin0 -> 567 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/AnyReference@2x.gifbin0 -> 1235 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/CompositeConstraint.gifbin0 -> 1033 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/CompositeConstraint@2x.gifbin0 -> 1485 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/ConstraintAdviceConfiguration.gifbin0 -> 594 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/ConstraintAdviceConfiguration@2x.gifbin0 -> 1261 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/ElementTypeFilter.gifbin0 -> 546 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/ElementTypeFilter@2x.gifbin0 -> 1151 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/EndPermission.gifbin0 -> 567 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/EndPermission@2x.gifbin0 -> 1229 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/Reference.gifbin0 -> 567 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/Reference@2x.gifbin0 -> 1235 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/ReferenceConstraint.gifbin0 -> 606 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/ReferenceConstraint@2x.gifbin0 -> 1294 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/ReferencePermission.gifbin0 -> 567 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/ReferencePermission@2x.gifbin0 -> 1235 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/RelationshipConstraint.gifbin0 -> 600 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/icons/full/obj16/RelationshipConstraint@2x.gifbin0 -> 1311 bytes
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/model/ConstraintAdvice.di2
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/model/ConstraintAdvice.genmodel114
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/model/ConstraintAdvice.notation1071
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/model/ConstraintAdvice.uml277
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/model/constraints.ecore156
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/plugin.properties50
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/plugin.xml52
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/AdviceConstraint.java125
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/AnyReference.java66
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/CompositeConstraint.java97
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/ConstraintAdviceConfiguration.java56
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/ConstraintAdviceFactory.java127
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/ConstraintAdvicePackage.java1791
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/ElementTypeFilter.java100
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/ElementTypeRelationshipKind.java296
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/EndKind.java267
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/EndPermission.java139
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/Reference.java64
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/ReferenceConstraint.java52
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/ReferenceKind.java267
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/ReferencePermission.java75
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/RelationshipConstraint.java52
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/AdviceConstraintImpl.java360
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/AnyReferenceImpl.java223
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/CompositeConstraintImpl.java297
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/ConstraintAdviceConfigurationImpl.java188
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/ConstraintAdviceFactoryImpl.java351
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/ConstraintAdvicePackageImpl.java933
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/ElementTypeFilterImpl.java357
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/EndPermissionImpl.java382
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/ReferenceConstraintImpl.java200
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/ReferenceImpl.java215
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/ReferencePermissionImpl.java222
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/impl/RelationshipConstraintImpl.java203
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/operations/AdviceConstraintOperations.java113
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/operations/AnyReferenceOperations.java69
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/operations/CompositeConstraintOperations.java97
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/operations/ElementTypeFilterOperations.java159
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/operations/EndPermissionOperations.java56
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/operations/ReferenceConstraintOperations.java157
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/operations/ReferenceOperations.java60
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/operations/ReferencePermissionOperations.java54
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/operations/RelationshipConstraintOperations.java138
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/AdviceConstraintItemProvider.java163
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/AnyReferenceItemProvider.java167
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/CompositeConstraintItemProvider.java208
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/ConstraintAdviceConfigurationItemProvider.java179
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/ConstraintAdviceEditPlugin.java116
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/ConstraintAdviceItemProviderAdapterFactory.java710
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/ElementTypeFilterItemProvider.java251
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/EndPermissionItemProvider.java301
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/ReferenceConstraintItemProvider.java173
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/ReferenceItemProvider.java210
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/ReferencePermissionItemProvider.java154
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/provider/RelationshipConstraintItemProvider.java171
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/util/ConstraintAdviceAdapterFactory.java448
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/util/ConstraintAdviceSwitch.java511
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src-gen/org/eclipse/papyrus/infra/emf/types/constraints/util/ConstraintAdviceValidator.java395
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src/org/eclipse/papyrus/infra/emf/types/advices/constraints/ConstraintAdviceEditHelperAdvice.java47
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src/org/eclipse/papyrus/infra/emf/types/advices/constraints/ConstraintAdviceEditHelperAdviceFactory.java34
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf.types/src/org/eclipse/papyrus/infra/emf/types/advices/constraints/PermissionResult.java46
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf/META-INF/MANIFEST.MF2
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf/pom.xml2
-rw-r--r--plugins/infra/emf/org.eclipse.papyrus.infra.emf/src/org/eclipse/papyrus/infra/emf/utils/EMFHelper.java142
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.menu/src/org/eclipse/papyrus/infra/gmfdiag/menu/handlers/CopyInDiagramHandler.java10
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.menu/src/org/eclipse/papyrus/infra/gmfdiag/menu/handlers/CutInDiagramHandler.java7
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.representation.edit/META-INF/MANIFEST.MF8
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.representation.edit/src-gen/org/eclipse/papyrus/infra/gmfdiag/representation/provider/PathElementItemProvider.java1
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.representation/META-INF/MANIFEST.MF2
-rwxr-xr-xplugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.representation/model/GmfDiagRepresentation.ecore1
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.representation/src-gen/org/eclipse/papyrus/infra/gmfdiag/representation/PapyrusDiagram.java4
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.representation/src-gen/org/eclipse/papyrus/infra/gmfdiag/representation/impl/RepresentationPackageImpl.java5
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/META-INF/MANIFEST.MF4
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/pom.xml2
-rw-r--r--plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome/src/org/eclipse/papyrus/infra/gmfdiag/welcome/internal/modelelements/NotationObservableProperty.java23
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.representation.edit/icons/full/ctool16/CreateArchitectureDescriptionLanguage_representationKinds_PapyrusSyncTable.gifbin304 -> 906 bytes
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.representation.edit/icons/full/ctool16/CreateArchitectureDescriptionLanguage_representationKinds_PapyrusTable.gifbin235 -> 881 bytes
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.representation.edit/icons/full/obj16/PapyrusTable.gifbin235 -> 881 bytes
-rwxr-xr-xplugins/infra/nattable/org.eclipse.papyrus.infra.nattable.representation/model/NattableRepresentation.ecore3
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.representation/src-gen/org/eclipse/papyrus/infra/nattable/representation/PapyrusTable.java5
-rw-r--r--plugins/infra/nattable/org.eclipse.papyrus.infra.nattable.representation/src-gen/org/eclipse/papyrus/infra/nattable/representation/impl/RepresentationPackageImpl.java23
-rwxr-xr-xplugins/infra/nattable/org.eclipse.papyrus.infra.nattable/src/org/eclipse/papyrus/infra/nattable/manager/axis/CompositeAxisManagerForEventList.java10
-rw-r--r--plugins/infra/newchild/org.eclipse.papyrus.infra.newchild/src/org/eclipse/papyrus/infra/newchild/CreationMenuFactory.java15
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/META-INF/MANIFEST.MF6
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/icons/full/ctool16/CreateTab_allSections_Section.gifbin0 -> 223 bytes
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/plugin.properties10
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/AbstractSectionItemProvider.java161
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/ContextItemProvider.java177
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/ContextsItemProviderAdapterFactory.java72
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/DataContextElementItemProvider.java91
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/DataContextPackageItemProvider.java40
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/DataContextRootItemProvider.java70
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/PropertyItemProvider.java204
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/SectionItemProvider.java110
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/TabItemProvider.java246
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/UnknownPropertyItemProvider.java14
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/contexts/provider/ViewItemProvider.java123
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/CompositeWidgetTypeItemProvider.java14
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/EnvironmentItemProvider.java82
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/EnvironmentItemProviderAdapterFactory.java66
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/LayoutTypeItemProvider.java14
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/MiscClassItemProvider.java98
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/ModelElementFactoryDescriptorItemProvider.java73
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/NamespaceItemProvider.java100
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/PropertiesEditPlugin.java17
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/PropertyEditorTypeItemProvider.java72
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/StandardWidgetTypeItemProvider.java14
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/environment/provider/WidgetTypeItemProvider.java97
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/CompositeWidgetItemProvider.java80
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/ElementItemProvider.java8
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/LayoutItemProvider.java32
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/PropertyEditorItemProvider.java185
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/ReferenceAttributeItemProvider.java60
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/StandardWidgetItemProvider.java32
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/UIComponentItemProvider.java26
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/UiItemProviderAdapterFactory.java66
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/UnknownComponentItemProvider.java45
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/ValueAttributeItemProvider.java45
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/WidgetAttributeItemProvider.java44
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.edit/src-gen/org/eclipse/papyrus/infra/properties/ui/provider/WidgetItemProvider.java6
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/META-INF/MANIFEST.MF7
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/plugin.properties1
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/src-gen/org/eclipse/papyrus/infra/properties/contexts/presentation/ContextsActionBarContributor.java51
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/src-gen/org/eclipse/papyrus/infra/properties/contexts/presentation/ContextsEditor.java117
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/src-gen/org/eclipse/papyrus/infra/properties/contexts/presentation/ContextsModelWizard.java45
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/src-gen/org/eclipse/papyrus/infra/properties/environment/presentation/EnvironmentActionBarContributor.java51
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/src-gen/org/eclipse/papyrus/infra/properties/environment/presentation/EnvironmentEditor.java117
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/src-gen/org/eclipse/papyrus/infra/properties/environment/presentation/EnvironmentModelWizard.java45
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/src-gen/org/eclipse/papyrus/infra/properties/ui/presentation/UiActionBarContributor.java51
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/src-gen/org/eclipse/papyrus/infra/properties/ui/presentation/UiEditor.java117
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.editor/src-gen/org/eclipse/papyrus/infra/properties/ui/presentation/UiModelWizard.java45
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/.project5
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/.settings/org.eclipse.pde.ds.annotations.prefs8
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/META-INF/MANIFEST.MF7
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/OSGI-INF/org.eclipse.papyrus.infra.properties.ui.renderers.impl.SectionRendererServiceImpl.xml8
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/OSGI-INF/org.eclipse.papyrus.infra.properties.ui.renderers.impl.XWTSectionProvider.xml7
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/build.properties3
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/renderers/SectionRendererProvider.java43
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/renderers/SectionRendererService.java24
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/renderers/impl/SectionRendererServiceImpl.java61
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/renderers/impl/XWTSectionProvider.java43
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/runtime/DefaultDisplayEngine.java24
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties.ui/src/org/eclipse/papyrus/infra/properties/ui/xwt/XWTTabDescriptor.java20
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/META-INF/MANIFEST.MF9
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/Model/Properties.genmodel182
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/Model/properties.di2
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/Model/properties.ecore (renamed from plugins/infra/properties/org.eclipse.papyrus.infra.properties/Model/Properties.ecore)136
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/Model/properties.genmodel231
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/Model/properties.notation407
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/Model/properties.uml567
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/plugin.xml6
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/pom.xml2
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/AbstractSection.java86
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/Context.java40
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/ContextsFactory.java12
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/ContextsPackage.java636
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/DataContextElement.java20
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/DataContextPackage.java3
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/DataContextRoot.java14
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/Property.java50
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/Section.java113
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/Tab.java84
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/UnknownProperty.java4
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/View.java27
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/AbstractSectionImpl.java275
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/ContextImpl.java252
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/ContextsFactoryImpl.java53
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/ContextsPackageImpl.java364
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/DataContextElementImpl.java194
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/DataContextPackageImpl.java44
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/DataContextRootImpl.java71
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/PropertyImpl.java309
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/SectionImpl.java232
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/TabImpl.java330
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/UnknownPropertyImpl.java2
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/impl/ViewImpl.java199
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/util/ContextsAdapterFactory.java153
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/util/ContextsResourceFactoryImpl.java6
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/util/ContextsResourceImpl.java4
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/contexts/util/ContextsSwitch.java221
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/CompositeWidgetType.java4
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/Environment.java21
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/EnvironmentFactory.java11
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/EnvironmentPackage.java356
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/LayoutType.java4
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/MiscClass.java25
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/ModelElementFactoryDescriptor.java14
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/Namespace.java21
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/PropertyEditorType.java14
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/StandardWidgetType.java4
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/Type.java61
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/WidgetType.java21
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/CompositeWidgetTypeImpl.java2
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/EnvironmentFactoryImpl.java72
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/EnvironmentImpl.java231
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/EnvironmentPackageImpl.java195
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/LayoutTypeImpl.java2
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/MiscClassImpl.java103
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/ModelElementFactoryDescriptorImpl.java68
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/NamespaceImpl.java94
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/PropertyEditorTypeImpl.java64
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/StandardWidgetTypeImpl.java2
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/impl/WidgetTypeImpl.java101
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/util/EnvironmentAdapterFactory.java124
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/util/EnvironmentResourceFactoryImpl.java6
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/util/EnvironmentResourceImpl.java4
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/environment/util/EnvironmentSwitch.java187
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/CompositeWidget.java17
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/Element.java4
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/Layout.java7
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/PropertyEditor.java49
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/ReferenceAttribute.java7
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/StandardWidget.java7
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/UIComponent.java3
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/UiFactory.java11
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/UiPackage.java350
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/UnknownComponent.java7
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/ValueAttribute.java7
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/Widget.java4
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/WidgetAttribute.java7
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/CompositeWidgetImpl.java133
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/ElementImpl.java6
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/LayoutImpl.java39
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/PropertyEditorImpl.java228
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/ReferenceAttributeImpl.java52
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/StandardWidgetImpl.java39
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/UIComponentImpl.java39
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/UiFactoryImpl.java49
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/UiPackageImpl.java181
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/UnknownComponentImpl.java38
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/ValueAttributeImpl.java38
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/WidgetAttributeImpl.java38
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/impl/WidgetImpl.java2
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/util/UiAdapterFactory.java134
-rw-r--r--plugins/infra/properties/org.eclipse.papyrus.infra.properties/src-gen/org/eclipse/papyrus/infra/properties/ui/util/UiSwitch.java268
-rw-r--r--plugins/infra/types/org.eclipse.papyrus.infra.types.core/src/org/eclipse/papyrus/infra/types/core/AbstractConfiguredEditHelperAdvice.java56
-rw-r--r--plugins/infra/types/org.eclipse.papyrus.infra.types.core/src/org/eclipse/papyrus/infra/types/core/IConfiguredEditHelperAdvice.java36
-rw-r--r--plugins/infra/types/org.eclipse.papyrus.infra.types.core/src/org/eclipse/papyrus/infra/types/core/impl/ConfiguredEditHelperAdviceDescriptor.java17
-rw-r--r--plugins/infra/types/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml186
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/.classpath1
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/.settings/.api_filters11
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/META-INF/MANIFEST.MF3
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/api/org/eclipse/papyrus/infra/ui/api/services/IStatusService.java (renamed from plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/internal/services/status/IStatusService.java)4
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/api/org/eclipse/papyrus/infra/ui/api/services/StatusServiceEvent.java (renamed from plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/internal/services/status/StatusServiceEvent.java)4
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/build.properties3
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/pom.xml2
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/Activator.java2
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/editor/CoreMultiDiagramEditor.java2
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/internal/services/status/BeginStatusEvent.java2
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/internal/services/status/EndStatusEvent.java2
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/internal/services/status/StatusService.java4
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.ui/src/org/eclipse/papyrus/infra/ui/internal/services/status/StepStatusEvent.java2
-rw-r--r--plugins/infra/ui/org.eclipse.papyrus.infra.widgets/src/org/eclipse/papyrus/infra/widgets/databinding/ReferenceDialogObservableValue.java4
-rw-r--r--plugins/infra/viewpoints/org.eclipse.papyrus.infra.viewpoints.policy/src/org/eclipse/papyrus/infra/viewpoints/policy/PolicyChecker.java70
-rw-r--r--plugins/pom.xml2
-rwxr-xr-xplugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/.project5
-rwxr-xr-xplugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/META-INF/MANIFEST.MF11
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/OSGI-INF/org.eclipse.papyrus.toolsmiths.plugin.internal.builder.GenericEMFModelBuilderProvider.xml7
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/OSGI-INF/org.eclipse.papyrus.toolsmiths.plugin.internal.builder.ManifestBuilderProvider.xml7
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/OSGI-INF/org.eclipse.papyrus.toolsmiths.plugin.internal.builder.XWTModelBuilderProvider.xml7
-rw-r--r--[-rwxr-xr-x]plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/build.properties3
-rwxr-xr-xplugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/pom.xml2
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/builder/Activator.java93
-rw-r--r--[-rwxr-xr-x]plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/builder/ElementTypesConfigurationBuilder.java28
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/builder/GenericEMFModelBuilder.java185
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/builder/IPapyrusBuilderProvider.java85
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/builder/PapyrusBuilderKind.java29
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/builder/PapyrusPluginBuilder.java111
-rw-r--r--[-rwxr-xr-x]plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/builder/XWTModelBuilder.java36
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/builder/helper/BundleVersionHelper.java4
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/internal/builder/GenericEMFModelBuilderProvider.java49
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/internal/builder/ManifestBuilderProvider.java48
-rw-r--r--plugins/toolsmiths/builder/org.eclipse.papyrus.toolsmiths.plugin.builder/src/org/eclipse/papyrus/toolsmiths/plugin/internal/builder/XWTModelBuilderProvider.java54
-rwxr-xr-xplugins/toolsmiths/org.eclipse.papyrus.toolsmiths.nattable/icons/PapyrusTable.gifbin235 -> 881 bytes
-rwxr-xr-xplugins/toolsmiths/org.eclipse.papyrus.toolsmiths.nattable/src/org/eclipse/papyrus/toolsmiths/nattable/wizard/pages/DefineTableConfigurationDataWizardPage.java10
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.architecture/.project5
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.architecture/META-INF/MANIFEST.MF11
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.architecture/OSGI-INF/org.eclipse.papyrus.toolsmiths.validation.architecture.internal.checkers.ArchitectureBuilderProvider.xml7
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.architecture/build.properties6
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.architecture/src/org/eclipse/papyrus/toolsmiths/validation/architecture/internal/checkers/ArchitectureBuilderProvider.java82
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.common/META-INF/MANIFEST.MF12
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.common/src/org/eclipse/papyrus/toolsmiths/validation/common/checkers/BasicEMFResourceProvider.java3
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.common/src/org/eclipse/papyrus/toolsmiths/validation/common/internal/utils/AbstractIndex.java303
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.common/src/org/eclipse/papyrus/toolsmiths/validation/common/internal/utils/ArchitectureIndex.java93
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.common/src/org/eclipse/papyrus/toolsmiths/validation/common/internal/utils/ElementTypeConfigurationsIndex.java457
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.elementtypes/.project5
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.elementtypes/META-INF/MANIFEST.MF12
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.elementtypes/OSGI-INF/org.eclipse.papyrus.toolsmiths.validation.elementtypes.internal.checkers.ElementTypesBuilderProvider.xml7
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.elementtypes/build.properties6
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.elementtypes/src/org/eclipse/papyrus/toolsmiths/validation/elementtypes/internal/checkers/ElementTypesBuilderProvider.java81
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.elementtypes/src/org/eclipse/papyrus/toolsmiths/validation/elementtypes/internal/checkers/LocalProfileIndex.java19
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/.classpath7
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/.project52
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/.settings/org.eclipse.jdt.core.prefs319
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/.settings/org.eclipse.jdt.ui.prefs127
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/.settings/org.eclipse.m2e.core.prefs4
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/.settings/org.eclipse.pde.api.tools.prefs104
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/META-INF/MANIFEST.MF35
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/OSGI-INF/org.eclipse.papyrus.toolsmiths.validation.newchild.internal.checkers.NewChildMenuBuilderProvider.xml7
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/about.html28
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/build.properties23
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/plugin.properties23
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/plugin.xml44
-rw-r--r--[-rwxr-xr-x]plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/pom.xml (renamed from releng/tests/main-tests-with-cdo/targetPlatform/portable/pom.xml)11
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/src/org/eclipse/papyrus/toolsmiths/validation/newchild/Activator.java71
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/src/org/eclipse/papyrus/toolsmiths/validation/newchild/internal/NewChildMenuPluginValidationConstants.java45
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/src/org/eclipse/papyrus/toolsmiths/validation/newchild/internal/checkers/NewChildCustomValidator.java58
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/src/org/eclipse/papyrus/toolsmiths/validation/newchild/internal/checkers/NewChildMenuBuilderProvider.java79
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/src/org/eclipse/papyrus/toolsmiths/validation/newchild/internal/checkers/NewChildMenuPluginChecker.java145
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/src/org/eclipse/papyrus/toolsmiths/validation/newchild/internal/checkers/NewChildMenuPluginXMLValidator.java84
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/src/org/eclipse/papyrus/toolsmiths/validation/newchild/internal/messages/Messages.java36
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/src/org/eclipse/papyrus/toolsmiths/validation/newchild/internal/messages/messages.properties19
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.newchild/src/org/eclipse/papyrus/toolsmiths/validation/newchild/internal/quickfix/NewChildMenuMarkerResolutionGenerator.java67
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.profile/.project83
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.profile/META-INF/MANIFEST.MF12
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.profile/OSGI-INF/org.eclipse.papyrus.toolsmiths.validation.profile.internal.checkers.ProfileBuilderProvider.xml7
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.profile/build.properties6
-rw-r--r--plugins/toolsmiths/validation/org.eclipse.papyrus.toolsmiths.validation.profile/src/org/eclipse/papyrus/toolsmiths/validation/profile/internal/checkers/ProfileBuilderProvider.java89
-rw-r--r--plugins/toolsmiths/validation/pom.xml1
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.clazz/custom-src/org/eclipse/papyrus/uml/diagram/clazz/custom/helper/MultiDependencyHelper.java17
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/custom-src/org/eclipse/papyrus/uml/diagram/composite/custom/utils/CompositeStructureDiagramUtils.java18
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/pages/PapyrusProjectCreationPage.java12
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.wizards/src/org/eclipse/papyrus/uml/diagram/wizards/wizards/NewPapyrusProjectWizard.java19
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.service.types/src/org/eclipse/papyrus/uml/service/types/utils/RequestParameterUtils.java63
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/META-INF/MANIFEST.MF21
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateCompositeConstraint_constraint_RequiredStereotypeConstraintConfiguration.gifbin0 -> 1038 bytes
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateCompositeConstraint_constraint_RequiredStereotypeConstraintConfiguration@2x.gifbin0 -> 1559 bytes
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateConstraintAdviceConfiguration_constraint_RequiredStereotypeConstraintConfiguration.gifbin0 -> 1038 bytes
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateConstraintAdviceConfiguration_constraint_RequiredStereotypeConstraintConfiguration@2x.gifbin0 -> 1559 bytes
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/obj16/RequiredStereotypeConstraintConfiguration.gifbin0 -> 614 bytes
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/obj16/RequiredStereotypeConstraintConfiguration@2x.gifbin0 -> 1365 bytes
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.ecore13
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.genmodel11
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.notation785
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.uml19
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/plugin.properties5
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/plugin.xml4
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/RequiredStereotypeConstraintConfiguration.java35
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcherFactory.java13
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcherPackage.java63
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/RequiredStereotypeConstraintConfigurationImpl.java78
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeApplicationMatcherFactoryImpl.java16
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeApplicationMatcherPackageImpl.java53
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/operations/RequiredStereotypeConstraintConfigurationOperations.java89
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/provider/RequiredStereotypeConstraintConfigurationItemProvider.java120
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/provider/StereotypeApplicationMatcherConfigurationEditPlugin.java7
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/provider/StereotypeApplicationMatcherItemProviderAdapterFactory.java134
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherAdapterFactory.java41
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherSwitch.java42
-rw-r--r--plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeMatcherEditHelperAdvice.java4
-rw-r--r--plugins/uml/properties/org.eclipse.papyrus.uml.properties/Model/UML/UML.ctx2
-rw-r--r--plugins/uml/tools/org.eclipse.papyrus.uml.tools.utils/src/org/eclipse/papyrus/uml/tools/utils/StaticProfileUtil.java26
-rw-r--r--plugins/views/modelexplorer/org.eclipse.papyrus.views.modelexplorer/src/org/eclipse/papyrus/views/modelexplorer/ModelExplorerView.java13
-rwxr-xr-xplugins/views/properties/org.eclipse.papyrus.views.properties.toolsmiths/META-INF/MANIFEST.MF2
-rw-r--r--plugins/views/properties/org.eclipse.papyrus.views.properties.toolsmiths/src/org/eclipse/papyrus/views/properties/toolsmiths/modelelement/CustomizationModelElement.java5
-rw-r--r--plugins/views/properties/org.eclipse.papyrus.views.properties.toolsmiths/src/org/eclipse/papyrus/views/properties/toolsmiths/query/GetVisibleFeaturesQuery.java6
-rw-r--r--releng/Papyrus - Main tests - Failures.launch2
-rwxr-xr-xreleng/Papyrus - Main tests with cdo.launch2
-rw-r--r--releng/Papyrus - Main tests.launch2
-rwxr-xr-xreleng/main/pom.xml109
-rw-r--r--releng/main/site/category.xml1
-rw-r--r--releng/main/site/pom.xml39
-rwxr-xr-xreleng/main/targetPlatform/eclipse/org.eclipse.papyrus.main.eclipse.target.target102
-rwxr-xr-xreleng/main/targetPlatform/org.eclipse.papyrus.main.targetplatform.target (renamed from releng/main/targetPlatform/portable/org.eclipse.papyrus.main.portable.target.target)26
-rwxr-xr-xreleng/main/targetPlatform/org.eclipse.papyrus.main.targetplatform.tpd (renamed from releng/main/targetPlatform/portable/org.eclipse.papyrus.main.portable.target.tpd)22
-rw-r--r--releng/main/targetPlatform/pom.xml31
-rwxr-xr-xreleng/org.eclipse.papyrus.oomph/setups/papyrus.setup172
-rw-r--r--releng/pom.xml39
-rw-r--r--releng/rcp/pom.xml8
-rwxr-xr-xreleng/rcp/targetPlatform/eclipse/org.eclipse.papyrus.rcp.eclipse.target.target128
-rw-r--r--releng/rcp/targetPlatform/eclipse/pom.xml15
-rwxr-xr-xreleng/rcp/targetPlatform/org.eclipse.papyrus.rcp.targetplatform.target (renamed from releng/rcp/targetPlatform/portable/org.eclipse.papyrus.rcp.portable.target.target)42
-rw-r--r--releng/rcp/targetPlatform/org.eclipse.papyrus.rcp.targetplatform.tpd (renamed from releng/rcp/targetPlatform/portable/org.eclipse.papyrus.rcp.portable.target.tpd)10
-rw-r--r--releng/rcp/targetPlatform/pom.xml9
-rw-r--r--releng/rcp/targetPlatform/portable/pom.xml15
-rwxr-xr-xreleng/tests/main-tests-with-cdo/targetPlatform/eclipse/org.eclipse.papyrus.main.tests.cdo.eclipse.target.target118
-rwxr-xr-xreleng/tests/main-tests-with-cdo/targetPlatform/eclipse/pom.xml15
-rwxr-xr-xreleng/tests/main-tests-with-cdo/targetPlatform/org.eclipse.papyrus.main.tests.cdo.targetplatform.target (renamed from releng/tests/main-tests-with-cdo/targetPlatform/portable/org.eclipse.papyrus.main.tests.cdo.portable.target.target)28
-rwxr-xr-xreleng/tests/main-tests-with-cdo/targetPlatform/org.eclipse.papyrus.main.tests.cdo.targetplatform.tpd (renamed from releng/tests/main-tests-with-cdo/targetPlatform/portable/org.eclipse.papyrus.main.tests.cdo.portable.target.tpd)4
-rwxr-xr-xreleng/tests/main-tests-with-cdo/targetPlatform/pom.xml32
-rw-r--r--releng/tests/main-tests/pom.xml2
-rwxr-xr-xreleng/tests/main-tests/targetPlatform/eclipse/org.eclipse.papyrus.main.tests.eclipse.target.target106
-rw-r--r--releng/tests/main-tests/targetPlatform/eclipse/pom.xml15
-rwxr-xr-xreleng/tests/main-tests/targetPlatform/org.eclipse.papyrus.main.tests.targetplatform.target (renamed from releng/tests/main-tests/targetPlatform/portable/org.eclipse.papyrus.main.tests.portable.target.target)26
-rw-r--r--releng/tests/main-tests/targetPlatform/org.eclipse.papyrus.main.tests.targetplatform.tpd (renamed from releng/tests/main-tests/targetPlatform/portable/org.eclipse.papyrus.main.tests.portable.target.tpd)2
-rw-r--r--releng/tests/main-tests/targetPlatform/pom.xml32
-rw-r--r--releng/tests/main-tests/targetPlatform/portable/pom.xml15
-rwxr-xr-xreleng/tests/pom.xml7
-rwxr-xr-xreleng/toolkit/relengplatform/org.eclipse.papyrus.releng.platform.target38
-rwxr-xr-xreleng/toolkit/relengplatform/org.eclipse.papyrus.releng.platform.tpd6
-rw-r--r--releng/toolkit/server/repackageRcp.sh4
-rwxr-xr-xreleng/toolsmiths/pom.xml117
-rwxr-xr-xreleng/toolsmiths/targetPlatform/eclipse/org.eclipse.papyrus.toolsmiths.eclipse.targetplatform.target145
-rw-r--r--releng/toolsmiths/targetPlatform/eclipse/pom.xml15
-rwxr-xr-xreleng/toolsmiths/targetPlatform/org.eclipse.papyrus.toolsmiths.targetplatform.target (renamed from releng/toolsmiths/targetPlatform/portable/org.eclipse.papyrus.toolsmiths.portable.targetplatform.target)38
-rw-r--r--releng/toolsmiths/targetPlatform/org.eclipse.papyrus.toolsmiths.targetplatform.tpd (renamed from releng/toolsmiths/targetPlatform/portable/org.eclipse.papyrus.toolsmiths.portable.targetplatform.tpd)8
-rw-r--r--releng/toolsmiths/targetPlatform/pom.xml29
-rw-r--r--releng/toolsmiths/targetPlatform/portable/pom.xml15
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome.tests/build.properties5
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome.tests/org.eclipse.papyrus.infra.gmfdiag.welcome.tests.launch90
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome.tests/resources/dependency.di2
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome.tests/resources/dependency.notation35
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome.tests/resources/dependency.uml7
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome.tests/resources/model_with_hrefs.di2
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome.tests/resources/model_with_hrefs.notation71
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome.tests/resources/model_with_hrefs.uml11
-rw-r--r--tests/junit/plugins/infra/gmfdiag/org.eclipse.papyrus.infra.gmfdiag.welcome.tests/src/org/eclipse/papyrus/infra/gmfdiag/welcome/tests/NotationObservablePropertyTest.java58
-rwxr-xr-xtests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.suite.tests/META-INF/MANIFEST.MF1
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.suite.tests/test/org/eclipse/papyrus/toolsmiths/suite/tests/AllTests.java3
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.architecture.tests/src/org/eclipse/papyrus/toolsmiths/validation/architecture/tests/ArchitectureModelBuilderTest.java3
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.common.tests/src/org/eclipse/papyrus/toolsmiths/validation/common/tests/rules/TestProjectFixture.java37
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/.classpath7
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/.project28
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/.settings/org.eclipse.jdt.core.prefs319
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/.settings/org.eclipse.jdt.ui.prefs127
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/.settings/org.eclipse.pde.api.tools.prefs104
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/META-INF/MANIFEST.MF23
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/about.html28
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/build.properties8
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/plugin.properties18
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/pom.xml (renamed from releng/main/targetPlatform/eclipse/pom.xml)14
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/bug572633-build/build-noElementTypes.properties21
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/bug572633-build/build-noIcons.properties17
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/bug572633-build/build-noNewChild.properties21
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/bug572633-dependencies/BookStore-missingElementTypesBundle.creationmenumodel9
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/bug572633-dependencies/BookStore-missingIconBundle.creationmenumodel9
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/bug572633-dependencies/META-INF/MANIFEST-missingNewChild.MF28
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/bug572633-extensions/plugin-noExtension.xml42
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/bug572633-models/BookStore-missingIcon.creationmenumodel9
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/bug572633-models/BookStore-unresolvedRole.creationmenumodel9
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/.classpath6
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/.project34
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/.settings/org.eclipse.jdt.core.prefs319
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/META-INF/MANIFEST.MF29
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/build.properties18
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/icons/full/obj16/book.pngbin0 -> 523 bytes
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/icons/full/obj16/book@2x.pngbin0 -> 1176 bytes
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/icons/full/obj16/bookstore.pngbin0 -> 453 bytes
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/icons/full/obj16/bookstore@2x.pngbin0 -> 871 bytes
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/plugin.properties14
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/plugin.xml48
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/resources/BookStore.creationmenumodel9
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/resources/BookStore.elementtypesconfigurations21
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/resources/BookStore.profile.di2
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/resources/BookStore.profile.notation141
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/resources/org.eclipse.papyrus.toolsmiths.validation.newchild.example/resources/BookStore.profile.uml83
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/src/org/eclipse/papyrus/toolsmiths/validation/newchild/tests/AllTests.java34
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/src/org/eclipse/papyrus/toolsmiths/validation/newchild/tests/NewChildBuildPropertiesBuilderTest.java97
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/src/org/eclipse/papyrus/toolsmiths/validation/newchild/tests/NewChildDependenciesBuilderTest.java85
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/src/org/eclipse/papyrus/toolsmiths/validation/newchild/tests/NewChildModelBuilderTest.java74
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/src/org/eclipse/papyrus/toolsmiths/validation/newchild/tests/NewChildPluginBuilderTest.java57
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.newchild.tests/src/org/eclipse/papyrus/toolsmiths/validation/newchild/tests/NewChildPluginXMLBuilderTest.java60
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.profile.tests/META-INF/MANIFEST.MF3
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.profile.tests/resources/bug572676-extensions/bookstore.profile.ecore43
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.profile.tests/resources/bug572676-extensions/bookstore.profile.genmodel67
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.profile.tests/resources/bug572676-extensions/bookstore.profile.uml161
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.profile.tests/resources/bug572676-extensions/plugin-hasExtension.xml45
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.profile.tests/resources/bug572676-extensions/plugin-noExtension.xml21
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.profile.tests/resources/org.eclipse.papyrus.toolsmiths.validation.profile.example/.project6
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.profile.tests/src/org/eclipse/papyrus/toolsmiths/validation/profile/tests/AllTests.java7
-rw-r--r--tests/junit/plugins/toolsmiths/org.eclipse.papyrus.toolsmiths.validation.profile.tests/src/org/eclipse/papyrus/toolsmiths/validation/profile/tests/ProfilePluginXMLBuilderTest.java81
-rwxr-xr-xtests/junit/plugins/toolsmiths/pom.xml1
-rwxr-xr-xtests/junit/plugins/uml/org.eclipse.papyrus.uml.suite.tests/META-INF/MANIFEST.MF1
-rw-r--r--[-rwxr-xr-x]tests/junit/plugins/uml/org.eclipse.papyrus.uml.suite.tests/test/org/eclipse/papyrus/uml/suite/tests/AllTests.java5
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/.classpath11
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/.project28
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/.settings/org.eclipse.core.resources.prefs2
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/.settings/org.eclipse.core.runtime.prefs2
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/.settings/org.eclipse.jdt.core.prefs319
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/.settings/org.eclipse.jdt.ui.prefs127
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/META-INF/MANIFEST.MF19
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/about.html28
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/build.properties7
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/plugin.properties16
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/pom.xml (renamed from releng/main/targetPlatform/portable/pom.xml)14
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/tests/StereotypeMatcherEditHelperAdviceTest.java96
-rw-r--r--tests/junit/plugins/uml/org.eclipse.papyrus.uml.types.core.tests/src/org/eclipse/papyrus/uml/types/core/tests/AllTests.java32
-rwxr-xr-xtests/junit/plugins/uml/pom.xml1
662 files changed, 36670 insertions, 8706 deletions
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/.classpath b/examples/custo/org.eclipse.papyrus.example.custo.cyber/.classpath
new file mode 100644
index 00000000000..9404e3d0f26
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src-gen"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/.project b/examples/custo/org.eclipse.papyrus.example.custo.cyber/.project
new file mode 100644
index 00000000000..dd8aab22d3a
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.example.custo.cyber</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.papyrus.plugin.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.papyrus.plugin.nature</nature>
+ </natures>
+</projectDescription>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/.settings/org.eclipse.jdt.core.prefs b/examples/custo/org.eclipse.papyrus.example.custo.cyber/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..c9545f06a41
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,9 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/META-INF/MANIFEST.MF b/examples/custo/org.eclipse.papyrus.example.custo.cyber/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..62b84bd1db4
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/META-INF/MANIFEST.MF
@@ -0,0 +1,29 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.example.custo.cyber;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Automatic-Module-Name: org.eclipse.papyrus.example.custo.cyber
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Export-Package: org.eclipse.papyrus.example.custo.cyber.soft.soft,
+ org.eclipse.papyrus.example.custo.cyber.soft.soft.impl,
+ org.eclipse.papyrus.example.custo.cyber.soft.soft.util
+Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.22.0,4.0.0)",
+ org.eclipse.emf.ecore;bundle-version="[2.24.0,3.0.0)",
+ org.eclipse.uml2.types;bundle-version="[2.5.0,3.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.infra.types.core;bundle-version="[5.1.0,6.0.0)",
+ org.eclipse.uml2.uml.edit;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.uml2.uml.resources;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.papyrus.uml.service.types;bundle-version="[5.1.0,6.0.0)",
+ org.eclipse.papyrus.infra.architecture;bundle-version="[3.1.0,4.0.0)",
+ org.eclipse.papyrus.infra.types;bundle-version="[5.0.0,6.0.0)",
+ org.eclipse.papyrus.uml.diagram.common;bundle-version="[4.1.0,5.0.0)",
+ org.eclipse.papyrus.uml.tools.utils;bundle-version="[4.1.0,5.0.0)",
+ org.eclipse.papyrus.infra.core;bundle-version="[4.1.0,5.0.0)",
+ org.eclipse.papyrus.infra.newchild;bundle-version="[5.0.0,6.0.0)"
+Bundle-ActivationPolicy: lazy
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/build.properties b/examples/custo/org.eclipse.papyrus.example.custo.cyber/build.properties
new file mode 100644
index 00000000000..2f974885e3f
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/build.properties
@@ -0,0 +1,23 @@
+#
+# Copyright (c) 2021 CEA LIST.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Patrick Tessier (CEA LIST) - Initial API and implementation
+#
+
+bin.includes = .,\
+ models/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties
+jars.compile.order = .
+source.. = src-gen/,\
+ src/
+output.. = bin/
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/Cyber.architecture b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/Cyber.architecture
new file mode 100644
index 00000000000..87e876701eb
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/Cyber.architecture
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDomain xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:elementtypesconfigurations="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2" xmi:id="_oUuUANNjEeuxbvDHbla9NQ" id="Cyber" name="CyberAF">
+ <contexts xmi:type="architecture:ArchitectureDescriptionLanguage" xmi:id="_qNsAwNNjEeuxbvDHbla9NQ" id="org.eclipse.papyrus.example.custo.cyber.soft" name="SOFT" description="to descibre Soft" creationCommandClass="org.eclipse.papyrus.example.custo.cyber.SOFTModelCreation">
+ <viewpoints xmi:type="architecture:ArchitectureViewpoint" xmi:id="__bgFgNNnEeu6YI4iUG-sDA" id="org.eclipse.papyrus.example.custo.cyber.SoftViewPoint" name="SoftViewPoint"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#_ScP1oFYCEeS0WsAAtVmToA"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.example.custo.cyber/models/soft.elementtypesconfigurations#com.example.soft.elementTypes"/>
+ <metamodel xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML#/"/>
+ <profiles xmi:type="ecore:EPackage" href="http://soft_papyrus#/"/>
+ </contexts>
+</architecture:ArchitectureDomain>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/newChildMenu.creationmenumodel b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/newChildMenu.creationmenumodel
new file mode 100644
index 00000000000..1bb309d09f3
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/newChildMenu.creationmenumodel
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="ASCII"?>
+<ElementCreationMenuModel:Folder xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ElementCreationMenuModel="http://www.eclipse.org/papyrus/infra/newchild/elementcreationmenumodel" xmlns:elementtypesconfigurations="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2" label="soft">
+ <menu xsi:type="ElementCreationMenuModel:CreationMenu" label="Communication">
+ <elementType xsi:type="elementtypesconfigurations:SpecializationTypeConfiguration" href="soft.elementtypesconfigurations#com.example.soft.Communication"/>
+ </menu>
+ <menu xsi:type="ElementCreationMenuModel:CreationMenu" label="Soft">
+ <elementType xsi:type="elementtypesconfigurations:SpecializationTypeConfiguration" href="soft.elementtypesconfigurations#com.example.soft.Soft"/>
+ </menu>
+ <menu xsi:type="ElementCreationMenuModel:CreationMenu" label="SoftLayer">
+ <elementType xsi:type="elementtypesconfigurations:SpecializationTypeConfiguration" href="soft.elementtypesconfigurations#com.example.soft.SoftLayer"/>
+ </menu>
+</ElementCreationMenuModel:Folder>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.ecore b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.ecore
new file mode 100644
index 00000000000..c97f0fd3d75
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.ecore
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="soft" nsURI="http://soft_papyrus" nsPrefix="soft">
+ <eClassifiers xsi:type="ecore:EClass" name="SoftLayer">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Soft">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
+ eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" ordered="false"
+ lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Communication">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Connector" ordered="false"
+ eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Connector"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.elementtypesconfigurations b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.elementtypesconfigurations
new file mode 100644
index 00000000000..005e47794bd
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.elementtypesconfigurations
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<elementtypesconfigurations:ElementTypeSetConfiguration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:elementtypesconfigurations="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2" xmlns:stereotypematcher="http://www.eclipse.org/papyrus/uml/types/stereotypematcher/1.1" xmi:id="com.example.soft.elementTypes" identifier="com.example.soft.elementTypes" name="soft" metamodelNsURI="http://www.eclipse.org/uml2/5.0.0/UML">
+ <elementTypeConfigurations xmi:type="elementtypesconfigurations:SpecializationTypeConfiguration" xmi:id="com.example.soft.Communication" identifier="com.example.soft.Communication" name="Communication" hint="UML::Connector" kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" matcherConfiguration="_ZT_fwNNjEeuxbvDHbla9NQ">
+ <annotations xmi:type="elementtypesconfigurations:Annotation" xmi:id="_ZT-4stNjEeuxbvDHbla9NQ" source="org.eclipse.papyrus.uml.profile.types.generator.source" value="platform:/resource/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.uml#_5bC5kNNUEeuOA7yBuZ0R9w"/>
+ <iconEntry xmi:type="elementtypesconfigurations:IconEntry" xmi:id="_ZT-4s9NjEeuxbvDHbla9NQ" iconPath="/icons/full/obj16/Connector.gif" bundleId="org.eclipse.uml2.uml.edit"/>
+ <ownedConfigurations xmi:type="stereotypematcher:StereotypeMatcherAdviceConfiguration" xmi:id="_ZT_fwNNjEeuxbvDHbla9NQ" description="Apply Stereotype Communication" identifier="com.example.soft.communication" target="com.example.soft.Communication" matchedType="com.example.soft.Communication">
+ <stereotypesQualifiedNames>soft::Communication</stereotypesQualifiedNames>
+ </ownedConfigurations>
+ <specializedTypes xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Connector"/>
+ </elementTypeConfigurations>
+ <elementTypeConfigurations xmi:type="elementtypesconfigurations:SpecializationTypeConfiguration" xmi:id="com.example.soft.Soft" identifier="com.example.soft.Soft" name="Soft" hint="UML::Property" kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" matcherConfiguration="_ZT_fxNNjEeuxbvDHbla9NQ">
+ <annotations xmi:type="elementtypesconfigurations:Annotation" xmi:id="_ZT_fwtNjEeuxbvDHbla9NQ" source="org.eclipse.papyrus.uml.profile.types.generator.source" value="platform:/resource/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.uml#_3cErcNNUEeuOA7yBuZ0R9w"/>
+ <iconEntry xmi:type="elementtypesconfigurations:IconEntry" xmi:id="_ZT_fw9NjEeuxbvDHbla9NQ" iconPath="/icons/full/obj16/Property.gif" bundleId="org.eclipse.uml2.uml.edit"/>
+ <ownedConfigurations xmi:type="stereotypematcher:StereotypeMatcherAdviceConfiguration" xmi:id="_ZT_fxNNjEeuxbvDHbla9NQ" description="Apply Stereotype Soft" identifier="com.example.soft.soft" target="com.example.soft.Soft" matchedType="com.example.soft.Soft">
+ <stereotypesQualifiedNames>soft::Soft</stereotypesQualifiedNames>
+ </ownedConfigurations>
+ <specializedTypes xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Property"/>
+ </elementTypeConfigurations>
+ <elementTypeConfigurations xmi:type="elementtypesconfigurations:SpecializationTypeConfiguration" xmi:id="com.example.soft.SoftLayer" identifier="com.example.soft.SoftLayer" name="SoftLayer" hint="UML::Class" kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" matcherConfiguration="_ZT_fyNNjEeuxbvDHbla9NQ">
+ <annotations xmi:type="elementtypesconfigurations:Annotation" xmi:id="_ZT_fxtNjEeuxbvDHbla9NQ" source="org.eclipse.papyrus.uml.profile.types.generator.source" value="platform:/resource/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.uml#_1GU8ENNUEeuOA7yBuZ0R9w"/>
+ <iconEntry xmi:type="elementtypesconfigurations:IconEntry" xmi:id="_ZT_fx9NjEeuxbvDHbla9NQ" iconPath="/icons/full/obj16/Class.gif" bundleId="org.eclipse.uml2.uml.edit"/>
+ <ownedConfigurations xmi:type="stereotypematcher:StereotypeMatcherAdviceConfiguration" xmi:id="_ZT_fyNNjEeuxbvDHbla9NQ" description="Apply Stereotype SoftLayer" identifier="com.example.soft.softLayer" target="com.example.soft.SoftLayer" matchedType="com.example.soft.SoftLayer">
+ <stereotypesQualifiedNames>soft::SoftLayer</stereotypesQualifiedNames>
+ </ownedConfigurations>
+ <specializedTypes xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Class"/>
+ </elementTypeConfigurations>
+</elementtypesconfigurations:ElementTypeSetConfiguration>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.di b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.di
new file mode 100644
index 00000000000..247ed5e3570
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.uml.architecture.Profile"/>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.genmodel b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.genmodel
new file mode 100644
index 00000000000..f8ca10b2968
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.genmodel
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+ copyrightText="&#xA; Copyright (c) 2021 CEA LIST.&#xA; &#xA; All rights reserved. This program and the accompanying materials&#xA; are made available under the terms of the Eclipse Public License 2.0&#xA; which accompanies this distribution, and is available at&#xA; https://www.eclipse.org/legal/epl-2.0/&#xA; &#xA; SPDX-License-Identifier: EPL-2.0&#xA; &#xA; Contributors:&#xA; &#x9;Patrick Tessier &#x9;(CEA LIST) - Initial API and implementation&#xA; "
+ modelDirectory="/org.eclipse.papyrus.example.custo.cyber/src-gen" modelPluginID="org.eclipse.papyrus.example.custo.cyber"
+ modelName="Soft" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+ importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="5.0" usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.uml2.types/model/Types.genmodel#//types ../../org.eclipse.uml2.uml/model/UML.genmodel#//uml"
+ operationReflection="true" importOrganizing="true">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+ <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
+ <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+ <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+ <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
+ <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+ <details key="COMMENTS" value="PROCESS"/>
+ <details key="DERIVED_FEATURES" value="PROCESS"/>
+ <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+ <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+ <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+ <details key="UNION_PROPERTIES" value="REPORT"/>
+ <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+ <details key="NON_API_INVARIANTS" value="IGNORE"/>
+ <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+ <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+ <details key="OPERATION_BODIES" value="IGNORE"/>
+ <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+ <details key="UNTYPED_PROPERTIES" value="REPORT"/>
+ <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+ <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+ <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+ </genAnnotations>
+ <foreignModel>soft.profile.uml</foreignModel>
+ <genPackages xsi:type="genmodel:GenPackage" prefix="Soft" basePackage="org.eclipse.papyrus.example.custo.cyber.soft"
+ disposableProviderFactory="true" ecorePackage="soft.ecore#/">
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="soft.ecore#//SoftLayer">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference soft.ecore#//SoftLayer/base_Class"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="soft.ecore#//Soft">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference soft.ecore#//Soft/base_Property"/>
+ <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute soft.ecore#//Soft/version"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="soft.ecore#//Communication">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference soft.ecore#//Communication/base_Connector"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.notation b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.notation
new file mode 100644
index 00000000000..8be3f68723e
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.notation
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_wN-tENNUEeuOA7yBuZ0R9w" type="PapyrusUMLProfileDiagram" name="Profile Diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_1GhJUNNUEeuOA7yBuZ0R9w" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1Gt9oNNUEeuOA7yBuZ0R9w" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1GyPENNUEeuOA7yBuZ0R9w" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1GyPEdNUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1GyPEtNUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1GyPE9NUEeuOA7yBuZ0R9w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1GyPFNNUEeuOA7yBuZ0R9w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1Gy2INNUEeuOA7yBuZ0R9w" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1Gy2IdNUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1Gy2ItNUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1Gy2I9NUEeuOA7yBuZ0R9w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1Gy2JNNUEeuOA7yBuZ0R9w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="soft.profile.uml#_1GU8ENNUEeuOA7yBuZ0R9w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1GhJUdNUEeuOA7yBuZ0R9w" x="140" y="280"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3cLZINNUEeuOA7yBuZ0R9w" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3cMAMNNUEeuOA7yBuZ0R9w" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3cMAMdNUEeuOA7yBuZ0R9w" type="Stereotype_AttributeCompartment">
+ <children xmi:type="notation:Shape" xmi:id="_OCAWgNNVEeuOA7yBuZ0R9w" type="Property_ClassAttributeLabel">
+ <element xmi:type="uml:Property" href="soft.profile.uml#_OBs0gNNVEeuOA7yBuZ0R9w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OCAWgdNVEeuOA7yBuZ0R9w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3cMAMtNUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3cMAM9NUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3cMANNNUEeuOA7yBuZ0R9w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3cMANdNUEeuOA7yBuZ0R9w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3cMnQNNUEeuOA7yBuZ0R9w" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3cMnQdNUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3cMnQtNUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3cMnQ9NUEeuOA7yBuZ0R9w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3cMnRNNUEeuOA7yBuZ0R9w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="soft.profile.uml#_3cErcNNUEeuOA7yBuZ0R9w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3cLZIdNUEeuOA7yBuZ0R9w" x="500" y="280"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5b2x4NNUEeuOA7yBuZ0R9w" type="Stereotype_Shape">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5b3Y8NNUEeuOA7yBuZ0R9w" type="Stereotype_NameLabel"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5b3Y8dNUEeuOA7yBuZ0R9w" type="Stereotype_AttributeCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5b3Y8tNUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5b3Y89NUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5b3Y9NNUEeuOA7yBuZ0R9w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5b3Y9dNUEeuOA7yBuZ0R9w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5b3Y9tNUEeuOA7yBuZ0R9w" type="Stereotype_OperationCompartment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5b3Y99NUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5b3Y-NNUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5b3Y-dNUEeuOA7yBuZ0R9w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5b3Y-tNUEeuOA7yBuZ0R9w"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="soft.profile.uml#_5bC5kNNUEeuOA7yBuZ0R9w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5b2x4dNUEeuOA7yBuZ0R9w" x="760" y="280"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IsK6QNNVEeuOA7yBuZ0R9w" type="Class_MetaclassShape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IsOkoNNVEeuOA7yBuZ0R9w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsPLsNNVEeuOA7yBuZ0R9w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsPLsdNVEeuOA7yBuZ0R9w" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsPLstNVEeuOA7yBuZ0R9w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsPLs9NVEeuOA7yBuZ0R9w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsPLtNNVEeuOA7yBuZ0R9w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IsLhUNNVEeuOA7yBuZ0R9w" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IsLhUdNVEeuOA7yBuZ0R9w" x="140" y="160"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IsPLtdNVEeuOA7yBuZ0R9w" type="Class_MetaclassShape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IsPywtNVEeuOA7yBuZ0R9w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsPyw9NVEeuOA7yBuZ0R9w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsQZ0NNVEeuOA7yBuZ0R9w" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsQZ0dNVEeuOA7yBuZ0R9w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsQZ0tNVEeuOA7yBuZ0R9w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsQZ09NVEeuOA7yBuZ0R9w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IsPywNNVEeuOA7yBuZ0R9w" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IsPywdNVEeuOA7yBuZ0R9w" x="500" y="160" width="141"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IsQZ1NNVEeuOA7yBuZ0R9w" type="Class_MetaclassShape">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IsQZ2NNVEeuOA7yBuZ0R9w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsQZ2dNVEeuOA7yBuZ0R9w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsQZ2tNVEeuOA7yBuZ0R9w" key="StereotypeList" value="StandardProfile::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsQZ29NVEeuOA7yBuZ0R9w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsRA4NNVEeuOA7yBuZ0R9w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IsRA4dNVEeuOA7yBuZ0R9w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IsQZ1tNVEeuOA7yBuZ0R9w" type="Class_MetaclassNameLabel"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Connector"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IsQZ19NVEeuOA7yBuZ0R9w" x="760" y="160"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ItH8gNNVEeuOA7yBuZ0R9w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ItH8gdNVEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ItIjkNNVEeuOA7yBuZ0R9w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItH8gtNVEeuOA7yBuZ0R9w" x="440" y="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ItfI4NNVEeuOA7yBuZ0R9w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ItfI4dNVEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ItfI49NVEeuOA7yBuZ0R9w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItfI4tNVEeuOA7yBuZ0R9w" x="440" y="120"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ItwOoNNVEeuOA7yBuZ0R9w" type="StereotypeComment">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ItwOodNVEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ItwOo9NVEeuOA7yBuZ0R9w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Connector"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItwOotNVEeuOA7yBuZ0R9w" x="440" y="200"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_wN-tEdNUEeuOA7yBuZ0R9w" name="diagram_compatibility_version" stringValue="1.4.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_wN-tEtNUEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_wN-tE9NUEeuOA7yBuZ0R9w" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+ <owner xmi:type="uml:Profile" href="soft.profile.uml#_wLLQsNNUEeuOA7yBuZ0R9w"/>
+ </styles>
+ <element xmi:type="uml:Profile" href="soft.profile.uml#_wLLQsNNUEeuOA7yBuZ0R9w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ItODINNVEeuOA7yBuZ0R9w" type="StereotypeCommentLink" source="_IsK6QNNVEeuOA7yBuZ0R9w" target="_ItH8gNNVEeuOA7yBuZ0R9w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ItODIdNVEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ItPRQtNVEeuOA7yBuZ0R9w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ItODItNVEeuOA7yBuZ0R9w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ItPRQNNVEeuOA7yBuZ0R9w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ItPRQdNVEeuOA7yBuZ0R9w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ItfI5NNVEeuOA7yBuZ0R9w" type="StereotypeCommentLink" source="_IsPLtdNVEeuOA7yBuZ0R9w" target="_ItfI4NNVEeuOA7yBuZ0R9w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ItfI5dNVEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Itfv8dNVEeuOA7yBuZ0R9w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ItfI5tNVEeuOA7yBuZ0R9w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ItfI59NVEeuOA7yBuZ0R9w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Itfv8NNVEeuOA7yBuZ0R9w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ItwOpNNVEeuOA7yBuZ0R9w" type="StereotypeCommentLink" source="_IsQZ1NNVEeuOA7yBuZ0R9w" target="_ItwOoNNVEeuOA7yBuZ0R9w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ItwOpdNVEeuOA7yBuZ0R9w"/>
+ <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Itw1sNNVEeuOA7yBuZ0R9w" name="BASE_ELEMENT">
+ <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Connector"/>
+ </styles>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ItwOptNVEeuOA7yBuZ0R9w" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ItwOp9NVEeuOA7yBuZ0R9w"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ItwOqNNVEeuOA7yBuZ0R9w"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_LV2SQNNVEeuOA7yBuZ0R9w" type="Extension_Edge" source="_5b2x4NNUEeuOA7yBuZ0R9w" target="_IsQZ1NNVEeuOA7yBuZ0R9w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_LV2SQdNVEeuOA7yBuZ0R9w"/>
+ <element xmi:type="uml:Extension" href="soft.profile.uml#_LVUt0NNVEeuOA7yBuZ0R9w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LV2SQtNVEeuOA7yBuZ0R9w" points="[820, 280, -643984, -643984]$[820, 210, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LW6pQNNVEeuOA7yBuZ0R9w" id="(0.6,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LW6pQdNVEeuOA7yBuZ0R9w" id="(0.6,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_L3iqENNVEeuOA7yBuZ0R9w" type="Extension_Edge" source="_3cLZINNUEeuOA7yBuZ0R9w" target="_IsPLtdNVEeuOA7yBuZ0R9w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_L3iqEdNVEeuOA7yBuZ0R9w"/>
+ <element xmi:type="uml:Extension" href="soft.profile.uml#_L3HMQNNVEeuOA7yBuZ0R9w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_L3iqEtNVEeuOA7yBuZ0R9w" points="[560, 280, -643984, -643984]$[560, 210, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L4If8NNVEeuOA7yBuZ0R9w" id="(0.4444444444444444,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L4If8dNVEeuOA7yBuZ0R9w" id="(0.425531914893617,1.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_MfJcoNNVEeuOA7yBuZ0R9w" type="Extension_Edge" source="_1GhJUNNUEeuOA7yBuZ0R9w" target="_IsK6QNNVEeuOA7yBuZ0R9w">
+ <styles xmi:type="notation:FontStyle" xmi:id="_MfJcodNVEeuOA7yBuZ0R9w"/>
+ <element xmi:type="uml:Extension" href="soft.profile.uml#_MeofQNNVEeuOA7yBuZ0R9w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MfJcotNVEeuOA7yBuZ0R9w" points="[180, 280, -643984, -643984]$[180, 210, -643984, -643984]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MfpL4NNVEeuOA7yBuZ0R9w" id="(0.4,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MfpL4dNVEeuOA7yBuZ0R9w" id="(0.4,1.0)"/>
+ </edges>
+</notation:Diagram>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.uml b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.uml
new file mode 100644
index 00000000000..1b3a861a128
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/models/soft.profile.uml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Profile xmi:id="_wLLQsNNUEeuOA7yBuZ0R9w" name="soft" metaclassReference="_Ir-F8NNVEeuOA7yBuZ0R9w _IsDlgNNVEeuOA7yBuZ0R9w _IsJsINNVEeuOA7yBuZ0R9w">
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_Ir-F8NNVEeuOA7yBuZ0R9w" alias="Class">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_IsDlgNNVEeuOA7yBuZ0R9w" alias="Property">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </elementImport>
+ <elementImport xmi:type="uml:ElementImport" xmi:id="_IsJsINNVEeuOA7yBuZ0R9w" alias="Connector">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Connector"/>
+ </elementImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_wq_ZMNNUEeuOA7yBuZ0R9w">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_wrE4wNNUEeuOA7yBuZ0R9w">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_1GU8ENNUEeuOA7yBuZ0R9w" name="SoftLayer">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_MeqUcNNVEeuOA7yBuZ0R9w" name="base_Class" association="_MeofQNNVEeuOA7yBuZ0R9w">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MeqUcdNVEeuOA7yBuZ0R9w"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_3cErcNNUEeuOA7yBuZ0R9w" name="Soft">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_L3IaYNNVEeuOA7yBuZ0R9w" name="base_Property" association="_L3HMQNNVEeuOA7yBuZ0R9w">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L3IaYdNVEeuOA7yBuZ0R9w"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_OBs0gNNVEeuOA7yBuZ0R9w" name="version">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_5bC5kNNUEeuOA7yBuZ0R9w" name="Communication">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_LVXxINNVEeuOA7yBuZ0R9w" name="base_Connector" association="_LVUt0NNVEeuOA7yBuZ0R9w">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Connector"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LVXxIdNVEeuOA7yBuZ0R9w"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_LVUt0NNVEeuOA7yBuZ0R9w" name="E_Communication_Connector9" memberEnd="_LVXKENNVEeuOA7yBuZ0R9w _LVXxINNVEeuOA7yBuZ0R9w">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_LVXKENNVEeuOA7yBuZ0R9w" name="extension_Communication" type="_5bC5kNNUEeuOA7yBuZ0R9w" aggregation="composite" association="_LVUt0NNVEeuOA7yBuZ0R9w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_L3HMQNNVEeuOA7yBuZ0R9w" name="E_Soft_Property10" memberEnd="_L3HzUNNVEeuOA7yBuZ0R9w _L3IaYNNVEeuOA7yBuZ0R9w">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_L3HzUNNVEeuOA7yBuZ0R9w" name="extension_Soft" type="_3cErcNNUEeuOA7yBuZ0R9w" aggregation="composite" association="_L3HMQNNVEeuOA7yBuZ0R9w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_MeofQNNVEeuOA7yBuZ0R9w" name="E_SoftLayer_Class11" memberEnd="_MeptYNNVEeuOA7yBuZ0R9w _MeqUcNNVEeuOA7yBuZ0R9w">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_MeptYNNVEeuOA7yBuZ0R9w" name="extension_SoftLayer" type="_1GU8ENNUEeuOA7yBuZ0R9w" aggregation="composite" association="_MeofQNNVEeuOA7yBuZ0R9w"/>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_WBiY4NNVEeuOA7yBuZ0R9w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WBk1INNVEeuOA7yBuZ0R9w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Profile>
+ <Ecore:EPackage xmi:id="_Ye4lENNVEeuOA7yBuZ0R9w" base_Package="_wLLQsNNUEeuOA7yBuZ0R9w" nsURI="http://soft_papyrus"/>
+</xmi:XMI>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/plugin.properties b/examples/custo/org.eclipse.papyrus.example.custo.cyber/plugin.properties
new file mode 100644
index 00000000000..b924e62f4aa
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/plugin.properties
@@ -0,0 +1,16 @@
+#
+# Copyright (c) 2021 CEA LIST.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+# Contributors:
+# Patrick Tessier (CEA LIST) - Initial API and implementation
+#
+
+pluginName = Cyber
+providerName = www.example.org
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/plugin.xml b/examples/custo/org.eclipse.papyrus.example.custo.cyber/plugin.xml
new file mode 100644
index 00000000000..87dedbb26da
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/plugin.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?eclipse version="3.0"?><!--
+
+ Copyright (c) 2021 CEA LIST.
+
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 2.0
+ which accompanies this distribution, and is available at
+ https://www.eclipse.org/legal/epl-2.0/
+
+ SPDX-License-Identifier: EPL-2.0
+
+ Contributors:
+ Patrick Tessier (CEA LIST) - Initial API and implementation
+
+--><plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+
+ <!-- @generated soft.profile -->
+
+ <package class="org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage" genModel="models/soft.profile.genmodel" uri="http://soft_papyrus"/>
+
+ </extension>
+
+ <extension point="org.eclipse.uml2.uml.generated_package">
+
+ <profile location="pathmap://PROFILE_CYBER/soft.profile.uml#_wLLQsNNUEeuOA7yBuZ0R9w" uri="http://soft_papyrus">
+ </profile>
+
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.uri_mapping">
+
+ <mapping source="pathmap://PROFILE_CYBER/" target="platform:/plugin/org.eclipse.papyrus.example.custo.cyber/models/">
+ </mapping>
+
+ </extension>
+
+ <extension point="org.eclipse.papyrus.uml.extensionpoints.UMLProfile">
+
+ <profile description="Small profile for the soft" name="SOFT" path="pathmap://PROFILE_CYBER/soft.profile.uml" provider="Eclipse">
+ </profile>
+
+ </extension>
+
+ <extension point="org.eclipse.papyrus.infra.types.core.elementTypeSetConfiguration">
+ <elementTypeSet clientContextID="org.eclipse.papyrus.infra.services.edit.TypeContext" path="models/soft.elementtypesconfigurations"/>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.infra.architecture.models">
+ <model
+ path="models/Cyber.architecture">
+ </model>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.infra.newchild">
+ <menuCreationModel
+ model="models/newChildMenu.creationmenumodel">
+ </menuCreationModel>
+ </extension>
+</plugin>
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/Communication.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/Communication.java
new file mode 100644
index 00000000000..7533c7d56df
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/Communication.java
@@ -0,0 +1,72 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Connector;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Communication</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Communication#getBase_Connector <em>Base Connector</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage#getCommunication()
+ * @model
+ * @generated
+ */
+public interface Communication extends EObject {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * Returns the value of the '<em><b>Base Connector</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Connector</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Connector</em>' reference.
+ * @see #setBase_Connector(Connector)
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage#getCommunication_Base_Connector()
+ * @model ordered="false"
+ * @generated
+ */
+ Connector getBase_Connector();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Communication#getBase_Connector <em>Base Connector</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Connector</em>' reference.
+ * @see #getBase_Connector()
+ * @generated
+ */
+ void setBase_Connector(Connector value);
+
+} // Communication
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/Soft.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/Soft.java
new file mode 100644
index 00000000000..6bab2ede5ce
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/Soft.java
@@ -0,0 +1,99 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Soft</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft#getBase_Property <em>Base Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage#getSoft()
+ * @model
+ * @generated
+ */
+public interface Soft extends EObject {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * Returns the value of the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Property</em>' reference.
+ * @see #setBase_Property(Property)
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage#getSoft_Base_Property()
+ * @model ordered="false"
+ * @generated
+ */
+ Property getBase_Property();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft#getBase_Property <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Property</em>' reference.
+ * @see #getBase_Property()
+ * @generated
+ */
+ void setBase_Property(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Version</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Version</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Version</em>' attribute.
+ * @see #setVersion(String)
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage#getSoft_Version()
+ * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getVersion();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft#getVersion <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Version</em>' attribute.
+ * @see #getVersion()
+ * @generated
+ */
+ void setVersion(String value);
+
+} // Soft
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftFactory.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftFactory.java
new file mode 100644
index 00000000000..7c9ddddeca8
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftFactory.java
@@ -0,0 +1,80 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage
+ * @generated
+ */
+public interface SoftFactory extends EFactory {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SoftFactory eINSTANCE = org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Layer</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Layer</em>'.
+ * @generated
+ */
+ SoftLayer createSoftLayer();
+
+ /**
+ * Returns a new object of class '<em>Soft</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Soft</em>'.
+ * @generated
+ */
+ Soft createSoft();
+
+ /**
+ * Returns a new object of class '<em>Communication</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Communication</em>'.
+ * @generated
+ */
+ Communication createCommunication();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ SoftPackage getSoftPackage();
+
+} //SoftFactory
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftLayer.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftLayer.java
new file mode 100644
index 00000000000..96dd91b4d1e
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftLayer.java
@@ -0,0 +1,70 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftLayer#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage#getSoftLayer()
+ * @model
+ * @generated
+ */
+public interface SoftLayer extends EObject {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage#getSoftLayer_Base_Class()
+ * @model ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftLayer#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // SoftLayer
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftPackage.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftPackage.java
new file mode 100644
index 00000000000..f6195f740fb
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/SoftPackage.java
@@ -0,0 +1,361 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface SoftPackage extends EPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "soft";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://soft_papyrus";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "soft";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SoftPackage eINSTANCE = org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftLayerImpl <em>Layer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftLayerImpl
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftPackageImpl#getSoftLayer()
+ * @generated
+ */
+ int SOFT_LAYER = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOFT_LAYER__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Layer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOFT_LAYER_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Layer</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOFT_LAYER_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftImpl <em>Soft</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftImpl
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftPackageImpl#getSoft()
+ * @generated
+ */
+ int SOFT = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOFT__BASE_PROPERTY = 0;
+
+ /**
+ * The feature id for the '<em><b>Version</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOFT__VERSION = 1;
+
+ /**
+ * The number of structural features of the '<em>Soft</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOFT_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Soft</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SOFT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.CommunicationImpl <em>Communication</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.CommunicationImpl
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftPackageImpl#getCommunication()
+ * @generated
+ */
+ int COMMUNICATION = 2;
+
+ /**
+ * The feature id for the '<em><b>Base Connector</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMMUNICATION__BASE_CONNECTOR = 0;
+
+ /**
+ * The number of structural features of the '<em>Communication</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMMUNICATION_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Communication</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMMUNICATION_OPERATION_COUNT = 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftLayer <em>Layer</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Layer</em>'.
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftLayer
+ * @generated
+ */
+ EClass getSoftLayer();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftLayer#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftLayer#getBase_Class()
+ * @see #getSoftLayer()
+ * @generated
+ */
+ EReference getSoftLayer_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft <em>Soft</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Soft</em>'.
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft
+ * @generated
+ */
+ EClass getSoft();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft#getBase_Property <em>Base Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Property</em>'.
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft#getBase_Property()
+ * @see #getSoft()
+ * @generated
+ */
+ EReference getSoft_Base_Property();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft#getVersion <em>Version</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Version</em>'.
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft#getVersion()
+ * @see #getSoft()
+ * @generated
+ */
+ EAttribute getSoft_Version();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Communication <em>Communication</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Communication</em>'.
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.Communication
+ * @generated
+ */
+ EClass getCommunication();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Communication#getBase_Connector <em>Base Connector</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Connector</em>'.
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.Communication#getBase_Connector()
+ * @see #getCommunication()
+ * @generated
+ */
+ EReference getCommunication_Base_Connector();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ SoftFactory getSoftFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each operation of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftLayerImpl <em>Layer</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftLayerImpl
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftPackageImpl#getSoftLayer()
+ * @generated
+ */
+ EClass SOFT_LAYER = eINSTANCE.getSoftLayer();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SOFT_LAYER__BASE_CLASS = eINSTANCE.getSoftLayer_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftImpl <em>Soft</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftImpl
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftPackageImpl#getSoft()
+ * @generated
+ */
+ EClass SOFT = eINSTANCE.getSoft();
+
+ /**
+ * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SOFT__BASE_PROPERTY = eINSTANCE.getSoft_Base_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute SOFT__VERSION = eINSTANCE.getSoft_Version();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.CommunicationImpl <em>Communication</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.CommunicationImpl
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftPackageImpl#getCommunication()
+ * @generated
+ */
+ EClass COMMUNICATION = eINSTANCE.getCommunication();
+
+ /**
+ * The meta object literal for the '<em><b>Base Connector</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMMUNICATION__BASE_CONNECTOR = eINSTANCE.getCommunication_Base_Connector();
+
+ }
+
+} //SoftPackage
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/CommunicationImpl.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/CommunicationImpl.java
new file mode 100644
index 00000000000..45152f9aa8d
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/CommunicationImpl.java
@@ -0,0 +1,178 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.Communication;
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage;
+
+import org.eclipse.uml2.uml.Connector;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Communication</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.CommunicationImpl#getBase_Connector <em>Base Connector</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CommunicationImpl extends MinimalEObjectImpl.Container implements Communication {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * The cached value of the '{@link #getBase_Connector() <em>Base Connector</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Connector()
+ * @generated
+ * @ordered
+ */
+ protected Connector base_Connector;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CommunicationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SoftPackage.Literals.COMMUNICATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connector getBase_Connector() {
+ if (base_Connector != null && base_Connector.eIsProxy()) {
+ InternalEObject oldBase_Connector = (InternalEObject)base_Connector;
+ base_Connector = (Connector)eResolveProxy(oldBase_Connector);
+ if (base_Connector != oldBase_Connector) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, SoftPackage.COMMUNICATION__BASE_CONNECTOR, oldBase_Connector, base_Connector));
+ }
+ }
+ return base_Connector;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connector basicGetBase_Connector() {
+ return base_Connector;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Connector(Connector newBase_Connector) {
+ Connector oldBase_Connector = base_Connector;
+ base_Connector = newBase_Connector;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SoftPackage.COMMUNICATION__BASE_CONNECTOR, oldBase_Connector, base_Connector));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SoftPackage.COMMUNICATION__BASE_CONNECTOR:
+ if (resolve) return getBase_Connector();
+ return basicGetBase_Connector();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SoftPackage.COMMUNICATION__BASE_CONNECTOR:
+ setBase_Connector((Connector)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SoftPackage.COMMUNICATION__BASE_CONNECTOR:
+ setBase_Connector((Connector)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SoftPackage.COMMUNICATION__BASE_CONNECTOR:
+ return base_Connector != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CommunicationImpl
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftFactoryImpl.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftFactoryImpl.java
new file mode 100644
index 00000000000..a2e375b0026
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftFactoryImpl.java
@@ -0,0 +1,137 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SoftFactoryImpl extends EFactoryImpl implements SoftFactory {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static SoftFactory init() {
+ try {
+ SoftFactory theSoftFactory = (SoftFactory)EPackage.Registry.INSTANCE.getEFactory(SoftPackage.eNS_URI);
+ if (theSoftFactory != null) {
+ return theSoftFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new SoftFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SoftFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case SoftPackage.SOFT_LAYER: return createSoftLayer();
+ case SoftPackage.SOFT: return createSoft();
+ case SoftPackage.COMMUNICATION: return createCommunication();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SoftLayer createSoftLayer() {
+ SoftLayerImpl softLayer = new SoftLayerImpl();
+ return softLayer;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Soft createSoft() {
+ SoftImpl soft = new SoftImpl();
+ return soft;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Communication createCommunication() {
+ CommunicationImpl communication = new CommunicationImpl();
+ return communication;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SoftPackage getSoftPackage() {
+ return (SoftPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static SoftPackage getPackage() {
+ return SoftPackage.eINSTANCE;
+ }
+
+} //SoftFactoryImpl
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftImpl.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftImpl.java
new file mode 100644
index 00000000000..eb1d150247d
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftImpl.java
@@ -0,0 +1,246 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft;
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Soft</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftImpl#getBase_Property <em>Base Property</em>}</li>
+ * <li>{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftImpl#getVersion <em>Version</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SoftImpl extends MinimalEObjectImpl.Container implements Soft {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_Property;
+
+ /**
+ * The default value of the '{@link #getVersion() <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVersion()
+ * @generated
+ * @ordered
+ */
+ protected static final String VERSION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getVersion() <em>Version</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getVersion()
+ * @generated
+ * @ordered
+ */
+ protected String version = VERSION_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SoftImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SoftPackage.Literals.SOFT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_Property() {
+ if (base_Property != null && base_Property.eIsProxy()) {
+ InternalEObject oldBase_Property = (InternalEObject)base_Property;
+ base_Property = (Property)eResolveProxy(oldBase_Property);
+ if (base_Property != oldBase_Property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, SoftPackage.SOFT__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+ }
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_Property() {
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Property(Property newBase_Property) {
+ Property oldBase_Property = base_Property;
+ base_Property = newBase_Property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SoftPackage.SOFT__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getVersion() {
+ return version;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setVersion(String newVersion) {
+ String oldVersion = version;
+ version = newVersion;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SoftPackage.SOFT__VERSION, oldVersion, version));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SoftPackage.SOFT__BASE_PROPERTY:
+ if (resolve) return getBase_Property();
+ return basicGetBase_Property();
+ case SoftPackage.SOFT__VERSION:
+ return getVersion();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SoftPackage.SOFT__BASE_PROPERTY:
+ setBase_Property((Property)newValue);
+ return;
+ case SoftPackage.SOFT__VERSION:
+ setVersion((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SoftPackage.SOFT__BASE_PROPERTY:
+ setBase_Property((Property)null);
+ return;
+ case SoftPackage.SOFT__VERSION:
+ setVersion(VERSION_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SoftPackage.SOFT__BASE_PROPERTY:
+ return base_Property != null;
+ case SoftPackage.SOFT__VERSION:
+ return VERSION_EDEFAULT == null ? version != null : !VERSION_EDEFAULT.equals(version);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuilder result = new StringBuilder(super.toString());
+ result.append(" (version: ");
+ result.append(version);
+ result.append(')');
+ return result.toString();
+ }
+
+} //SoftImpl
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftLayerImpl.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftLayerImpl.java
new file mode 100644
index 00000000000..a7fc227262b
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftLayerImpl.java
@@ -0,0 +1,176 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftLayer;
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.impl.SoftLayerImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SoftLayerImpl extends MinimalEObjectImpl.Container implements SoftLayer {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SoftLayerImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SoftPackage.Literals.SOFT_LAYER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, SoftPackage.SOFT_LAYER__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SoftPackage.SOFT_LAYER__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SoftPackage.SOFT_LAYER__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SoftPackage.SOFT_LAYER__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SoftPackage.SOFT_LAYER__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SoftPackage.SOFT_LAYER__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SoftLayerImpl
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftPackageImpl.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftPackageImpl.java
new file mode 100644
index 00000000000..8354f6c8b63
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/impl/SoftPackageImpl.java
@@ -0,0 +1,287 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.Communication;
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft;
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftFactory;
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftLayer;
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SoftPackageImpl extends EPackageImpl implements SoftPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass softLayerEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass softEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass communicationEClass = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private SoftPackageImpl() {
+ super(eNS_URI, SoftFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link SoftPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static SoftPackage init() {
+ if (isInited) return (SoftPackage)EPackage.Registry.INSTANCE.getEPackage(SoftPackage.eNS_URI);
+
+ // Obtain or create and register package
+ Object registeredSoftPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+ SoftPackageImpl theSoftPackage = registeredSoftPackage instanceof SoftPackageImpl ? (SoftPackageImpl)registeredSoftPackage : new SoftPackageImpl();
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ EcorePackage.eINSTANCE.eClass();
+ TypesPackage.eINSTANCE.eClass();
+ UMLPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theSoftPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theSoftPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theSoftPackage.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(SoftPackage.eNS_URI, theSoftPackage);
+ return theSoftPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSoftLayer() {
+ return softLayerEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSoftLayer_Base_Class() {
+ return (EReference)softLayerEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSoft() {
+ return softEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSoft_Base_Property() {
+ return (EReference)softEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getSoft_Version() {
+ return (EAttribute)softEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCommunication() {
+ return communicationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCommunication_Base_Connector() {
+ return (EReference)communicationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SoftFactory getSoftFactory() {
+ return (SoftFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ softLayerEClass = createEClass(SOFT_LAYER);
+ createEReference(softLayerEClass, SOFT_LAYER__BASE_CLASS);
+
+ softEClass = createEClass(SOFT);
+ createEReference(softEClass, SOFT__BASE_PROPERTY);
+ createEAttribute(softEClass, SOFT__VERSION);
+
+ communicationEClass = createEClass(COMMUNICATION);
+ createEReference(communicationEClass, COMMUNICATION__BASE_CONNECTOR);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+ TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(softLayerEClass, SoftLayer.class, "SoftLayer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSoftLayer_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 0, 1, SoftLayer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(softEClass, Soft.class, "Soft", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSoft_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 0, 1, Soft.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getSoft_Version(), theTypesPackage.getString(), "version", null, 1, 1, Soft.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(communicationEClass, Communication.class, "Communication", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCommunication_Base_Connector(), theUMLPackage.getConnector(), null, "base_Connector", null, 0, 1, Communication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //SoftPackageImpl
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/util/SoftAdapterFactory.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/util/SoftAdapterFactory.java
new file mode 100644
index 00000000000..bc3e0895b25
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/util/SoftAdapterFactory.java
@@ -0,0 +1,176 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage
+ * @generated
+ */
+public class SoftAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static SoftPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SoftAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = SoftPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SoftSwitch<Adapter> modelSwitch =
+ new SoftSwitch<Adapter>() {
+ @Override
+ public Adapter caseSoftLayer(SoftLayer object) {
+ return createSoftLayerAdapter();
+ }
+ @Override
+ public Adapter caseSoft(Soft object) {
+ return createSoftAdapter();
+ }
+ @Override
+ public Adapter caseCommunication(Communication object) {
+ return createCommunicationAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftLayer <em>Layer</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftLayer
+ * @generated
+ */
+ public Adapter createSoftLayerAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft <em>Soft</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.Soft
+ * @generated
+ */
+ public Adapter createSoftAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.example.custo.cyber.soft.soft.Communication <em>Communication</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.Communication
+ * @generated
+ */
+ public Adapter createCommunicationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //SoftAdapterFactory
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/util/SoftSwitch.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/util/SoftSwitch.java
new file mode 100644
index 00000000000..49e1e9c27b2
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src-gen/org/eclipse/papyrus/example/custo/cyber/soft/soft/util/SoftSwitch.java
@@ -0,0 +1,172 @@
+/**
+ *
+ * Copyright (c) 2021 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Patrick Tessier (CEA LIST) - Initial API and implementation
+ *
+ */
+package org.eclipse.papyrus.example.custo.cyber.soft.soft.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.example.custo.cyber.soft.soft.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.example.custo.cyber.soft.soft.SoftPackage
+ * @generated
+ */
+public class SoftSwitch<T> extends Switch<T> {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final String copyright = "\n Copyright (c) 2021 CEA LIST.\n \n All rights reserved. This program and the accompanying materials\n are made available under the terms of the Eclipse Public License 2.0\n which accompanies this distribution, and is available at\n https://www.eclipse.org/legal/epl-2.0/\n \n SPDX-License-Identifier: EPL-2.0\n \n Contributors:\n \tPatrick Tessier \t(CEA LIST) - Initial API and implementation\n ";
+
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static SoftPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SoftSwitch() {
+ if (modelPackage == null) {
+ modelPackage = SoftPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case SoftPackage.SOFT_LAYER: {
+ SoftLayer softLayer = (SoftLayer)theEObject;
+ T result = caseSoftLayer(softLayer);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SoftPackage.SOFT: {
+ Soft soft = (Soft)theEObject;
+ T result = caseSoft(soft);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SoftPackage.COMMUNICATION: {
+ Communication communication = (Communication)theEObject;
+ T result = caseCommunication(communication);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Layer</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Layer</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSoftLayer(SoftLayer object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Soft</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Soft</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSoft(Soft object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Communication</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Communication</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCommunication(Communication object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //SoftSwitch
diff --git a/examples/custo/org.eclipse.papyrus.example.custo.cyber/src/org/eclipse/papyrus/example/custo/cyber/SOFTModelCreation.java b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src/org/eclipse/papyrus/example/custo/cyber/SOFTModelCreation.java
new file mode 100644
index 00000000000..cce7675a9ed
--- /dev/null
+++ b/examples/custo/org.eclipse.papyrus.example.custo.cyber/src/org/eclipse/papyrus/example/custo/cyber/SOFTModelCreation.java
@@ -0,0 +1,25 @@
+package org.eclipse.papyrus.example.custo.cyber;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.infra.architecture.commands.IModelCreationCommand;
+import org.eclipse.papyrus.uml.diagram.common.commands.ModelCreationCommandBase;
+import org.eclipse.papyrus.uml.tools.utils.PackageUtil;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.UMLFactory;
+public class SOFTModelCreation extends ModelCreationCommandBase implements IModelCreationCommand {
+ @Override
+ protected EObject createRootElement() {
+ return UMLFactory.eINSTANCE.createModel();
+ }
+ @Override
+ protected void initializeModel(EObject owner) {
+ super.initializeModel(owner);
+ Profile myProfileTest = (Profile) PackageUtil.loadPackage(URI.createURI("pathmap://PROFILE_CYBER/soft.profile.uml"), owner.eResource().getResourceSet());
+ if (myProfileTest != null) {
+ PackageUtil.applyProfile((Package) owner, myProfileTest, true);
+ }
+ }
+}
+
diff --git a/examples/pom.xml b/examples/pom.xml
index d0bca4b30c3..ff7c1c6dc15 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.eclipse.papyrus</groupId>
- <artifactId>org.eclipse.papyrus.releng</artifactId>
+ <artifactId>org.eclipse.papyrus.main.releng</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../releng/main/pom.xml</relativePath>
</parent>
diff --git a/features/papyrus-main-features/org.eclipse.papyrus.doc.feature/feature.xml b/features/papyrus-main-features/org.eclipse.papyrus.doc.feature/feature.xml
index 473d7b8bdee..65d32224398 100644
--- a/features/papyrus-main-features/org.eclipse.papyrus.doc.feature/feature.xml
+++ b/features/papyrus-main-features/org.eclipse.papyrus.doc.feature/feature.xml
@@ -277,6 +277,13 @@
install-size="0"
version="0.0.0"/>
+ <plugin
+ id="org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
<!--plugin
id="org.eclipse.papyrus.doctemplate.doc"
download-size="0"
diff --git a/features/papyrus-main-features/org.eclipse.papyrus.infra.nattable.feature/pom.xml b/features/papyrus-main-features/org.eclipse.papyrus.infra.nattable.feature/pom.xml
index 3b816531f10..e678548d784 100644
--- a/features/papyrus-main-features/org.eclipse.papyrus.infra.nattable.feature/pom.xml
+++ b/features/papyrus-main-features/org.eclipse.papyrus.infra.nattable.feature/pom.xml
@@ -1,10 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.eclipse.papyrus</groupId>
- <artifactId>org.eclipse.papyrus.features</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.features</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.papyrus.infra.nattable.feature</artifactId>
<version>4.0.0-SNAPSHOT</version>
diff --git a/features/papyrus-main-features/org.eclipse.papyrus.infra.services.feature/pom.xml b/features/papyrus-main-features/org.eclipse.papyrus.infra.services.feature/pom.xml
index 1875f142102..1fe20f2e817 100644
--- a/features/papyrus-main-features/org.eclipse.papyrus.infra.services.feature/pom.xml
+++ b/features/papyrus-main-features/org.eclipse.papyrus.infra.services.feature/pom.xml
@@ -1,10 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.eclipse.papyrus</groupId>
- <artifactId>org.eclipse.papyrus.features</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.features</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.papyrus.infra.services.feature</artifactId>
<version>3.0.0-SNAPSHOT</version>
diff --git a/features/papyrus-main-features/org.eclipse.papyrus.infra.ui.feature/feature.xml b/features/papyrus-main-features/org.eclipse.papyrus.infra.ui.feature/feature.xml
index 41e251a7421..c2a0c97585b 100644
--- a/features/papyrus-main-features/org.eclipse.papyrus.infra.ui.feature/feature.xml
+++ b/features/papyrus-main-features/org.eclipse.papyrus.infra.ui.feature/feature.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.eclipse.papyrus.infra.ui.feature"
- version="3.0.0.qualifier"
label="%featureName"
- provider-name="%providerName"
+ version="3.1.0.qualifier"
+ provider-name="%providerName"
license-feature="org.eclipse.license"
license-feature-version="2.0.2">
@@ -19,6 +19,10 @@
%license
</license>
+ <requires>
+ <import feature="org.eclipse.xwt.feature" version="1.6.0" match="greaterOrEqual"/>
+ </requires>
+
<plugin
id="org.eclipse.papyrus.infra.ui"
download-size="0"
diff --git a/features/papyrus-main-features/org.eclipse.papyrus.infra.ui.feature/pom.xml b/features/papyrus-main-features/org.eclipse.papyrus.infra.ui.feature/pom.xml
index 66cb26a91c3..9f921e530c2 100644
--- a/features/papyrus-main-features/org.eclipse.papyrus.infra.ui.feature/pom.xml
+++ b/features/papyrus-main-features/org.eclipse.papyrus.infra.ui.feature/pom.xml
@@ -1,12 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.eclipse.papyrus</groupId>
- <artifactId>org.eclipse.papyrus.features</artifactId>
- <version>0.0.1-SNAPSHOT</version>
+ <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.features</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.papyrus.infra.ui.feature</artifactId>
- <version>3.0.0-SNAPSHOT</version>
+ <version>3.1.0-SNAPSHOT</version>
<packaging>eclipse-feature</packaging>
</project> \ No newline at end of file
diff --git a/features/papyrus-main-features/org.eclipse.papyrus.sdk.feature/pom.xml b/features/papyrus-main-features/org.eclipse.papyrus.sdk.feature/pom.xml
index 5539407c97a..26783fc09ff 100644
--- a/features/papyrus-main-features/org.eclipse.papyrus.sdk.feature/pom.xml
+++ b/features/papyrus-main-features/org.eclipse.papyrus.sdk.feature/pom.xml
@@ -13,14 +13,15 @@
<build>
<plugins>
<plugin>
- <groupId>org.eclipse.tycho.extras</groupId>
- <artifactId>tycho-source-feature-plugin</artifactId>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
<executions>
<execution>
- <id>source-feature</id>
+ <id>feature-source</id>
<phase>package</phase>
<goals>
- <goal>source-feature</goal>
+ <goal>feature-source</goal>
</goals>
<configuration>
<excludes>
diff --git a/features/papyrus-main-features/pom.xml b/features/papyrus-main-features/pom.xml
index f6e105356b2..c92a674be86 100644
--- a/features/papyrus-main-features/pom.xml
+++ b/features/papyrus-main-features/pom.xml
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.eclipse.papyrus</groupId>
- <artifactId>org.eclipse.papyrus.releng</artifactId>
+ <artifactId>org.eclipse.papyrus.main.releng</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../../releng/main/pom.xml</relativePath>
</parent>
diff --git a/features/papyrus-tests-features/org.eclipse.papyrus.tests.toolsmiths.feature/feature.xml b/features/papyrus-tests-features/org.eclipse.papyrus.tests.toolsmiths.feature/feature.xml
index 6309bfd0b41..9e3b53f43a4 100644
--- a/features/papyrus-tests-features/org.eclipse.papyrus.tests.toolsmiths.feature/feature.xml
+++ b/features/papyrus-tests-features/org.eclipse.papyrus.tests.toolsmiths.feature/feature.xml
@@ -54,4 +54,11 @@
version="0.0.0"
unpack="false"/>
+ <plugin
+ id="org.eclipse.papyrus.toolsmiths.validation.newchild.tests"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
</feature>
diff --git a/features/papyrus-tests-features/org.eclipse.papyrus.tests.uml.feature/feature.xml b/features/papyrus-tests-features/org.eclipse.papyrus.tests.uml.feature/feature.xml
index 39893a9b03a..650259c9566 100644
--- a/features/papyrus-tests-features/org.eclipse.papyrus.tests.uml.feature/feature.xml
+++ b/features/papyrus-tests-features/org.eclipse.papyrus.tests.uml.feature/feature.xml
@@ -82,5 +82,12 @@
version="0.0.0"
unpack="false"/>
+ <plugin
+ id="org.eclipse.papyrus.uml.types.core.tests"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
</feature>
diff --git a/features/papyrus-toolsmiths-features/org.eclipse.papyrus.toolsmiths.validation.feature/feature.xml b/features/papyrus-toolsmiths-features/org.eclipse.papyrus.toolsmiths.validation.feature/feature.xml
index af8f9c724a6..d10e08d0683 100644
--- a/features/papyrus-toolsmiths-features/org.eclipse.papyrus.toolsmiths.validation.feature/feature.xml
+++ b/features/papyrus-toolsmiths-features/org.eclipse.papyrus.toolsmiths.validation.feature/feature.xml
@@ -46,6 +46,13 @@
install-size="0"
version="0.0.0"
unpack="false"/>
+
+ <plugin
+ id="org.eclipse.papyrus.toolsmiths.validation.newchild"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
<plugin
id="org.eclipse.papyrus.dev.ui"
diff --git a/features/papyrus-toolsmiths-features/pom.xml b/features/papyrus-toolsmiths-features/pom.xml
index 07da8b76f48..dc52058197c 100644
--- a/features/papyrus-toolsmiths-features/pom.xml
+++ b/features/papyrus-toolsmiths-features/pom.xml
@@ -3,8 +3,8 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.toolsmiths.releng</artifactId>
<groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.toolsmiths.releng</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../../releng/toolsmiths</relativePath>
</parent>
diff --git a/features/papyrus.user.examples-features/org.eclipse.papyrus.user.examples.feature/pom.xml b/features/papyrus.user.examples-features/org.eclipse.papyrus.user.examples.feature/pom.xml
index 2450ee97477..e9866d0f2d8 100644
--- a/features/papyrus.user.examples-features/org.eclipse.papyrus.user.examples.feature/pom.xml
+++ b/features/papyrus.user.examples-features/org.eclipse.papyrus.user.examples.feature/pom.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -15,13 +16,23 @@
<pluginManagement>
<plugins>
<plugin>
- <groupId>org.eclipse.tycho.extras</groupId>
- <artifactId>tycho-source-feature-plugin</artifactId>
- <configuration>
- <excludes>
- <plugin id="org.eclipse.upr.utp"/> <!-- UPR doesn't provide sources -->
- </excludes>
- </configuration>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <executions>
+ <execution>
+ <id>feature-source</id>
+ <phase>package</phase>
+ <goals>
+ <goal>feature-source</goal>
+ </goals>
+ <configuration>
+ <excludes>
+ <plugin id="org.eclipse.upr.utp" /> <!-- UPR doesn't provide sources -->
+ </excludes>
+ </configuration>
+ </execution>
+ </executions>
</plugin>
</plugins>
</pluginManagement>
diff --git a/features/papyrus.user.examples-features/pom.xml b/features/papyrus.user.examples-features/pom.xml
index b3d2733f338..0bb7ac45e4c 100644
--- a/features/papyrus.user.examples-features/pom.xml
+++ b/features/papyrus.user.examples-features/pom.xml
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.eclipse.papyrus</groupId>
- <artifactId>org.eclipse.papyrus.releng</artifactId>
+ <artifactId>org.eclipse.papyrus.main.releng</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../../releng/main/pom.xml</relativePath>
</parent>
diff --git a/plugins/doc/org.eclipse.papyrus.developer.doc/plugin.properties b/plugins/doc/org.eclipse.papyrus.developer.doc/plugin.properties
index 4ab7a77fdf9..49fd9bd7ccc 100644
--- a/plugins/doc/org.eclipse.papyrus.developer.doc/plugin.properties
+++ b/plugins/doc/org.eclipse.papyrus.developer.doc/plugin.properties
@@ -1,2 +1,4 @@
pluginName=Papyrus Search Documentation
-vendorName=Eclipse Modeling Project \ No newline at end of file
+vendorName=Eclipse Modeling Project
+
+doc.examples.name=Papyrus Developer Recipe Examples
diff --git a/plugins/doc/org.eclipse.papyrus.developer.doc/plugin.xml b/plugins/doc/org.eclipse.papyrus.developer.doc/plugin.xml
index 5516bdea82f..0832f197381 100644
--- a/plugins/doc/org.eclipse.papyrus.developer.doc/plugin.xml
+++ b/plugins/doc/org.eclipse.papyrus.developer.doc/plugin.xml
@@ -22,4 +22,12 @@
</toc>
</extension>
+ <extension point="org.eclipse.ui.newWizards">
+ <category
+ id="org.eclipse.papyrus.developer.doc.examples"
+ name="%doc.examples.name"
+ parentCategory="org.eclipse.ui.Examples">
+ </category>
+ </extension>
+
</plugin>
diff --git a/plugins/doc/org.eclipse.papyrus.infra.doc/.classpath b/plugins/doc/org.eclipse.papyrus.infra.doc/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.infra.doc/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/doc/org.eclipse.papyrus.infra.doc/META-INF/MANIFEST.MF b/plugins/doc/org.eclipse.papyrus.infra.doc/META-INF/MANIFEST.MF
index cd698294ef9..ceaea967b89 100644
--- a/plugins/doc/org.eclipse.papyrus.infra.doc/META-INF/MANIFEST.MF
+++ b/plugins/doc/org.eclipse.papyrus.infra.doc/META-INF/MANIFEST.MF
@@ -5,4 +5,9 @@ Bundle-Name: %Bundle-Name
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.papyrus.infra.doc;singleton:=true
Bundle-RequiredExecutionEnvironment: JavaSE-11
+Bundle-ClassPath: .
Automatic-Module-Name: org.eclipse.papyrus.infra.doc
+Require-Bundle: org.eclipse.help.webapp;bundle-version="[3.10.0,4.0.0)"
+Import-Package: javax.servlet;version="[4.0.0,5.0.0)",
+ javax.servlet.http;version="[4.0.0,5.0.0)"
+Export-Package: org.eclipse.papyrus.infra.doc.internal.filters;x-internal:=true
diff --git a/plugins/doc/org.eclipse.papyrus.infra.doc/build.properties b/plugins/doc/org.eclipse.papyrus.infra.doc/build.properties
index 7243208e2c4..a49c939c603 100644
--- a/plugins/doc/org.eclipse.papyrus.infra.doc/build.properties
+++ b/plugins/doc/org.eclipse.papyrus.infra.doc/build.properties
@@ -3,5 +3,8 @@ bin.includes = META-INF/,\
OSGI-INF/,\
toc.xml,\
about.html,\
- resource/
+ resource/,\
+ .
src.includes = about.html
+source.. = src/
+output.. = bin/
diff --git a/plugins/doc/org.eclipse.papyrus.infra.doc/plugin.xml b/plugins/doc/org.eclipse.papyrus.infra.doc/plugin.xml
index c3d81ff54f4..98eb7c5e4fb 100644
--- a/plugins/doc/org.eclipse.papyrus.infra.doc/plugin.xml
+++ b/plugins/doc/org.eclipse.papyrus.infra.doc/plugin.xml
@@ -9,4 +9,11 @@
primary="true">
</toc>
</extension>
+ <extension
+ point="org.eclipse.help.webapp.contentFilter">
+ <filter
+ class="org.eclipse.papyrus.infra.doc.internal.filters.PapyrusContentFilter"
+ priority="1">
+ </filter>
+ </extension>
</plugin>
diff --git a/plugins/doc/org.eclipse.papyrus.infra.doc/resource/stylesheet.css b/plugins/doc/org.eclipse.papyrus.infra.doc/resource/stylesheet.css
index 80cdc5c76bd..7b54c50b05d 100644
--- a/plugins/doc/org.eclipse.papyrus.infra.doc/resource/stylesheet.css
+++ b/plugins/doc/org.eclipse.papyrus.infra.doc/resource/stylesheet.css
@@ -1,8 +1,21 @@
h1 {
- font-weight:darkblue
+ color: darkblue;
+}
+
+h1, h2, h3, h4 {
+ font-family: Georgia, Garamond, serif;
+}
+
+/* Papyrus banner logo. */
+.papyrus-banner {
+ float: right;
+ margin-top: -2em;
+ margin-bottom: -2em;
+ padding-left: 2em;
+ padding-right: 1em;
+ clear: both;
}
body {
- background: url(PapyrusLeftBanner.gif) left no-repeat fixed;
- padding-left: 300px;
-} \ No newline at end of file
+ font-family: Helvetica, Verdana, sans-serif;
+}
diff --git a/plugins/doc/org.eclipse.papyrus.infra.doc/src/org/eclipse/papyrus/infra/doc/internal/filters/HTMLHeadAndBodyInjectionStream.java b/plugins/doc/org.eclipse.papyrus.infra.doc/src/org/eclipse/papyrus/infra/doc/internal/filters/HTMLHeadAndBodyInjectionStream.java
new file mode 100644
index 00000000000..1a35aa36f87
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.infra.doc/src/org/eclipse/papyrus/infra/doc/internal/filters/HTMLHeadAndBodyInjectionStream.java
@@ -0,0 +1,178 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.doc.internal.filters;
+
+import java.io.FilterOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.ByteBuffer;
+
+/**
+ * An output stream that injects content before the close of the {@code <HEAD>}
+ * element and at the beginning of the {@code <BODY>} element of the page.
+ */
+public class HTMLHeadAndBodyInjectionStream extends FilterOutputStream {
+
+ private final OutputStream output;
+ private final ByteBuffer currentTag;
+ private final String encoding;
+ private final String headContent;
+ private final String bodyContent;
+
+ private boolean scanningTag;
+ private boolean done;
+
+ /**
+ * Initializes me with head and/or body content to inject. Having neither is pointless.
+ * It is best that the strings provided comprise just 7-bit ASCII characters for maximal
+ * encoding compatibility.
+ *
+ * @param out
+ * the output stream to inject into
+ * @param encoding
+ * the encoding (character set) of the content of the output stream
+ * @param headContent
+ * content to inject just before the closing {@link </HEAD>} tag, or {@code null} if none
+ * @param bodyContent
+ * content to inject just after the opening {@link <BODY>} tag, or {@code null} if none
+ */
+ public HTMLHeadAndBodyInjectionStream(OutputStream out, String encoding, String headContent, String bodyContent) {
+ super(out);
+
+ this.output = out;
+ this.currentTag = ByteBuffer.allocate(1024);
+ this.encoding = encoding == null ? "ASCII" : encoding;
+ this.headContent = headContent;
+ this.bodyContent = bodyContent;
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ if (done) {
+ super.write(b);
+ return;
+ }
+
+ switch (b) {
+ case '<':
+ // Opening a tag
+ currentTag.clear();
+ scanningTag = true;
+ break;
+ case '?':
+ case '!':
+ // Processing instruction or comment. Bail
+ if (scanningTag) {
+ emitCurrentTag();
+ scanningTag = false;
+ }
+ break;
+ case '>':
+ if (scanningTag && appendCurrentTag(b)) {
+ if (isHeadClose()) {
+ injectHead();
+ // Stop now if there will be no body injection
+ done = bodyContent == null;
+ } else if (isBodyOpen()) {
+ injectBody();
+ // There is nothing to do after body injection
+ done = true;
+ } else {
+ // It's not a tag of interest. Emit it now
+ emitCurrentTag();
+ }
+ scanningTag = false;
+ return; // We already emitted the incoming '>'
+ }
+ break;
+ }
+
+ if (scanningTag) {
+ appendCurrentTag(b);
+ } else {
+ super.write(b);
+ }
+ }
+
+ private boolean appendCurrentTag(int b) throws IOException {
+ if (currentTag.hasRemaining()) {
+ currentTag.put((byte) b);
+ return true;
+ } else {
+ // Bail on this tag: if it's this long, we don't want it
+ emitCurrentTag();
+ scanningTag = false;
+ super.write(b);
+ return false;
+ }
+ }
+
+ private void emitCurrentTag() throws IOException {
+ currentTag.flip();
+ out.write(currentTag.array(), currentTag.position(), currentTag.remaining());
+ }
+
+ /**
+ * Is the current tag the closing tag of the head?
+ */
+ final boolean isHeadClose() {
+ byte b;
+ return currentTag.position() >= 7
+ && (b = currentTag.get(0)) == '<'
+ && (b = currentTag.get(1)) == '/'
+ && ((b = currentTag.get(2)) == 'h' || b == 'H')
+ && ((b = currentTag.get(3)) == 'e' || b == 'E')
+ && ((b = currentTag.get(4)) == 'a' || b == 'A')
+ && ((b = currentTag.get(5)) == 'd' || b == 'D')
+ && ((b = currentTag.get(6)) == '>' || b == ' ' || b == '\t' || b == '\r' || b == '\n');
+ }
+
+ /**
+ * Is the current tag the opening tag of the body?
+ */
+ final boolean isBodyOpen() {
+ byte b;
+ return currentTag.position() >= 6
+ && (b = currentTag.get(0)) == '<'
+ && ((b = currentTag.get(1)) == 'b' || b == 'B')
+ && ((b = currentTag.get(2)) == 'o' || b == 'O')
+ && ((b = currentTag.get(3)) == 'd' || b == 'D')
+ && ((b = currentTag.get(4)) == 'y' || b == 'Y')
+ && ((b = currentTag.get(5)) == '>' || b == ' ' || b == '\t' || b == '\r' || b == '\n');
+ }
+
+ private void injectHead() throws IOException {
+ if (headContent != null) {
+ emit(headContent);
+ output.write('\n');
+ }
+ emitCurrentTag(); // The head close
+ }
+
+ private void injectBody() throws IOException {
+ emitCurrentTag(); // The body open
+ if (bodyContent != null) {
+ emit(bodyContent);
+ output.write('\n');
+ }
+ }
+
+ private void emit(String content) throws IOException {
+ byte[] toEmit = content.getBytes(encoding);
+ output.write(toEmit);
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.infra.doc/src/org/eclipse/papyrus/infra/doc/internal/filters/PapyrusContentFilter.java b/plugins/doc/org.eclipse.papyrus.infra.doc/src/org/eclipse/papyrus/infra/doc/internal/filters/PapyrusContentFilter.java
new file mode 100644
index 00000000000..a0538123c9a
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.infra.doc/src/org/eclipse/papyrus/infra/doc/internal/filters/PapyrusContentFilter.java
@@ -0,0 +1,62 @@
+package org.eclipse.papyrus.infra.doc.internal.filters;
+
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.eclipse.help.webapp.IFilter;
+
+/**
+ * A dynamic help content filter that injects into Papyrus help pages the following elements.
+ * <ul>
+ * <li>the stylesheet defined in this bundle, in the head section</li>
+ * <li>the Papyrus Logo banner image in this bundle, at the top of the body section</li>
+ * </ul>
+ */
+public class PapyrusContentFilter implements IFilter {
+
+ @SuppressWarnings("nls")
+ private static final String[] STYLESHEET_PATH = { "help", "topic", "org.eclipse.papyrus.infra.doc", "resource", "stylesheet.css" };
+
+ @SuppressWarnings("nls")
+ private static final String[] BANNER_PATH = { "help", "topic", "org.eclipse.papyrus.infra.doc", "resource", "PapyrusLeftBanner.gif" };
+
+ @Override
+ public OutputStream filter(HttpServletRequest req, OutputStream out) {
+ if (req.getRequestURI().startsWith("/help/topic/org.eclipse.papyrus.")) { //$NON-NLS-1$
+ String[] reqPath = req.getRequestURI().substring(1).split("/"); //$NON-NLS-1$
+
+ String cssPath = String.join("/", relativize(STYLESHEET_PATH, reqPath)); //$NON-NLS-1$
+ String headContent = String.format("<link href=\"%s\" rel=\"stylesheet\" type=\"text/css\"/>", cssPath); //$NON-NLS-1$
+
+ String bannerPath = String.join("/", relativize(BANNER_PATH, reqPath)); //$NON-NLS-1$
+ String bodyContent = String.format("<img src=\"%s\" alt=\"Papyrus Banner\" class=\"papyrus-banner\"/>", bannerPath); //$NON-NLS-1$
+
+ return new HTMLHeadAndBodyInjectionStream(out, req.getCharacterEncoding(), headContent, bodyContent);
+ }
+
+ return out;
+ }
+
+ static String[] relativize(String[] path, String[] base) {
+ int i, j;
+ for (i = 0, j = 0; i < path.length && j < base.length; i++, j++) {
+ if (!path[i].equals(base[j])) {
+ break;
+ }
+ }
+
+ List<String> result = new ArrayList<>(base.length);
+ for (j++; j < base.length; j++) {
+ result.add(".."); //$NON-NLS-1$
+ }
+ for (; i < path.length; i++) {
+ result.add(path[i]);
+ }
+
+ return result.toArray(String[]::new);
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.classpath b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.classpath
new file mode 100644
index 00000000000..e32aedbbfe0
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.classpath
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+ <attributes>
+ <attribute name="maven.pomderived" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.project b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.project
new file mode 100644
index 00000000000..9b20dd77950
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.project
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.oomph.version.VersionBuilder</name>
+ <arguments>
+ <dictionary>
+ <key>check.maven.pom</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>ignore.lower.bound.dependency.ranges</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>release.path</key>
+ <value>/org.eclipse.papyrus.releng.main.release/release.xml</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.m2e.core.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.m2e.core.maven2Nature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.oomph.version.VersionNature</nature>
+ <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.jdt.core.prefs b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 00000000000..bf29203170e
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,314 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=260
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=260
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=5
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.jdt.ui.prefs b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..ba7542ef658
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Papyrus
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Papyrus
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * Constructor.\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*****************************************************************************\n * Copyright (c) ${year} CEA LIST and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License 2.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n *\n * Contributors\:\n * CEA LIST - Initial API and implementation\n * \n *****************************************************************************/\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * ${see_to_overridden}\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${see_to_target}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.m2e.core.prefs b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 00000000000..f897a7f1cb2
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/META-INF/MANIFEST.MF b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..f5a3505ac81
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc;singleton:=true
+Bundle-Version: 2.0.0.qualifier
+Automatic-Module-Name: org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc
+Bundle-Vendor: %pluginVendor
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.emf.common.ui;bundle-version="[2.18.0,3.0.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-11
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/about.html b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/about.html
new file mode 100644
index 00000000000..ef2872f2845
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 30, 2017</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="https://www.eclipse.org/legal/epl-2.0/">https://www.eclipse.org/legal/epl-2.0/</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/build.properties b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/build.properties
new file mode 100644
index 00000000000..11c8a99197b
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/build.properties
@@ -0,0 +1,9 @@
+bin.includes = META-INF/,\
+ about.html,\
+ plugin.xml,\
+ target/generated-eclipse-help/**,\
+ examples/,\
+ plugin.properties,\
+ icons/
+src.includes = about.html,\
+ src/site/mediawiki/
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.classpath b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.classpath
new file mode 100644
index 00000000000..e801ebfb468
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.project b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.project
new file mode 100644
index 00000000000..dde07ba911b
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.toolsmiths.example.umlformetamodels</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.papyrus.plugin.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.papyrus.plugin.nature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.runtime.prefs b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.runtime.prefs
new file mode 100644
index 00000000000..5a0ad22d2a7
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.core.runtime.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+line.separator=\n
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.core.prefs b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.core.prefs
new file mode 100755
index 00000000000..037f04a07c2
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,319 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=11
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=11
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_bitwise_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_logical_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_multiplicative_operator=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=true
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true
+org.eclipse.jdt.core.formatter.comment.format_source_code=true
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert
+org.eclipse.jdt.core.formatter.comment.line_length=260
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_after_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_bitwise_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert
+org.eclipse.jdt.core.formatter.insert_space_before_logical_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_relational_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_shift_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=false
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=260
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=5
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=tab
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.ui.prefs b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 00000000000..ba7542ef658
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,127 @@
+cleanup.add_default_serial_version_id=true
+cleanup.add_generated_serial_version_id=false
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_missing_override_annotations_interface_methods=true
+cleanup.add_serial_version_id=false
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_functional_interfaces=false
+cleanup.convert_to_enhanced_for_loop=false
+cleanup.correct_indentation=false
+cleanup.format_source_code=false
+cleanup.format_source_code_changes_only=false
+cleanup.insert_inferred_type_arguments=false
+cleanup.make_local_variable_final=true
+cleanup.make_parameters_final=false
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=false
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=false
+cleanup.qualify_static_field_accesses_with_declaring_class=false
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=false
+cleanup.remove_private_constructors=true
+cleanup.remove_redundant_type_arguments=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=false
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_anonymous_class_creation=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_lambda=true
+cleanup.use_parentheses_in_expressions=false
+cleanup.use_this_for_non_static_field_access=false
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=false
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup.use_type_arguments=false
+cleanup_profile=_Papyrus
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_Papyrus
+formatter_settings_version=12
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;org;com;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.ondemandthreshold=99
+org.eclipse.jdt.ui.staticondemandthreshold=99
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * Constructor.\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*****************************************************************************\n * Copyright (c) ${year} CEA LIST and others.\n * \n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License 2.0\n * which accompanies this distribution, and is available at\n * http\://www.eclipse.org/legal/epl-2.0/\n *\n * SPDX-License-Identifier: EPL-2.0\n *\n * Contributors\:\n * CEA LIST - Initial API and implementation\n * \n *****************************************************************************/\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * @author ${user}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/**\n * ${see_to_overridden}\n *\n * ${tags}\n */</template><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${see_to_target}\n *\n * ${tags}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=true
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_functional_interfaces=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.insert_inferred_type_arguments=false
+sp_cleanup.make_local_variable_final=true
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_redundant_modifiers=false
+sp_cleanup.remove_redundant_type_arguments=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=true
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_anonymous_class_creation=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=false
+sp_cleanup.use_lambda=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.pde.api.tools.prefs b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.pde.api.tools.prefs
new file mode 100644
index 00000000000..b2260f87129
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/.settings/org.eclipse.pde.api.tools.prefs
@@ -0,0 +1,104 @@
+ANNOTATION_ELEMENT_TYPE_ADDED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
+ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
+ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Warning
+API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
+API_USE_SCAN_FIELD_SEVERITY=Error
+API_USE_SCAN_METHOD_SEVERITY=Error
+API_USE_SCAN_TYPE_SEVERITY=Error
+CLASS_ELEMENT_TYPE_ADDED_FIELD=Warning
+CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
+CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
+CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
+CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
+CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
+ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
+ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
+ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+FIELD_ELEMENT_TYPE_ADDED_VALUE=Warning
+FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
+FIELD_ELEMENT_TYPE_CHANGED_VALUE=Warning
+FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
+FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
+ILLEGAL_EXTEND=Warning
+ILLEGAL_IMPLEMENT=Warning
+ILLEGAL_INSTANTIATE=Warning
+ILLEGAL_OVERRIDE=Warning
+ILLEGAL_REFERENCE=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_DEFAULT_METHOD=Warning
+INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Ignore
+INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
+INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
+INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
+INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+INVALID_ANNOTATION=Ignore
+INVALID_JAVADOC_TAG=Ignore
+INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
+LEAK_EXTEND=Warning
+LEAK_FIELD_DECL=Warning
+LEAK_IMPLEMENT=Warning
+LEAK_METHOD_PARAM=Warning
+LEAK_METHOD_RETURN_TYPE=Warning
+METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
+METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
+METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
+METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
+METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
+METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
+METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
+MISSING_EE_DESCRIPTIONS=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
+TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
+UNUSED_PROBLEM_FILTERS=Warning
+automatically_removed_unused_problem_filters=Enabled
+changed_execution_env=Warning
+eclipse.preferences.version=1
+incompatible_api_component_version=Warning
+incompatible_api_component_version_include_major_without_breaking_change=Disabled
+incompatible_api_component_version_include_minor_without_api_change=Disabled
+incompatible_api_component_version_report_major_without_breaking_change=Error
+incompatible_api_component_version_report_minor_without_api_change=Error
+invalid_since_tag_version=Error
+malformed_since_tag=Error
+missing_since_tag=Error
+report_api_breakage_when_major_version_incremented=Disabled
+report_resolution_errors_api_component=Warning
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/META-INF/MANIFEST.MF b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..6d73acb9019
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/META-INF/MANIFEST.MF
@@ -0,0 +1,33 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: UML for Metamodels
+Bundle-SymbolicName: org.eclipse.papyrus.toolsmiths.example.umlformetamodels;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse Modeling Project
+Automatic-Module-Name: org.eclipse.papyrus.toolsmiths.example.umlformetamodels
+Bundle-RequiredExecutionEnvironment: JavaSE-11
+Require-Bundle: org.eclipse.papyrus.infra.core;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.papyrus.infra.architecture;bundle-version="[3.0.0,4.0.0)",
+ org.eclipse.papyrus.infra.emf.types;bundle-version="[5.0.0,6.0.0)",
+ org.eclipse.papyrus.infra.types.core;bundle-version="[5.0.0,6.0.0)",
+ org.eclipse.papyrus.infra.types;bundle-version="[5.0.0,6.0.0)",
+ org.eclipse.uml2.uml;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.uml2.uml.profile.standard;bundle-version="[1.5.0,2.0.0)",
+ org.eclipse.uml2.uml.resources;bundle-version="[5.5.0,6.0.0)",
+ org.eclipse.papyrus.uml.architecture;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.uml.diagram.common;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.papyrus.uml.diagram.clazz;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.gmf.runtime.emf.type.core;bundle-version="[1.9.0,2.0.0)",
+ org.eclipse.papyrus.infra.services.edit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.papyrus.infra.core.log;bundle-version="[2.0.0,3.0.0)",
+ org.eclipse.papyrus.infra.newchild;bundle-version="[5.0.0,6.0.0)",
+ org.eclipse.papyrus.infra.emf;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.papyrus.uml.service.types;bundle-version="[5.0.0,6.0.0)",
+ org.eclipse.ui;bundle-version="[3.100.0,4.0.0)"
+Bundle-ActivationPolicy: lazy
+Bundle-Activator: org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.Activator
+Export-Package: org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal;x-internal:=true,
+ org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice;x-internal:=true,
+ org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.commands;x-internal:=true,
+ org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers;x-internal:=true,
+ org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.types;x-internal:=true
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/build.properties b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/build.properties
new file mode 100644
index 00000000000..262d8c4f16e
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ icons/,\
+ model/
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.png
new file mode 100644
index 00000000000..caf940ec3fb
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels@2x.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels@2x.png
new file mode 100644
index 00000000000..35463d8923e
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels@2x.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey.png
new file mode 100644
index 00000000000..1ddb1403b7a
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey@2x.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey@2x.png
new file mode 100644
index 00000000000..4ecd2a53246
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey@2x.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.architecture b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.architecture
new file mode 100644
index 00000000000..a1c9e028e90
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.architecture
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDomain xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:elementtypesconfigurations="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2" xmlns:gmfdiagrepresentation="http://www.eclipse.org/papyrus/infra/gmfdiag/representation" xmlns:nattablerepresentation="http://www.eclipse.org/papyrus/infra/nattable/representation" xmlns:paletteconfiguration="http://www.eclipse.org/papyrus/diagram/paletteconfiguration/0.8" xmlns:representation="http://www.eclipse.org/papyrus/infra/core/architecture/representation" xmi:id="_x497gHbLEeuDcqwoKFAHeg" id="org.eclipse.papyrus.toolsmiths.example.uml" name="UML" description="Architecture domain for the Toolsmiths element types customization example." icon="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.png">
+ <stakeholders xmi:type="architecture:Stakeholder" xmi:id="_Ic8M0HbOEeuDcqwoKFAHeg" id="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.domainarchitect" name="Domain Architect" concerns="_Pr-mYHbOEeuDcqwoKFAHeg"/>
+ <concerns xmi:type="architecture:Concern" xmi:id="_Pr-mYHbOEeuDcqwoKFAHeg" id="org.eclipse.papyrus.toolsmiths.example.uml4metamodels.metamodeling" name="Model Description"/>
+ <contexts xmi:type="architecture:ArchitectureDescriptionLanguage" xmi:id="_RudmEHbPEeuDcqwoKFAHeg" id="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.uml" name="UML" description="Extension of the UML context for addition of metamodel diagrams.">
+ <extendedContexts xmi:type="architecture:ArchitectureDescriptionLanguage" href="platform:/plugin/org.eclipse.papyrus.uml.architecture/model/uml.architecture#_HQhf5cSYEeaKZJ_pGfaSiA"/>
+ <representationKinds xmi:type="gmfdiagrepresentation:PapyrusDiagram" xmi:id="_BvPT0HbQEeuDcqwoKFAHeg" id="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.classdiagram" name="Class Diagram" description="Diagram for visualization of the metaclasses in a metamodel." icon="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.png" concerns="_Pr-mYHbOEeuDcqwoKFAHeg" grayedIcon="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels_grey.png" implementationID="PapyrusUMLClassDiagram" creationCommandClass="org.eclipse.papyrus.uml.diagram.clazz.CreateClassDiagramCommand">
+ <parent xmi:type="gmfdiagrepresentation:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrus.uml.architecture/model/uml.architecture#_zzf4gHDtEeWh-MssWmCB_A"/>
+ <modelRules xmi:type="representation:ModelRule" xmi:id="_q1AXQHbQEeuDcqwoKFAHeg" permit="true" elementMultiplicity="1" multiplicity="-1">
+ <element xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Model"/>
+ <stereotypes xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#//Metamodel"/>
+ </modelRules>
+ <modelRules xmi:type="representation:ModelRule" xmi:id="_80GaEHbQEeuDcqwoKFAHeg" permit="false" elementMultiplicity="1" multiplicity="-1"/>
+ <owningRules xmi:type="representation:OwningRule" xmi:id="_3SfLoHbQEeuDcqwoKFAHeg" permit="true" multiplicity="-1">
+ <element xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Model"/>
+ <stereotypes xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#//Metamodel"/>
+ </owningRules>
+ <owningRules xmi:type="representation:OwningRule" xmi:id="_-hGucHbQEeuDcqwoKFAHeg" permit="false" multiplicity="-1"/>
+ <childRules xmi:type="gmfdiagrepresentation:ChildRule" xmi:id="_DnQv8HbREeuDcqwoKFAHeg" permit="true">
+ <element xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
+ <stereotypes xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#//Metaclass"/>
+ <origin xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package"/>
+ </childRules>
+ <childRules xmi:type="gmfdiagrepresentation:ChildRule" xmi:id="_CGiHkHbSEeuDcqwoKFAHeg" permit="true">
+ <element xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Enumeration"/>
+ <origin xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package"/>
+ </childRules>
+ <childRules xmi:type="gmfdiagrepresentation:ChildRule" xmi:id="_GLP6MHbSEeuDcqwoKFAHeg" permit="true">
+ <element xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//PrimitiveType"/>
+ <origin xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package"/>
+ </childRules>
+ <childRules xmi:type="gmfdiagrepresentation:ChildRule" xmi:id="_lFhaAHbSEeuDcqwoKFAHeg" permit="true">
+ <element xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Operation"/>
+ <origin xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
+ </childRules>
+ <childRules xmi:type="gmfdiagrepresentation:ChildRule" xmi:id="_uUPzYHbSEeuDcqwoKFAHeg" permit="true">
+ <element xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Property"/>
+ <origin xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Class"/>
+ </childRules>
+ <childRules xmi:type="gmfdiagrepresentation:ChildRule" xmi:id="_Hs03IHbREeuDcqwoKFAHeg" permit="true">
+ <element xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Association"/>
+ <origin xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Package"/>
+ </childRules>
+ <childRules xmi:type="gmfdiagrepresentation:ChildRule" xmi:id="_Kf40oHbREeuDcqwoKFAHeg" permit="true">
+ <element xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Comment"/>
+ </childRules>
+ <childRules xmi:type="gmfdiagrepresentation:ChildRule" xmi:id="_MNHLcHbREeuDcqwoKFAHeg" permit="true">
+ <element xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Constraint"/>
+ </childRules>
+ <childRules xmi:type="gmfdiagrepresentation:ChildRule" xmi:id="_OmbMMHbREeuDcqwoKFAHeg" permit="false"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_gDfNwHqnEeuIfv0MDvLk4Q" permit="true" element="clazz.group.*"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_YYjNkHbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.enumeration"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_OBWTwHbSEeuDcqwoKFAHeg" permit="true" element="clazz.tool.enumerationliteral"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_bDQgUHbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.primitivetype"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_fQxCkHbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.property"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_glhPAHbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.operation"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_33GfIHbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.comment"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_5EdqIHbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.constraint"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_dmXzgIEoEeuOUNvhQpQdnw" permit="true" element="clazz.tool.generalization"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_kRH-EHbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.association"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_llcFoHbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.associationdirected"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_u149UHbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.associationcompositedirected"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_0hYggHbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.contextlink"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_2aTJ8HbREeuDcqwoKFAHeg" permit="true" element="clazz.tool.link"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_7C8wEHbREeuDcqwoKFAHeg" permit="false" element="clazz.*"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_Oa4GYHqpEeu8_8hL9mwh4Q" permit="false" element="createDurationObservation7CreationTool"/>
+ <paletteRules xmi:type="gmfdiagrepresentation:PaletteRule" xmi:id="_nkZvkHqpEeuM6pKXEszMOQ" permit="false" element="createTimeObservation22CreationTool"/>
+ <palettes xmi:type="paletteconfiguration:PaletteConfiguration" href="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.paletteconfiguration#/"/>
+ <palettes xmi:type="paletteconfiguration:PaletteConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.diagram.clazz/model/PapyrusUMLClassDiagram.paletteconfiguration#/"/>
+ </representationKinds>
+ <metamodel xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML#/"/>
+ <profiles xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
+ </contexts>
+ <contexts xmi:type="architecture:ArchitectureFramework" xmi:id="_a4jMgHbOEeuDcqwoKFAHeg" id="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.metamodels" name="Metamodels" description="Architecture framework for the description of models (creating metamodels) using UML." icon="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.png" defaultViewpoints="_9greIHbOEeuDcqwoKFAHeg" extensionPrefix="metamodel" creationCommandClass="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.commands.CreateUMLMetamodelCommand">
+ <viewpoints xmi:type="architecture:ArchitectureViewpoint" xmi:id="_9greIHbOEeuDcqwoKFAHeg" id="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.metamodeling" name="Metamodel Definition" description="UML for definition of metamodels." icon="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/icons/full/obj16/uml4metamodels.png" concerns="_Pr-mYHbOEeuDcqwoKFAHeg">
+ <representationKinds xmi:type="gmfdiagrepresentation:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.architecture#_BvPT0HbQEeuDcqwoKFAHeg"/>
+ <representationKinds xmi:type="nattablerepresentation:PapyrusTable" href="platform:/plugin/org.eclipse.papyrus.uml.architecture/model/uml.architecture#_P3J1cEb7EeRVGbM3cmVSqQ"/>
+ <representationKinds xmi:type="nattablerepresentation:PapyrusTable" href="platform:/plugin/org.eclipse.papyrus.uml.architecture/model/uml.architecture#_Uz8agHDcEeWh-MssWmCB_A"/>
+ <representationKinds xmi:type="nattablerepresentation:PapyrusTable" href="platform:/plugin/org.eclipse.papyrus.uml.architecture/model/uml.architecture#_P3J1cEa7EeSVGbM3cmVSqQ"/>
+ </viewpoints>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations#_jQGNoHbLEeuDcqwoKFAHeg"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels_di.elementtypesconfigurations#_jQGNoHbLEeuDcqwoKFAHeg"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.infra.emf/model/infra-emf.elementtypesconfigurations#_rWI4YHPzEeSnGJwaJWHCSg"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.infra.gmfdiag.common/model/gmfdiag-common.elementtypesconfigurations#_rWI4YHPzEeSnGJwaJWHCSg"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.infra.services.edit/model/marker.elementtypesconfigurations#_rWI4YHPzEeSnGJwaJWHCSg"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.infra.gmfdiag.common/model/notation.elementtypesconfigurations#_ScP1oFYCEeS0WsAAtVmToA"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.infra.types.rulebased/model/rulebased.elementtypesconfigurations#_ScP1oFYCEeS0WsAAtVmToA"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/StandardProfile.elementtypesconfigurations#_jfoLkGT_EeSEqNuV3JpFCA"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#_ScP1oFYCEeS0WsAAtVmToA"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types.ui/model/uml-advice.elementtypesconfigurations#_ScP1oFYCEeS0WsAAtVmToA"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml-containments.elementtypesconfigurations#_ScP1oFYCEeS0WsAAtVmToA"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/umldi.elementtypesconfigurations#_ScP1oFYCEeS0WsAAtVmToA"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.diagram.clazz/model/classdiagram.elementtypesconfigurations#_rWI4YHPzEeSnGJwaJWHCSg"/>
+ <elementTypes xmi:type="elementtypesconfigurations:ElementTypeSetConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.diagram.stereotype.edition/model/stereotype-edit.elementtypesconfigurations#_ScP1oFYCEeS0WsAAtVmToA"/>
+ </contexts>
+</architecture:ArchitectureDomain>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.creationmenumodel b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.creationmenumodel
new file mode 100644
index 00000000000..4086d51537a
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.creationmenumodel
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ElementCreationMenuModel:Folder xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ElementCreationMenuModel="http://www.eclipse.org/papyrus/infra/newchild/elementcreationmenumodel" xmlns:elementtypesconfigurations="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2" label="New Child">
+ <menu xsi:type="ElementCreationMenuModel:CreationMenu" label="Metaclass" icon="platform:/plugin/org.eclipse.uml2.uml.edit/icons/full/obj16/Class.gif" role="packagedElement">
+ <elementType xsi:type="elementtypesconfigurations:SpecializationTypeConfiguration" href="uml4metamodels.elementtypesconfigurations#_WtT9UHbdEeuKjtUyU4RltQ"/>
+ </menu>
+</ElementCreationMenuModel:Folder>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations
new file mode 100644
index 00000000000..fab0778d63e
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<elementtypesconfigurations:ElementTypeSetConfiguration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:constraints="http://www.eclipse.org/Papyrus/2021/types/constraints" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:elementtypesconfigurations="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2" xmlns:filters="http://www.eclipse.org/Papyrus/2014/common/filters" xmlns:setvaluesadvice="http://www.eclipse.org/papyrus/emf/types/setvaluesadvice/1.1" xmlns:stereotypematcher="http://www.eclipse.org/papyrus/uml/types/stereotypematcher/1.1" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_jQGNoHbLEeuDcqwoKFAHeg" description="Element types for the UML for Metamodels language customization." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels" name="UML for Metamodels" metamodelNsURI="http://www.eclipse.org/uml2/5.0.0/UML">
+ <adviceBindingsConfigurations xmi:type="constraints:ConstraintAdviceConfiguration" xmi:id="_fcf3YIEXEeu-otVmyAgEnA" description="Advice constraining the permitted ends of generalizations in metamodels (for reorientation scenario)." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.generalizationAdvice" inheritance="all">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Generalization"/>
+ <constraint xmi:type="constraints:RelationshipConstraint" xmi:id="_fcf3YYEXEeu-otVmyAgEnA">
+ <permission xmi:type="constraints:EndPermission" xmi:id="_fcf3YoEXEeu-otVmyAgEnA" permitted="true">
+ <endFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_fcf3Y4EXEeu-otVmyAgEnA" elementType="_WtT9UHbdEeuKjtUyU4RltQ" relationship="subtype"/>
+ </permission>
+ <permission xmi:type="constraints:EndPermission" xmi:id="_fcf3ZIEXEeu-otVmyAgEnA" permitted="false"/>
+ </constraint>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="constraints:ConstraintAdviceConfiguration" xmi:id="_LGTWMH3pEeukW81Gg1z4fw" description="Advice constraining the permitted ends of associations in metamodels (for reorientation scenario)." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.associationAdvice" inheritance="all">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.AssociationBase"/>
+ <constraint xmi:type="constraints:RelationshipConstraint" xmi:id="_XKPCIH3pEeukW81Gg1z4fw">
+ <permission xmi:type="constraints:EndPermission" xmi:id="_Zg-3EH3pEeukW81Gg1z4fw" permitted="true">
+ <endFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_5tN7wH3uEeuy-K5tzYZpCQ" elementType="_WtT9UHbdEeuKjtUyU4RltQ" relationship="subtype"/>
+ </permission>
+ <permission xmi:type="constraints:EndPermission" xmi:id="_fNAlwH3pEeukW81Gg1z4fw" permitted="false"/>
+ </constraint>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="constraints:ConstraintAdviceConfiguration" xmi:id="_0jyEIH3rEeuRorRMZgx_8A" description="Advice constraining the permitted contents and relationships of data types in metamodels." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.dataTypeAdvice" inheritance="all">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.DataType"/>
+ <constraint xmi:type="constraints:ReferenceConstraint" xmi:id="_txCvoH0oEeuouMZX9TzSzA">
+ <permission xmi:type="constraints:AnyReference" xmi:id="_txCvoX0oEeuouMZX9TzSzA" permitted="true">
+ <filter xmi:type="filters:CompoundFilter" xmi:id="_txCvon0oEeuouMZX9TzSzA" filter="_nHVWgIGjEeu5MZi-HRHmIw _kmMPcIGjEeu5MZi-HRHmIw">
+ <ownedFilter xmi:type="filters:FilterReference" xmi:id="_nHVWgIGjEeu5MZi-HRHmIw" filter="_Kr3bcoGjEeu5MZi-HRHmIw"/>
+ <ownedFilter xmi:type="filters:CompoundFilter" xmi:id="_kmMPcIGjEeu5MZi-HRHmIw" filter="_txCvpn0oEeuouMZX9TzSzA" operator="not">
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_txCvpn0oEeuouMZX9TzSzA" relationship="subtype">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Property"/>
+ </ownedFilter>
+ </ownedFilter>
+ </filter>
+ </permission>
+ <permission xmi:type="constraints:AnyReference" xmi:id="_txCvqX0oEeuouMZX9TzSzA" permitted="false" referenceKind="containment"/>
+ </constraint>
+ <constraint xmi:type="constraints:RelationshipConstraint" xmi:id="_0jyEIX3rEeuRorRMZgx_8A">
+ <permission xmi:type="constraints:EndPermission" xmi:id="_0jyEJH3rEeuRorRMZgx_8A" permitted="false"/>
+ </constraint>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="constraints:ConstraintAdviceConfiguration" xmi:id="_0r0wMIA4EeuAj6L57_kZcw" description="Advice constraining the permitted contents and relationships of attributes and operations in metamodels." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.featureAdvice" inheritance="all">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Feature"/>
+ <constraint xmi:type="constraints:ReferenceConstraint" xmi:id="_ufqeAIA6EeuAj6L57_kZcw">
+ <permission xmi:type="constraints:AnyReference" xmi:id="_ufqeAYA6EeuAj6L57_kZcw" permitted="true" referenceKind="containment">
+ <filter xmi:type="filters:CompoundFilter" xmi:id="_ufqeAoA6EeuAj6L57_kZcw" name="Contents of Feature" filter="_ufqeA4A6EeuAj6L57_kZcw _ufqeBYA6EeuAj6L57_kZcw _ufqeBoA6EeuAj6L57_kZcw _om10AIA7EeuAj6L57_kZcw _tPYscIA7EeuAj6L57_kZcw" operator="or">
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_ufqeA4A6EeuAj6L57_kZcw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Parameter"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_ufqeBYA6EeuAj6L57_kZcw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Comment"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_ufqeBoA6EeuAj6L57_kZcw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Constraint"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_om10AIA7EeuAj6L57_kZcw" relationship="subtype">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.LiteralSpecification"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_tPYscIA7EeuAj6L57_kZcw" relationship="subtype">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.InstanceValue"/>
+ </ownedFilter>
+ </filter>
+ </permission>
+ <permission xmi:type="constraints:Reference" xmi:id="_HcgWEIA7EeuAj6L57_kZcw" permitted="true">
+ <filter xmi:type="filters:CompoundFilter" xmi:id="_U7qp4IA7EeuAj6L57_kZcw" name="Allowed Types" filter="_WRemQIA7EeuAj6L57_kZcw _W9HkQIA7EeuAj6L57_kZcw _abWlsIA7EeuAj6L57_kZcw" operator="or">
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_WRemQIA7EeuAj6L57_kZcw" elementType="_WtT9UHbdEeuKjtUyU4RltQ" relationship="subtype"/>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_W9HkQIA7EeuAj6L57_kZcw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.PrimitiveType"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_abWlsIA7EeuAj6L57_kZcw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Enumeration"/>
+ </ownedFilter>
+ </filter>
+ <reference xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//TypedElement/type"/>
+ </permission>
+ <permission xmi:type="constraints:Reference" xmi:id="_1Z754IEpEeuKTaw-vhP0IA" permitted="true">
+ <filter xmi:type="constraints:ElementTypeFilter" xmi:id="_1Z754YEpEeuKTaw-vhP0IA" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Property"/>
+ </filter>
+ <reference xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Operation/redefinedOperation"/>
+ </permission>
+ <permission xmi:type="constraints:Reference" xmi:id="_VQk08IEiEeu-otVmyAgEnA" permitted="true">
+ <filter xmi:type="constraints:ElementTypeFilter" xmi:id="_WCPic4EiEeu-otVmyAgEnA" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Property"/>
+ </filter>
+ <reference xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Property/redefinedProperty"/>
+ </permission>
+ <permission xmi:type="constraints:Reference" xmi:id="_WCPicIEiEeu-otVmyAgEnA" permitted="true">
+ <filter xmi:type="constraints:ElementTypeFilter" xmi:id="_e5xj0IEiEeu-otVmyAgEnA" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Property"/>
+ </filter>
+ <reference xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//Property/subsettedProperty"/>
+ </permission>
+ <permission xmi:type="constraints:AnyReference" xmi:id="_ufqeCIA6EeuAj6L57_kZcw" permitted="false"/>
+ </constraint>
+ <constraint xmi:type="constraints:RelationshipConstraint" xmi:id="_ujkw0IA-EeuVqrD2irClKw">
+ <permission xmi:type="constraints:EndPermission" xmi:id="_vGOK4IA-EeuVqrD2irClKw" permitted="false"/>
+ </constraint>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="constraints:ConstraintAdviceConfiguration" xmi:id="_5lD2YIBAEeuAGPWdVz0arw" description="Advice constraining the permitted contents and relationships of operation parameters in metamodels." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.parameterAdvice" inheritance="all">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Parameter"/>
+ <constraint xmi:type="constraints:ReferenceConstraint" xmi:id="_5lD2YYBAEeuAGPWdVz0arw">
+ <permission xmi:type="constraints:AnyReference" xmi:id="_5lD2YoBAEeuAGPWdVz0arw" permitted="true" referenceKind="containment">
+ <filter xmi:type="filters:FilterReference" xmi:id="_H_B94IBHEeukyY8ez9SrJQ" filter="_ufqeAoA6EeuAj6L57_kZcw"/>
+ </permission>
+ <permission xmi:type="constraints:Reference" xmi:id="_5lD2aYBAEeuAGPWdVz0arw" permitted="true">
+ <filter xmi:type="filters:FilterReference" xmi:id="_QwJOMIBHEeukyY8ez9SrJQ" filter="_U7qp4IA7EeuAj6L57_kZcw"/>
+ <reference xmi:type="ecore:EReference" href="http://www.eclipse.org/uml2/5.0.0/UML#//TypedElement/type"/>
+ </permission>
+ <permission xmi:type="constraints:AnyReference" xmi:id="_5lD2boBAEeuAGPWdVz0arw" permitted="false"/>
+ </constraint>
+ <constraint xmi:type="constraints:RelationshipConstraint" xmi:id="_5lD2b4BAEeuAGPWdVz0arw">
+ <permission xmi:type="constraints:EndPermission" xmi:id="_5lD2cIBAEeuAGPWdVz0arw" permitted="false"/>
+ </constraint>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="constraints:ConstraintAdviceConfiguration" xmi:id="_UtrpgIBBEeuAGPWdVz0arw" description="Advice constraining the permitted contents and relationships of enumeration literals in metamodels." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.enumerationLiteralAdvice" inheritance="all">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.EnumerationLiteral"/>
+ <constraint xmi:type="constraints:ReferenceConstraint" xmi:id="_UtrpgYBBEeuAGPWdVz0arw">
+ <permission xmi:type="constraints:AnyReference" xmi:id="_UtrpgoBBEeuAGPWdVz0arw" permitted="true" referenceKind="containment">
+ <filter xmi:type="filters:CompoundFilter" xmi:id="_lQsI0IBBEeuAGPWdVz0arw" filter="_lQsI0oBBEeuAGPWdVz0arw _lQsI04BBEeuAGPWdVz0arw" operator="or">
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_lQsI0oBBEeuAGPWdVz0arw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Comment"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_lQsI04BBEeuAGPWdVz0arw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Constraint"/>
+ </ownedFilter>
+ </filter>
+ </permission>
+ <permission xmi:type="constraints:AnyReference" xmi:id="_UtrphIBBEeuAGPWdVz0arw" permitted="false"/>
+ </constraint>
+ <constraint xmi:type="constraints:RelationshipConstraint" xmi:id="_UtrphYBBEeuAGPWdVz0arw">
+ <permission xmi:type="constraints:EndPermission" xmi:id="_UtrphoBBEeuAGPWdVz0arw" permitted="false"/>
+ </constraint>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="constraints:ConstraintAdviceConfiguration" xmi:id="_oG0WMIGmEeuubbHwoiG7aw" description="Advice constraining the permitted contents and relationships of associations in metamodels." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.associationContentsAdvice" inheritance="all">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.AssociationBase"/>
+ <constraint xmi:type="constraints:ReferenceConstraint" xmi:id="_oG0WMYGmEeuubbHwoiG7aw">
+ <permission xmi:type="constraints:AnyReference" xmi:id="_oG0WN4GmEeuubbHwoiG7aw" permitted="false" referenceKind="containment"/>
+ </constraint>
+ <constraint xmi:type="constraints:RelationshipConstraint" xmi:id="_oG0WOIGmEeuubbHwoiG7aw">
+ <permission xmi:type="constraints:EndPermission" xmi:id="_oG0WOYGmEeuubbHwoiG7aw" permitted="false"/>
+ </constraint>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="setvaluesadvice:SetValuesAdviceConfiguration" xmi:id="_UYg6oIEZEeu-otVmyAgEnA" identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.setPublicVisibilityAdvice" inheritance="all">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.NamedElement"/>
+ <matcherConfiguration xmi:type="elementtypesconfigurations:MatcherConfiguration" xmi:id="_ViWbEIEaEeu-otVmyAgEnA" description="Matches elements that must have public visibility." matcherClassName="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers.MustBePublicMatcher"/>
+ <featuresToSet xmi:type="setvaluesadvice:FeatureToSet" xmi:id="_vgbjIIEZEeu-otVmyAgEnA" featureName="visibility">
+ <value xmi:type="setvaluesadvice:ConstantValue" xmi:id="_xqx60IEZEeu-otVmyAgEnA">
+ <valueInstance xmi:type="uml:InstanceValue" xmi:id="_zaZeUIEZEeu-otVmyAgEnA">
+ <instance xmi:type="uml:EnumerationLiteral" href="pathmap://UML_METAMODELS/UML.metamodel.uml#VisibilityKind-public"/>
+ </valueInstance>
+ </value>
+ </featuresToSet>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="setvaluesadvice:SetValuesAdviceConfiguration" xmi:id="_qC3RwIEaEeu-otVmyAgEnA" identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.setPrivateVisibilityAdvice" inheritance="all">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.NamedElement"/>
+ <matcherConfiguration xmi:type="elementtypesconfigurations:MatcherConfiguration" xmi:id="_qC3RwYEaEeu-otVmyAgEnA" description="Matches elements that must have private visibility." matcherClassName="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers.MustBePrivateMatcher"/>
+ <featuresToSet xmi:type="setvaluesadvice:FeatureToSet" xmi:id="_qC3RwoEaEeu-otVmyAgEnA" featureName="visibility">
+ <value xmi:type="setvaluesadvice:ConstantValue" xmi:id="_qC3Rw4EaEeu-otVmyAgEnA">
+ <valueInstance xmi:type="uml:InstanceValue" xmi:id="_qC3RxIEaEeu-otVmyAgEnA">
+ <instance xmi:type="uml:EnumerationLiteral" href="pathmap://UML_METAMODELS/UML.metamodel.uml#VisibilityKind-private"/>
+ </valueInstance>
+ </value>
+ </featuresToSet>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="elementtypesconfigurations:AdviceBindingConfiguration" xmi:id="_gCRH0IEgEeu-otVmyAgEnA" description="Advice that maintains the required visibility of elements that have a required visibility." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.advice.requiredVisibilityAdvice" inheritance="all" editHelperAdviceClassName="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice.RequiredVisibilityAdvice">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.NamedElement"/>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="elementtypesconfigurations:AdviceBindingConfiguration" xmi:id="__ruo4IEgEeu-otVmyAgEnA" description="Advice for restricting the editing of association-end properties." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.advice.associationEndAdvice" inheritance="all" editHelperAdviceClassName="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice.AssociationEndAdvice">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Property"/>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="elementtypesconfigurations:AdviceBindingConfiguration" xmi:id="_XzzKMIEjEeuR6NtV_hQ3dg" description="Advice for the editing of associations." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.advice.associationEditAdvice" inheritance="all" editHelperAdviceClassName="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice.AssociationEditAdvice">
+ <before xmi:type="elementtypesconfigurations:AdviceBindingConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#_SJGO0DWbEeWdwYNHBiYLiA"/>
+ <before xmi:type="elementtypesconfigurations:EditHelperAdviceConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#_Q_1wonhMEee4-vqumSjwzg"/>
+ <before xmi:type="elementtypesconfigurations:EditHelperAdviceConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#_2Jg4EXV3EeScr8rbRObDkA"/>
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.AssociationBase"/>
+ </adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xmi:type="elementtypesconfigurations:AdviceBindingConfiguration" xmi:id="_SGeVkIHUEeu4APS_uoP1tg" description="Advice on the deletion of a data type to delete attributes of that type." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.dataTypeDeletionAdvice" inheritance="all" editHelperAdviceClassName="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice.DataTypeDeletionAdvice">
+ <target xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.DataType"/>
+ </adviceBindingsConfigurations>
+ <elementTypeConfigurations xmi:type="elementtypesconfigurations:SpecializationTypeConfiguration" xmi:id="_Zp0SEHbaEeuKjtUyU4RltQ" identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.Metamodel" name="Metamodel" hint="" kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" matcherConfiguration="_oYIgoHbaEeuKjtUyU4RltQ">
+ <ownedConfigurations xmi:type="stereotypematcher:StereotypeMatcherAdviceConfiguration" xmi:id="_oYIgoHbaEeuKjtUyU4RltQ" identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.advice.Metamodel" target="_Zp0SEHbaEeuKjtUyU4RltQ" matchedType="_Zp0SEHbaEeuKjtUyU4RltQ" profileUri="http://www.omg.org/spec/UML/20131001/StandardProfile">
+ <stereotypesQualifiedNames>StandardProfile::Metamodel</stereotypesQualifiedNames>
+ </ownedConfigurations>
+ <ownedConfigurations xmi:type="elementtypesconfigurations:AdviceBindingConfiguration" xmi:id="_noyccHbcEeuKjtUyU4RltQ" description="Creates the default metaclass in a new metamodel." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.defaultmetaclass" target="_Zp0SEHbaEeuKjtUyU4RltQ" editHelperAdviceClassName="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice.CreateDefaultMetaclassAdvice"/>
+ <ownedConfigurations xmi:type="constraints:ConstraintAdviceConfiguration" xmi:id="_Mb40sH0bEeutqsARUp2Vgg" identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.metamodel.constraint" target="_Zp0SEHbaEeuKjtUyU4RltQ">
+ <constraint xmi:type="stereotypematcher:RequiredStereotypeConstraintConfiguration" xmi:id="_cOYxMH0oEeujK9lz9OkrBA"/>
+ <constraint xmi:type="constraints:ReferenceConstraint" xmi:id="_d-w1kH0bEeutqsARUp2Vgg">
+ <permission xmi:type="constraints:AnyReference" xmi:id="_f86kUH0bEeutqsARUp2Vgg" permitted="true">
+ <filter xmi:type="filters:CompoundFilter" xmi:id="_o8u_AH0bEeutqsARUp2Vgg" filter="_vl9VwH0bEeutqsARUp2Vgg _Bf06UH0cEeutqsARUp2Vgg _Bn-wwH0cEeutqsARUp2Vgg _Bv_dQH0cEeutqsARUp2Vgg _Tz8OEH0gEeuVvMEaYK8Gsw _T9LCkH0gEeuVvMEaYK8Gsw" operator="or">
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_vl9VwH0bEeutqsARUp2Vgg" elementType="_WtT9UHbdEeuKjtUyU4RltQ" relationship="subtype"/>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_Bf06UH0cEeutqsARUp2Vgg" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:SpecializationTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Association"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_Bn-wwH0cEeutqsARUp2Vgg" relationship="subtype">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Enumeration"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_Bv_dQH0cEeutqsARUp2Vgg" relationship="subtype">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.PrimitiveType"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_Tz8OEH0gEeuVvMEaYK8Gsw" relationship="subtype">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Comment"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_T9LCkH0gEeuVvMEaYK8Gsw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Constraint"/>
+ </ownedFilter>
+ </filter>
+ </permission>
+ <permission xmi:type="constraints:AnyReference" xmi:id="_Zp2jcH0eEeuZAKqwE3yUlQ" permitted="false" referenceKind="containment"/>
+ </constraint>
+ <constraint xmi:type="constraints:RelationshipConstraint" xmi:id="_0yFaUH31EeurDK7l5MWvOA">
+ <permission xmi:type="constraints:EndPermission" xmi:id="_0yFaUX31EeurDK7l5MWvOA" permitted="true">
+ <endFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_0yFaUn31EeurDK7l5MWvOA" elementType="_WtT9UHbdEeuKjtUyU4RltQ" relationship="subtype"/>
+ </permission>
+ <permission xmi:type="constraints:EndPermission" xmi:id="_0yFaU331EeurDK7l5MWvOA" permitted="false"/>
+ </constraint>
+ </ownedConfigurations>
+ <ownedConfigurations xmi:type="elementtypesconfigurations:AdviceBindingConfiguration" xmi:id="_GPra4IEdEeu-otVmyAgEnA" identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.metamodelRequiredAttributesAdvice" target="_Zp0SEHbaEeuKjtUyU4RltQ" editHelperAdviceClassName="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice.MetamodelRequiredAttributesAdvice"/>
+ <specializedTypes xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Model"/>
+ </elementTypeConfigurations>
+ <elementTypeConfigurations xmi:type="elementtypesconfigurations:SpecializationTypeConfiguration" xmi:id="_WtT9UHbdEeuKjtUyU4RltQ" identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.Metaclass" name="Metaclass" hint="" kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType" matcherConfiguration="_hu9F0HbdEeuKjtUyU4RltQ">
+ <ownedConfigurations xmi:type="stereotypematcher:StereotypeMatcherAdviceConfiguration" xmi:id="_hu9F0HbdEeuKjtUyU4RltQ" identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.advice.Metaclass" target="_WtT9UHbdEeuKjtUyU4RltQ" matchedType="_WtT9UHbdEeuKjtUyU4RltQ" profileUri="http://www.omg.org/spec/UML/20131001/StandardProfile">
+ <stereotypesQualifiedNames>StandardProfile::Metaclass</stereotypesQualifiedNames>
+ </ownedConfigurations>
+ <ownedConfigurations xmi:type="constraints:ConstraintAdviceConfiguration" xmi:id="_8qDnwH0nEeuxWesSwcABnQ" identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.metaclass.constraint" target="_WtT9UHbdEeuKjtUyU4RltQ">
+ <constraint xmi:type="stereotypematcher:RequiredStereotypeConstraintConfiguration" xmi:id="_EtQCIH0oEeuxWesSwcABnQ"/>
+ <constraint xmi:type="constraints:RelationshipConstraint" xmi:id="_aIPIcIEXEeu-otVmyAgEnA">
+ <permission xmi:type="constraints:EndPermission" xmi:id="_aIPIcYEXEeu-otVmyAgEnA" permitted="true">
+ <filter xmi:type="constraints:ElementTypeFilter" xmi:id="_aIPIcoEXEeu-otVmyAgEnA" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Generalization"/>
+ </filter>
+ <endFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_aIPIc4EXEeu-otVmyAgEnA" elementType="_WtT9UHbdEeuKjtUyU4RltQ" relationship="subtype"/>
+ </permission>
+ <permission xmi:type="constraints:EndPermission" xmi:id="_0CssEIEnEeu8P6bR89chZg" permitted="true">
+ <filter xmi:type="constraints:ElementTypeFilter" xmi:id="_0CssEYEnEeu8P6bR89chZg" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.AssociationBase"/>
+ </filter>
+ <endFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_0CssEoEnEeu8P6bR89chZg" elementType="_WtT9UHbdEeuKjtUyU4RltQ" relationship="subtype"/>
+ </permission>
+ <permission xmi:type="constraints:EndPermission" xmi:id="_aIPIdIEXEeu-otVmyAgEnA" permitted="false"/>
+ </constraint>
+ <constraint xmi:type="constraints:ReferenceConstraint" xmi:id="_Kr3bcIGjEeu5MZi-HRHmIw">
+ <permission xmi:type="constraints:AnyReference" xmi:id="_Kr3bcYGjEeu5MZi-HRHmIw" permitted="true">
+ <filter xmi:type="filters:CompoundFilter" xmi:id="_Kr3bcoGjEeu5MZi-HRHmIw" name="Contents of Class" filter="_Kr3bc4GjEeu5MZi-HRHmIw _Kr3bdIGjEeu5MZi-HRHmIw _Kr3bdYGjEeu5MZi-HRHmIw _Kr3bdoGjEeu5MZi-HRHmIw _Kr3bd4GjEeu5MZi-HRHmIw" operator="or">
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_Kr3bc4GjEeu5MZi-HRHmIw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Operation"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_Kr3bdIGjEeu5MZi-HRHmIw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Property"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_Kr3bdYGjEeu5MZi-HRHmIw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Comment"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_Kr3bdoGjEeu5MZi-HRHmIw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Constraint"/>
+ </ownedFilter>
+ <ownedFilter xmi:type="constraints:ElementTypeFilter" xmi:id="_Kr3bd4GjEeu5MZi-HRHmIw" relationship="specializationType">
+ <elementType xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.EnumerationLiteral"/>
+ </ownedFilter>
+ </filter>
+ </permission>
+ <permission xmi:type="constraints:AnyReference" xmi:id="_dwwosIGjEeu5MZi-HRHmIw" permitted="false" referenceKind="containment"/>
+ </constraint>
+ </ownedConfigurations>
+ <ownedConfigurations xmi:type="elementtypesconfigurations:AdviceBindingConfiguration" xmi:id="_75NwkIHQEeu4APS_uoP1tg" description="Advice to configure a newly created metaclass." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.newMetaclassAdvice" target="_WtT9UHbdEeuKjtUyU4RltQ" editHelperAdviceClassName="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice.NewMetaclassAdvice"/>
+ <specializedTypes xmi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#org.eclipse.papyrus.uml.Class"/>
+ </elementTypeConfigurations>
+</elementtypesconfigurations:ElementTypeSetConfiguration>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.paletteconfiguration b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.paletteconfiguration
new file mode 100644
index 00000000000..6775dde1b01
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.paletteconfiguration
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<paletteconfiguration:PaletteConfiguration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:elementtypesconfigurations="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2" xmlns:paletteconfiguration="http://www.eclipse.org/papyrus/diagram/paletteconfiguration/0.8" id="org.eclipse.papyrus.toolsmiths.example.umlformetamodels">
+ <drawerConfigurations xmi:type="paletteconfiguration:DrawerConfiguration" id="clazz.group.nodes" label="Nodes" description="">
+ <icon xmi:type="paletteconfiguration:IconDescriptor" pluginID="org.eclipse.gmf.runtime.diagram.ui" iconPath="/icons/group.gif"/>
+ <ownedConfigurations xmi:type="paletteconfiguration:ToolConfiguration" id="metamodel.metaclass" label="Metaclass" kind="CreationTool">
+ <icon xmi:type="paletteconfiguration:IconDescriptor" pluginID="org.eclipse.uml2.uml.edit" iconPath="/icons/full/obj16/Class.gif"/>
+ <elementDescriptors xmi:type="paletteconfiguration:ElementDescriptor">
+ <elementType xmi:type="elementtypesconfigurations:SpecializationTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels_di.elementtypesconfigurations#_wzqWwHuhEeuoHIXc8g4Zpw"/>
+ </elementDescriptors>
+ </ownedConfigurations>
+ </drawerConfigurations>
+</paletteconfiguration:PaletteConfiguration>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels_di.elementtypesconfigurations b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels_di.elementtypesconfigurations
new file mode 100644
index 00000000000..fbaa8520e98
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels_di.elementtypesconfigurations
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<elementtypesconfigurations:ElementTypeSetConfiguration xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:elementtypesconfigurations="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2" xmi:id="_jQGNoHbLEeuDcqwoKFAHeg" description="Visual (diagram) element types for the UML for Metamodels language customization." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.di" name="UML Diagrams for Metamodels" metamodelNsURI="http://www.eclipse.org/uml2/5.0.0/UML">
+ <elementTypeConfigurations xmi:type="elementtypesconfigurations:SpecializationTypeConfiguration" xmi:id="_wzqWwHuhEeuoHIXc8g4Zpw" description="The visualization of a metaclass in the metamodel class diagram." identifier="org.eclipse.papyrus.toolsmiths.example.umlformetamodels.Metaclass_shape" name="Metaclass Shape" hint="Class_Shape" kind="org.eclipse.gmf.runtime.emf.type.core.IHintedType">
+ <specializedTypes xmi:type="elementtypesconfigurations:SpecializationTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations#_WtT9UHbdEeuKjtUyU4RltQ"/>
+ <specializedTypes xmi:type="elementtypesconfigurations:SpecializationTypeConfiguration" href="platform:/plugin/org.eclipse.papyrus.uml.service.types/model/umldi.elementtypesconfigurations#org.eclipse.papyrus.umldi.Class_Shape"/>
+ </elementTypeConfigurations>
+</elementtypesconfigurations:ElementTypeSetConfiguration>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/plugin.xml b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/plugin.xml
new file mode 100644
index 00000000000..f46e54851a2
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.infra.architecture.models">
+ <model
+ path="model/uml4metamodels.architecture">
+ </model>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.infra.newchild">
+ <menuCreationModel
+ model="model/uml4metamodels.creationmenumodel">
+ </menuCreationModel>
+ </extension>
+
+</plugin>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/Activator.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/Activator.java
new file mode 100644
index 00000000000..46bc4bf3c45
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/Activator.java
@@ -0,0 +1,65 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal;
+
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.osgi.framework.BundleContext;
+
+/**
+ * OSGi bundle activator.
+ */
+public class Activator extends Plugin {
+
+ /** The bundle symbolic name (plug-in ID). */
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.toolsmiths.example.umlformetamodels"; //$NON-NLS-1$
+
+ /** The activator instance. */
+ private static Activator plugin;
+
+ /** Logging helper */
+ public static LogHelper log;
+
+ public Activator() {
+ super();
+ }
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+
+ plugin = this;
+ log = new LogHelper(this);
+ }
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ log = null;
+ plugin = null;
+
+ super.stop(context);
+ }
+
+ /**
+ * Obtain the activator instance.
+ *
+ * @return the activator instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEditAdvice.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEditAdvice.java
new file mode 100644
index 00000000000..d1811617848
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEditAdvice.java
@@ -0,0 +1,218 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyDependentsRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.MoveRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.infra.emf.requests.UnsetRequest;
+import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.infra.services.edit.service.IElementEditService;
+import org.eclipse.papyrus.uml.service.types.utils.RequestParameterUtils;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * Advice for the editing of associations.
+ */
+public class AssociationEditAdvice extends AbstractEditHelperAdvice {
+
+ /**
+ * Associations must be binary. Do not permit creating or adding a third end.
+ */
+ @Override
+ public boolean approveRequest(IEditCommandRequest request) {
+ if (request instanceof CreateElementRequest) {
+ return approveCreateElementRequest((CreateElementRequest) request);
+ } else if (request instanceof SetRequest) {
+ return approveSetRequest((SetRequest) request);
+ } else if (request instanceof MoveRequest) {
+ return approveMoveRequest((MoveRequest) request);
+ } else {
+ return super.approveRequest(request);
+ }
+ }
+
+ /**
+ * Deny creation of a member end if the association already has two ends.
+ */
+ protected boolean approveCreateElementRequest(CreateElementRequest request) {
+ boolean result = true;
+
+ EObject container = request.getContainer();
+ if (container instanceof Association && ((Association) container).getMemberEnds().size() >= 2) {
+ IElementType typeToCreate = request.getElementType();
+ result = (typeToCreate == null) || !UMLPackage.Literals.PROPERTY.isSuperTypeOf(typeToCreate.getEClass());
+ }
+
+ return result;
+ }
+
+ /**
+ * Deny setting the member ends of an association to some number of ends other than two.
+ */
+ protected boolean approveSetRequest(SetRequest request) {
+ boolean result = true;
+
+ if (request.getFeature() == UMLPackage.Literals.ASSOCIATION__MEMBER_END
+ || request.getFeature() == UMLPackage.Literals.ASSOCIATION__OWNED_END) {
+
+ Association association = (Association) request.getElementToEdit();
+
+ result = !isBreakingMultiplicity(association, request.getFeature(), 2, 2, request.getValue());
+ }
+
+ return result;
+ }
+
+ /**
+ * Deny moving a property into the member ends of an association that already has two ends.
+ */
+ protected boolean approveMoveRequest(MoveRequest request) {
+ boolean result = true;
+
+ EObject container = request.getTargetContainer();
+ if (container instanceof Association) {
+ Association association = (Association) container;
+ int endCount = association.getMemberEnds().size();
+
+ @SuppressWarnings("unchecked")
+ Map<EObject, EReference> moves = request.getElementsToMove();
+ for (Map.Entry<EObject, EReference> next : moves.entrySet()) {
+ if (next.getKey() instanceof Property) {
+ endCount = endCount + 1;
+ result = endCount <= 2;
+
+ if (!result) {
+ break;
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Query whether a {@code value} to be added to or set into a {@code feature} of an {@code owner} would break
+ * our multiplicity constraint for the {@code feature}.
+ *
+ * @param owner
+ * the object that owns the {@code feature} being edited
+ * @param feature
+ * the feature of the {@code owner} that is being edited
+ * @param minSize
+ * the minimal size that the {@code feature} must have
+ * @param maxSize
+ * the maximal size that the {@code feature} may have
+ * @param value
+ * the value to be added (if not a collection) or set (if a collection), according to the contract of the
+ * {@link SetRequest} API
+ * @return whether this {@code value} would break the multiplicity constraint on the {@code feature}
+ */
+ protected boolean isBreakingMultiplicity(EObject owner, EStructuralFeature feature, int minSize, int maxSize, Object value) {
+ Object currentValue = owner.eGet(feature);
+ int existingSize = feature.isMany() ? ((Collection<?>) currentValue).size() : currentValue == null ? 0 : 1;
+
+ // If it's not a collection, then it is a value to be added
+ boolean result = !(value instanceof Collection<?>) && existingSize >= maxSize;
+
+ if (!result) {
+ // Is the collection to replace the existing collection a collection of invalid size?
+ int newSize = ((Collection<?>) value).size();
+
+ result = newSize < minSize || newSize > maxSize;
+ }
+
+ return result;
+ }
+
+ @Override
+ protected ICommand getBeforeDestroyDependentsCommand(DestroyDependentsRequest request) {
+ ICommand result = null;
+
+ if (request.getElementToDestroy() instanceof Association) {
+ // The association advice following this will attempt to destroy the member ends, so block that
+ Association association = (Association) request.getElementToDestroy();
+ protectMemberEnds(association, request);
+
+ // But as these ends will no longer be in an association, they should not be subsets
+ for (Property end : association.getMemberEnds()) {
+ if (end.getOwningAssociation() != association && end.eIsSet(UMLPackage.Literals.PROPERTY__SUBSETTED_PROPERTY)) {
+ result = CompositeCommand.compose(result, getUnsetCommand(request, end, UMLPackage.Literals.PROPERTY__SUBSETTED_PROPERTY));
+ }
+ }
+ }
+
+ return CompositeCommand.compose(result, super.getBeforeDestroyDependentsCommand(request));
+ }
+
+ /**
+ * Configure the <em>dependents to keep</em> parameter of the {@code request} to preserve the
+ * member ends of the {@code association} that it does not own.
+ *
+ * @param association
+ * an association being destroyed
+ * @param request
+ * the gathering dependencies of the {@code association} that also should be destroyed
+ */
+ protected void protectMemberEnds(Association association, DestroyDependentsRequest request) {
+ List<EObject> dependentsToKeep = RequestParameterUtils.getDependentsToKeep(request, true);
+
+ for (Property end : association.getMemberEnds()) {
+ if (end.getOwningAssociation() != association) {
+ dependentsToKeep.add(end);
+ }
+ }
+ }
+
+ /**
+ * Create a command to unset the given {@code feature} of an {@code owner} of that feature.
+ *
+ * @param parentRequest
+ * the request in which edit context we are fetching a corollary command
+ * @param owner
+ * the object that owns the {@code feature} to unset
+ * @param feature
+ * the feature to unset in the {@code owner}
+ * @return the unset command, or {@code null} if no relevant command can be obtained
+ */
+ protected ICommand getUnsetCommand(IEditCommandRequest parentRequest, EObject owner, EStructuralFeature feature) {
+ ICommand result = null;
+
+ IElementEditService edit = ElementEditServiceUtils.getCommandProvider(owner, parentRequest.getClientContext());
+ if (edit != null) {
+ result = edit.getEditCommand(new UnsetRequest(parentRequest.getEditingDomain(), owner, feature));
+ }
+
+ return result;
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEndAdvice.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEndAdvice.java
new file mode 100644
index 00000000000..52c9fdb778d
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/AssociationEndAdvice.java
@@ -0,0 +1,66 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice;
+
+import java.util.Collection;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * Advice that constrains the editing of association ends in UML metamodels.
+ */
+public class AssociationEndAdvice extends AbstractEditHelperAdvice {
+
+ @Override
+ public boolean approveRequest(IEditCommandRequest request) {
+ if (request instanceof SetRequest) {
+ return approveSetRequest((SetRequest) request);
+ } else {
+ return super.approveRequest(request);
+ }
+ }
+
+ /**
+ * Deny a request that would set subsetted properties of a {@link Property} that is not an
+ * end of some {@link Association}.
+ */
+ protected boolean approveSetRequest(SetRequest request) {
+ boolean result = true;
+
+ if (request.getFeature() == UMLPackage.Literals.PROPERTY__SUBSETTED_PROPERTY) {
+ // Unconditionally allow an unset
+ result = isAssociationEnd(request.getElementToEdit()) || isEmpty(request.getValue());
+ }
+
+ return result;
+ }
+
+ /** Query whether a {@code property} is an association end. */
+ protected final boolean isAssociationEnd(EObject property) {
+ return (property instanceof Property) && ((Property) property).getAssociation() != null;
+ }
+
+ /** Query whether a {@code value} is {@code null} or an empty collection. */
+ protected boolean isEmpty(Object value) {
+ return value == null || (value instanceof Collection<?> && ((Collection<?>) value).isEmpty());
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/CreateDefaultMetaclassAdvice.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/CreateDefaultMetaclassAdvice.java
new file mode 100644
index 00000000000..d02b67c0f32
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/CreateDefaultMetaclassAdvice.java
@@ -0,0 +1,47 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice;
+
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
+import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.infra.services.edit.service.IElementEditService;
+import org.eclipse.papyrus.infra.services.edit.utils.RequestParameterConstants;
+import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.types.MetamodelElementTypes;
+import org.eclipse.uml2.uml.Package;
+
+/**
+ * Advice that creates the default metaclass in a new metamodel package.
+ */
+public class CreateDefaultMetaclassAdvice extends AbstractEditHelperAdvice {
+
+ /**
+ * Create a metaclass in a new metamodel as a "starter kit" for designing the metamodel.
+ */
+ @Override
+ protected ICommand getAfterConfigureCommand(ConfigureRequest request) {
+ Package metamodel = (Package) request.getElementToConfigure();
+
+ CreateElementRequest createRequest = new CreateElementRequest(metamodel, MetamodelElementTypes.getMetaclassType());
+ createRequest.setParameter(RequestParameterConstants.NAME_TO_SET, "Element"); //$NON-NLS-1$
+
+ IElementEditService edit = ElementEditServiceUtils.getCommandProvider(metamodel);
+ return (edit == null) ? null : edit.getEditCommand(createRequest);
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/DataTypeDeletionAdvice.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/DataTypeDeletionAdvice.java
new file mode 100644
index 00000000000..5739f4cab75
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/DataTypeDeletionAdvice.java
@@ -0,0 +1,142 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice;
+
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.gmf.runtime.common.core.command.AbstractCommand;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
+import org.eclipse.gmf.runtime.emf.type.core.requests.DestroyDependentsRequest;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.common.util.CacheAdapter;
+import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.TypedElement;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * Advice for the deletion of datatypes to delete also attributes of that type (pursuant to user confirmation).
+ */
+public class DataTypeDeletionAdvice extends AbstractEditHelperAdvice {
+
+ /**
+ * When destroying a {@link DataType}, destroy also any properties or operation parameters
+ * typed by it, with interactive user confirmation.
+ */
+ @Override
+ protected ICommand getBeforeDestroyDependentsCommand(DestroyDependentsRequest request) {
+ ICommand result = null;
+
+ // This covers the enumerations and primitive types that we can use in metamodels
+ if (request.getElementToDestroy() instanceof DataType) {
+ // Find attributes typed by this data type
+ DataType dataType = (DataType) request.getElementToDestroy();
+
+ // The UML Cache Adapter maintains an inverse reference map. We need to find
+ // objects that reference our DataType; the DataType does not reference them
+ CacheAdapter cache = CacheAdapter.getCacheAdapter(dataType);
+ if (cache != null) {
+ Collection<EStructuralFeature.Setting> settings = cache.getInverseReferences(dataType, UMLPackage.Literals.TYPED_ELEMENT__TYPE, true);
+ if (!settings.isEmpty()) {
+ result = deleteOwners(settings, request);
+ }
+ }
+ }
+
+ return CompositeCommand.compose(result, super.getBeforeDestroyDependentsCommand(request));
+ }
+
+ /**
+ * Obtain a command to delete the owners of reference {@code settings}.
+ *
+ * @param settings
+ * settings of references to the object being deleted
+ * @param request
+ * the request gathering dependents of the the object to delete that also should be deleted
+ * @return a command to delete the objects that own the reference {@code settings}
+ */
+ private ICommand deleteOwners(Collection<EStructuralFeature.Setting> settings, DestroyDependentsRequest request) {
+ Collection<TypedElement> typedElements = settings.stream().map(EStructuralFeature.Setting::getEObject)
+ .map(TypedElement.class::cast).distinct().collect(Collectors.toList());
+
+ String listOfNames = typedElements.stream().map(NamedElement::getQualifiedName).collect(Collectors.joining(", "));
+ String prompt = NLS.bind("The following elements will also be deleted. Proceed?\n{0}.", listOfNames);
+
+ // If this returns a cancel result, then the framework will undo any changes performed by earlier commands
+ ICommand promptToConfirm = new PromptToConfirmCommand("Delete Typed Elements", prompt);
+ ICommand destroyTypedElements = request.getDestroyDependentsCommand(typedElements);
+
+ return CompositeCommand.compose(promptToConfirm, destroyTypedElements);
+ }
+
+ //
+ // Nested types
+ //
+
+ /**
+ * A command that, when executed, shows the user a prompt message and asks for confirmation to proceed.
+ * If the user elects not to proceed, then command execution is cancelled.
+ */
+ private static final class PromptToConfirmCommand extends AbstractCommand {
+ private final String dialogTitle;
+ private final String prompt;
+
+ PromptToConfirmCommand(String dialogTitle, String prompt) {
+ super("Prompt to Confirm");
+
+ this.dialogTitle = dialogTitle;
+ this.prompt = prompt;
+ }
+
+ @Override
+ public boolean canExecute() {
+ return true;
+ }
+
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException {
+ Shell parentShell = (info == null) ? Display.getCurrent().getActiveShell() : info.getAdapter(Shell.class);
+ return MessageDialog.openConfirm(parentShell, dialogTitle, prompt)
+ ? CommandResult.newOKCommandResult()
+ : CommandResult.newCancelledCommandResult(); // The framework will undo any changes performed by earlier commands
+ }
+
+ @Override
+ protected CommandResult doRedoWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException {
+ // Nothing to confirm on undo
+ return CommandResult.newOKCommandResult();
+ }
+
+ @Override
+ protected CommandResult doUndoWithResult(IProgressMonitor progressMonitor, IAdaptable info) throws ExecutionException {
+ // Nothing to confirm on redo
+ return CommandResult.newOKCommandResult();
+ }
+
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/MetamodelRequiredAttributesAdvice.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/MetamodelRequiredAttributesAdvice.java
new file mode 100644
index 00000000000..e3a702451c1
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/MetamodelRequiredAttributesAdvice.java
@@ -0,0 +1,66 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice;
+
+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.infra.emf.requests.UnsetRequest;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * Advice that prevents unsetting of required attributes of UML metamodels.
+ */
+public class MetamodelRequiredAttributesAdvice extends AbstractEditHelperAdvice {
+
+ @Override
+ public boolean approveRequest(IEditCommandRequest request) {
+ if (request instanceof SetRequest) {
+ return approveSetRequest((SetRequest) request);
+ } else if (request instanceof UnsetRequest) {
+ return approveUnsetRequest((UnsetRequest) request);
+ } else {
+ return super.approveRequest(request);
+ }
+ }
+
+ /**
+ * Deny a request that would set the package URI to a {@code null} or blank value.
+ */
+ protected boolean approveSetRequest(SetRequest request) {
+ boolean result = true;
+
+ if (request.getFeature() == UMLPackage.Literals.PACKAGE__URI) {
+ result = request.getValue() != null && !String.valueOf(request.getValue()).isBlank();
+ }
+
+ return result;
+ }
+
+ /**
+ * Deny a request that would unset the package URI.
+ */
+ protected boolean approveUnsetRequest(UnsetRequest request) {
+ boolean result = true;
+
+ if (request.getFeature() == UMLPackage.Literals.PACKAGE__URI) {
+ result = false;
+ }
+
+ return result;
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/NewMetaclassAdvice.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/NewMetaclassAdvice.java
new file mode 100644
index 00000000000..7cf68d2fecd
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/NewMetaclassAdvice.java
@@ -0,0 +1,84 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.common.core.command.CompositeCommand;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.commands.DeferredSetValueCommand;
+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.infra.services.edit.service.IElementEditService;
+import org.eclipse.papyrus.infra.services.edit.utils.RequestParameterConstants;
+import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.types.MetamodelElementTypes;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.resource.UMLResource;
+
+/**
+ * Advice that configures a new metaclass upon its creation in the model.
+ */
+public class NewMetaclassAdvice extends AbstractEditHelperAdvice {
+
+ /**
+ * Create a new property "name" of string type in the new metaclass. Because we use the <em>Element Types</em>
+ * framework to create that property, the required visibility advice will assign it public visibility without
+ * this metaclass advice having to be concerned with it.
+ */
+ @Override
+ protected ICommand getAfterConfigureCommand(ConfigureRequest request) {
+ org.eclipse.uml2.uml.Class metaclass = (org.eclipse.uml2.uml.Class) request.getElementToConfigure();
+
+ // Create a new property
+ CreateElementRequest createRequest = new CreateElementRequest(metaclass, MetamodelElementTypes.getPropertyType());
+ createRequest.setParameter(RequestParameterConstants.NAME_TO_SET, "name"); //$NON-NLS-1$
+
+ // Use the edit service to ensure that creation of the property, itself, is advised by element types
+ IElementEditService edit = ElementEditServiceUtils.getCommandProvider(metaclass);
+ ICommand createProperty = edit.getEditCommand(createRequest);
+
+ // The type of the new property can only be set once the property exists, so defer setting it until then
+ SetRequest setTypeRequest = new SetRequest(request.getEditingDomain(), null,
+ UMLPackage.Literals.TYPED_ELEMENT__TYPE, getStringType(request));
+ ICommand setType = new DeferredSetValueCommand(setTypeRequest) {
+ @Override
+ protected EObject getElementToEdit() {
+ return createRequest.getNewElement();
+ }
+ };
+
+ return CompositeCommand.compose(createProperty, setType);
+ }
+
+ /**
+ * Get the <tt>String</tt> type from the <em>UML Primitive Types</em> library in the context of the
+ * given edit {@code request}.
+ *
+ * @param request
+ * an edit request bearing the editing domain context
+ * @return the UML <tt>String</tt> type
+ */
+ protected Type getStringType(IEditCommandRequest request) {
+ URI uri = URI.createURI(UMLResource.UML_PRIMITIVE_TYPES_LIBRARY_URI).appendFragment("String"); //$NON-NLS-1$
+ return (Type) request.getEditingDomain().getResourceSet().getEObject(uri, true);
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/RequiredVisibilityAdvice.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/RequiredVisibilityAdvice.java
new file mode 100644
index 00000000000..82e1cb9f54c
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/advice/RequiredVisibilityAdvice.java
@@ -0,0 +1,120 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.advice;
+
+import org.eclipse.gmf.runtime.emf.type.core.IElementMatcher;
+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
+import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.papyrus.infra.emf.requests.UnsetRequest;
+import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers.MustBePrivateMatcher;
+import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers.MustBePublicMatcher;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.InstanceValue;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.VisibilityKind;
+
+/**
+ * Advice that prevents setting an illegal visibility of a named element in an UML metamodel.
+ */
+public class RequiredVisibilityAdvice extends AbstractEditHelperAdvice {
+
+ private final IElementMatcher mustBePublic = new MustBePublicMatcher();
+ private final IElementMatcher mustBePrivate = new MustBePrivateMatcher();
+
+ @Override
+ public boolean approveRequest(IEditCommandRequest request) {
+ if (request instanceof SetRequest) {
+ return approveSetRequest((SetRequest) request);
+ } else if (request instanceof UnsetRequest) {
+ return approveUnsetRequest((UnsetRequest) request);
+ } else {
+ return super.approveRequest(request);
+ }
+ }
+
+ /**
+ * Deny a request that would set the visibility of an element to anything other than the
+ * value that it must have, if it is restricted to some value.
+ */
+ protected boolean approveSetRequest(SetRequest request) {
+ boolean result = true;
+
+ if (request.getFeature() == UMLPackage.Literals.NAMED_ELEMENT__VISIBILITY) {
+ VisibilityKind visibility = getVisibilityKind(request.getValue());
+ if (visibility != VisibilityKind.PUBLIC_LITERAL && mustBePublic.matches(request.getElementToEdit())) {
+ result = false;
+ }
+ if (visibility != VisibilityKind.PRIVATE_LITERAL && mustBePrivate.matches(request.getElementToEdit())) {
+ result = false;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Deny a request that would unset the visibility of an element if it is required to have some value.
+ */
+ protected boolean approveUnsetRequest(UnsetRequest request) {
+ boolean result = true;
+
+ if (request.getFeature() == UMLPackage.Literals.NAMED_ELEMENT__VISIBILITY) {
+ // Unset a visibility makes it public
+ if (mustBePrivate.matches(request.getElementToEdit())) {
+ result = false;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Infer by any means available the visibility kind intended by a {@code value}.
+ *
+ * @param value
+ * a value requested to be set into the visibility of an element
+ * @return the inferred visibility enumeration literal, or {@code null} if none can be determined
+ */
+ private VisibilityKind getVisibilityKind(Object value) {
+ VisibilityKind result = null;
+
+ if (value instanceof VisibilityKind) {
+ result = (VisibilityKind) value;
+ } else if (value instanceof InstanceValue) {
+ InstanceValue instance = (InstanceValue) value;
+ if (instance.getInstance() instanceof EnumerationLiteral) {
+ result = getVisibilityKind(instance.getInstance());
+ }
+ } else if (value instanceof EnumerationLiteral) {
+ EnumerationLiteral literal = (EnumerationLiteral) value;
+ Enumeration enumeration = literal.getEnumeration();
+ if (enumeration != null && "UML::VisibilityKind".equals(enumeration.getQualifiedName())) { //$NON-NLS-1$
+ result = getVisibilityKind(literal.getName());
+ }
+ } else if (value instanceof String) {
+ try {
+ result = VisibilityKind.valueOf(((String) value).toLowerCase());
+ } catch (Exception e) {
+ // Not a value of this enumeration
+ }
+ }
+
+ return result;
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/commands/CreateUMLMetamodelCommand.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/commands/CreateUMLMetamodelCommand.java
new file mode 100644
index 00000000000..7b810acd23d
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/commands/CreateUMLMetamodelCommand.java
@@ -0,0 +1,115 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.commands;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.IClientContext;
+import org.eclipse.gmf.runtime.emf.type.core.requests.ConfigureRequest;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.services.edit.context.TypeContext;
+import org.eclipse.papyrus.infra.services.edit.service.ElementEditServiceUtils;
+import org.eclipse.papyrus.infra.services.edit.service.IElementEditService;
+import org.eclipse.papyrus.infra.services.edit.utils.RequestParameterConstants;
+import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.Activator;
+import org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.types.MetamodelElementTypes;
+import org.eclipse.papyrus.uml.diagram.common.commands.ModelCreationCommandBase;
+import org.eclipse.uml2.common.util.UML2Util;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.resource.UMLResource;
+
+/**
+ * Command that creates a new UML Metamodel.
+ */
+public class CreateUMLMetamodelCommand extends ModelCreationCommandBase {
+
+ private final ThreadLocal<ModelSet> modelSet = new ThreadLocal<>();
+
+ public CreateUMLMetamodelCommand() {
+ super();
+ }
+
+ @Override
+ public void createModel(ModelSet modelSet) {
+ this.modelSet.set(modelSet);
+
+ try {
+ super.createModel(modelSet);
+ } finally {
+ this.modelSet.remove();
+ }
+ }
+
+ @Override
+ protected EObject createRootElement() {
+ return UMLFactory.eINSTANCE.createModel();
+ }
+
+ @Override
+ protected void initializeModel(EObject owner) {
+ // This is done after attachment of the package to the resource, and thus the resource set,
+ // which is required for the edit commands to work.
+
+ Package metamodel = (Package) owner;
+
+ // This is require a priori for various profile-based element-types to work
+ applyProfile(metamodel);
+
+ try {
+ // Use the Element Types framework to configure the new root element using the
+ // advice defined in this context
+ IClientContext clientContext = TypeContext.getContext(modelSet.get());
+ ConfigureRequest configureRequest = new ConfigureRequest(metamodel, MetamodelElementTypes.getMetamodelType());
+ configureRequest.setClientContext(clientContext);
+ configureRequest.setEditingDomain(modelSet.get().getTransactionalEditingDomain());
+
+ // Papyrus provides an advice that sets a default name for a new NamedElement. Tell it a
+ // specific name to set
+ URI uri = metamodel.eResource().getURI();
+ while (!uri.equals(uri.trimFileExtension())) {
+ uri = uri.trimFileExtension();
+ }
+ configureRequest.setParameter(RequestParameterConstants.NAME_TO_SET, uri.lastSegment());
+
+ // Obtain and execute the configure command
+ IElementEditService edit = ElementEditServiceUtils.getCommandProvider(MetamodelElementTypes.getMetamodelType(), clientContext);
+ ICommand configureCommand = edit.getEditCommand(configureRequest);
+ if (configureCommand != null && configureCommand.canExecute()) {
+ configureCommand.execute(new NullProgressMonitor(), null);
+ }
+ } catch (ServiceException | ExecutionException e) {
+ Activator.log.error("Failed to initialize new metamodel.", e);
+ }
+ }
+
+ /** Apply the UML Standard Profile to the new metamodel. */
+ private void applyProfile(Package package_) {
+ Profile standardProfile = (Profile) UML2Util.load(modelSet.get(), URI.createURI(UMLResource.STANDARD_PROFILE_URI), UMLPackage.Literals.PROFILE);
+ if (standardProfile != null) {
+ package_.applyProfile(standardProfile);
+ } else {
+ Activator.log.error("UML Standard Profile is not available.", null);
+ }
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePrivateMatcher.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePrivateMatcher.java
new file mode 100644
index 00000000000..53f8312340f
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePrivateMatcher.java
@@ -0,0 +1,55 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.gmf.runtime.emf.type.core.IElementMatcher;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.util.UMLSwitch;
+
+/**
+ * A matcher for elements that must have private visibility in an UML metamodel.
+ */
+public class MustBePrivateMatcher implements IElementMatcher {
+
+ private final Switch<Boolean> mustBePrivate = new MustBePrivate();
+
+ @Override
+ public boolean matches(EObject eObject) {
+ return mustBePrivate.doSwitch(eObject);
+ }
+
+ //
+ // Nested types
+ //
+
+ /** Associations must be private; nothing else must. */
+ private static class MustBePrivate extends UMLSwitch<Boolean> {
+
+ @Override
+ public Boolean caseAssociation(Association object) {
+ return true;
+ }
+
+ @Override
+ public Boolean defaultCase(EObject object) {
+ return false;
+ }
+
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePublicMatcher.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePublicMatcher.java
new file mode 100644
index 00000000000..d7e5994572c
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/matchers/MustBePublicMatcher.java
@@ -0,0 +1,79 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.matchers;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.gmf.runtime.emf.type.core.IElementMatcher;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.util.UMLSwitch;
+
+/**
+ * A matcher for elements that must have public visibility in an UML metamodel.
+ */
+public class MustBePublicMatcher implements IElementMatcher {
+
+ private final Switch<Boolean> mustBePublic = new MustBePublic();
+
+ @Override
+ public boolean matches(EObject eObject) {
+ return mustBePublic.doSwitch(eObject);
+ }
+
+ //
+ // Nested types
+ //
+
+ /** Classifiers that are not associations must be public, as must features, operation parameters, and enumeration literals. */
+ private static class MustBePublic extends UMLSwitch<Boolean> {
+
+ @Override
+ public Boolean caseAssociation(Association object) {
+ return false;
+ }
+
+ @Override
+ public Boolean caseClassifier(Classifier object) {
+ return true;
+ }
+
+ @Override
+ public Boolean caseFeature(Feature object) {
+ return true;
+ }
+
+ @Override
+ public Boolean caseParameter(Parameter object) {
+ return true;
+ }
+
+ @Override
+ public Boolean caseEnumerationLiteral(EnumerationLiteral object) {
+ return true;
+ }
+
+ @Override
+ public Boolean defaultCase(EObject object) {
+ return false;
+ }
+
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/types/MetamodelElementTypes.java b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/types/MetamodelElementTypes.java
new file mode 100644
index 00000000000..37a44368f26
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/src/org/eclipse/papyrus/toolsmiths/example/umlformetamodels/internal/types/MetamodelElementTypes.java
@@ -0,0 +1,43 @@
+/*****************************************************************************
+ * Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.toolsmiths.example.umlformetamodels.internal.types;
+
+import org.eclipse.gmf.runtime.emf.type.core.ElementTypeRegistry;
+import org.eclipse.gmf.runtime.emf.type.core.IElementType;
+import org.eclipse.papyrus.uml.service.types.element.UMLElementTypes;
+
+/**
+ * Convenient access to the element types for UML Metamodeling.
+ */
+public class MetamodelElementTypes {
+
+ private static final String PREFIX = "org.eclipse.papyrus.toolsmiths.example.umlformetamodels."; //$NON-NLS-1$
+ private static final String METAMODEL = PREFIX + "Metamodel"; //$NON-NLS-1$
+ private static final String METACLASS = PREFIX + "Metaclass"; //$NON-NLS-1$
+
+ public static IElementType getMetamodelType() {
+ return ElementTypeRegistry.getInstance().getType(METAMODEL);
+ }
+
+ public static IElementType getMetaclassType() {
+ return ElementTypeRegistry.getInstance().getType(METACLASS);
+ }
+
+ public static IElementType getPropertyType() {
+ return UMLElementTypes.PROPERTY;
+ }
+
+}
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/icons/full/ctool16/new_example.gif b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/icons/full/ctool16/new_example.gif
new file mode 100644
index 00000000000..8a31f458379
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/icons/full/ctool16/new_example.gif
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/icons/full/wizban/new_example.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/icons/full/wizban/new_example.png
new file mode 100644
index 00000000000..b6a78d49251
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/icons/full/wizban/new_example.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/plugin.properties b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/plugin.properties
new file mode 100644
index 00000000000..f2c636807c9
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/plugin.properties
@@ -0,0 +1,17 @@
+###############################################################################
+# Copyright (c) 2021 Christian W. Damus, CEA LIST, and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+pluginVendor = Eclipse Modeling Project
+pluginName = Papyrus ElementTypes Recipes Toolsmiths Documentation
+
+example.name = Element Types Configurations Recipes Example
+example.description = Working examples of the Element Types Configurations recipes in the developer documentation.
+example.project.description = An architecture framework for definition of metamodels using UML that \
+ employs element types to restrict the available UML concepts.
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/plugin.xml b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/plugin.xml
new file mode 100644
index 00000000000..a4b17dc17dc
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/plugin.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.help.toc">
+ <toc
+ file="target/generated-eclipse-help/recipeToolsmiths-devDoc-main-toc.xml"
+ primary="false">
+ </toc>
+ <toc
+ file="target/generated-eclipse-help/recipeToolsmithsElementTypesDoc-toc.xml"
+ primary="false">
+ </toc>
+ </extension>
+
+ <extension point="org.eclipse.ui.newWizards">
+ <wizard
+ id="org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc.UMLForMetamodelsWizard"
+ name="%example.name"
+ class="org.eclipse.emf.common.ui.wizard.ExampleInstallerWizard"
+ category="org.eclipse.ui.Examples/org.eclipse.papyrus.developer.doc.examples"
+ project="true"
+ icon="icons/full/ctool16/new_example.gif">
+ <description>%example.description</description>
+ <selection class="org.eclipse.ui.IWorkingSet" />
+ </wizard>
+ </extension>
+
+ <extension point="org.eclipse.emf.common.ui.examples">
+ <example
+ id="org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc.UMLForMetamodels"
+ wizardID="org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc.UMLForMetamodelsWizard"
+ pageImage="icons/full/wizban/new_example.png">
+ <fileToOpen
+ location="org.eclipse.papyrus.toolsmiths.example.umlformetamodels/model/uml4metamodels.elementtypesconfigurations"
+ editorID="org.eclipse.papyrus.infra.types.presentation.ElementTypesConfigurationsEditorID"/>
+ <projectDescriptor
+ name="org.eclipse.papyrus.toolsmiths.example.umlformetamodels"
+ contentURI="examples/org.eclipse.papyrus.toolsmiths.example.umlformetamodels/"
+ description="%example.project.description"/>
+ </example>
+ </extension>
+
+</plugin>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/pom.xml b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/pom.xml
new file mode 100644
index 00000000000..016c581952c
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/pom.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>org.eclipse.papyrus.plugins-doc</artifactId>
+ <groupId>org.eclipse.papyrus</groupId>
+ <version>0.0.1-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ <packaging>eclipse-plugin</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.eclipse.mylyn.docs</groupId>
+ <artifactId>org.eclipse.mylyn.wikitext.maven</artifactId>
+ <configuration>
+ <sourceFolder>src/site/mediawiki</sourceFolder>
+ <outputFolder>${project.build.directory}/generated-eclipse-help</outputFolder>
+ <multipleOutputFiles>false</multipleOutputFiles>
+ <navigationImages>true</navigationImages>
+ <formatOutput>true</formatOutput>
+ <htmlFilenameFormat>$1.html</htmlFilenameFormat>
+ <xmlFilenameFormat>$1-toc.xml</xmlFilenameFormat>
+ <helpPrefix>target/generated-eclipse-help</helpPrefix>
+ </configuration>
+ <executions>
+ <execution>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>eclipse-help</goal>
+ </goals>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.eclipse.mylyn.docs</groupId>
+ <artifactId>org.eclipse.mylyn.wikitext.mediawiki</artifactId>
+ <version>${mylyn.wikitext.version}</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ <plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <!--
+ Process Classes phase runs to post-process compiler output, which comprises the HTML documents
+ generated by Mylyn Wikitext in the Compile phase.
+ -->
+ <phase>process-classes</phase>
+ <configuration>
+ <target>
+ <!--
+ Replace our command link placeholder with the actual link that cannot be expressed in mediawiki mark-up.
+ And it requires <head> content that also cannot be expressed in the wikimedia source.
+ -->
+ <replace
+ file="${project.build.directory}/generated-eclipse-help/recipeToolsmithsElementTypesDoc.html">
+ <replaceFilter>
+ <replaceToken><![CDATA[</head>]]></replaceToken>
+ <replaceValue><![CDATA[ <script type="text/javascript" src="PLUGINS_ROOT/org.eclipse.help/livehelp.js"/>
+ </head>]]></replaceValue>
+ </replaceFilter>
+ <replaceFilter>
+ <replaceToken>%LAUNCH_EXAMPLE_WIZARD%</replaceToken>
+ <replaceValue><![CDATA[<a class="command-link" href='javascript:executeCommand("org.eclipse.ui.newWizard(newWizardId=org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc.UMLForMetamodelsWizard)")'><img src="PLUGINS_ROOT/org.eclipse.help/command_link.svg"/> click here to launch the wizard</a>]]></replaceValue>
+ </replaceFilter>
+ </replace>
+ </target>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ No newline at end of file
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-example.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-example.png
new file mode 100644
index 00000000000..28a90388adc
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-example.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-model-wizard.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-model-wizard.png
new file mode 100644
index 00000000000..9120d971b42
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-model-wizard.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-model.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-model.png
new file mode 100644
index 00000000000..63fa7fa97b6
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/new-model.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/reference-constraint.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/reference-constraint.png
new file mode 100644
index 00000000000..e17788099fe
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/reference-constraint.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/relationship-constraint.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/relationship-constraint.png
new file mode 100644
index 00000000000..6fa817f804c
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/relationship-constraint.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/reorient-constraint.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/reorient-constraint.png
new file mode 100644
index 00000000000..935d898a8e6
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/reorient-constraint.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/required-stereotype.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/required-stereotype.png
new file mode 100644
index 00000000000..1b47b9d76be
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/required-stereotype.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/set-values.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/set-values.png
new file mode 100644
index 00000000000..b2dde65dc50
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/set-values.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/stereotype-matcher.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/stereotype-matcher.png
new file mode 100644
index 00000000000..e08b1a909da
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/stereotype-matcher.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/stereotype-types.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/stereotype-types.png
new file mode 100644
index 00000000000..ac2c7dac66c
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/stereotype-types.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/types-example.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/types-example.png
new file mode 100644
index 00000000000..36b098db436
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/types-example.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/value-specifications.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/value-specifications.png
new file mode 100644
index 00000000000..25fe1aa618e
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/images/value-specifications.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/recipeToolsmiths-devDoc-main-toc.xml b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/recipeToolsmiths-devDoc-main-toc.xml
new file mode 100644
index 00000000000..c4688b66688
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/recipeToolsmiths-devDoc-main-toc.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc label="Toolsmiths" link_to="../org.eclipse.papyrus.infra.doc/toc.xml#PapyrusDocDev">
+ <topic label="Element Types Configurations Recipes" >
+ <link toc="target/generated-eclipse-help/recipeToolsmithsElementTypesDoc-toc.xml"/>
+ </topic>
+</toc>
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/recipeToolsmithsElementTypesDoc.mediawiki b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/recipeToolsmithsElementTypesDoc.mediawiki
new file mode 100644
index 00000000000..59c3d1472a6
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.recipe.elementtypes.doc/src/site/mediawiki/recipeToolsmithsElementTypesDoc.mediawiki
@@ -0,0 +1,695 @@
+==Overview==
+
+Papyrus provides a framework to define specific editing rules for model elements, the '''Element Types Configurations''' models. This aggregation of models, integrated with the '''Architecture Framework''' or simple extension points, can define how domain specific tool users will edit their model elements using operations such as create, delete, move, or set attributes.
+
+This documentation will provide some simple recipes on how to use this configuration model with concrete examples. These examples can be imported and run in your development environment to see them in action.
+
+==Prerequisites==
+
+* Java basic knowledge
+* UML knowledge
+
+The Element Types Framework is a component of the GMF Run-time. It provides for pluggable rules to manage the lifecycle of model elements, and allows extension and modification of existing rules by means of ''advice''. Papyrus adds on top of that framework a model-based description of ''element types'' and ''advice'', rather than using simply extension points. It is then much simpler to define new concepts, and the extension mechanism is designed so it can be extended itself, and it can also be referenced by other configuration models, like architecture models or palette configurations for diagrams.
+The goal of this document is to walk through the most typical scenarios in which the ''Element Types Configurations'' models are used to customize the
+editing experience for a domain-specific language, by way of a fully-formed example.
+
+==Example Project==
+
+The recipes presented in this document are implemented in an example ''Architecture Framework'' for creation and editing of ''metamodels'' using UML. This is an extension of the ''Software Engineering'' architecture domain for UML that is provided by Papyrus, adding a ''Metamodels'' architecture
+framework alongside Papyrus's ''UML'' language and ''Profile'' framework. To install the example plug-in project, %LAUNCH_EXAMPLE_WIZARD% or launch the ''New Example'' wizard
+via the ''File'' &rarr; ''New'' &rarr; ''Example...'' menu:
+
+[[Image:images/new-example.png|thumb|New Example Project wizard]]
+
+Select the ''Element Types Configurations Recipes'' example and press ''Next''.
+
+[[Image:images/types-example.png|thumb|New Element Types Configurations Recipes example]]
+
+Finish the wizard to create the plug-in project and it will open the ''Element Types Configurations'' model for the ''UML for Metamodels''
+architecture framework. Build the project and launch a run-time workbench. In that workbench, you can now create a new UML-based metamodel using
+the ''New Papyrus Model'' wizard. In the ''Papyrus'' perspective, invoke the ''File'' &rarr; ''New'' &rarr; ''Papyrus Model'' action and
+choose the ''Metamodels'' framework in the ''Software Engineering'' domain:
+
+[[Image:images/new-model-wizard.png|thumb|New Papyrus Model wizard]]
+
+Complete the wizard as usual to create a new UML-based metamodel and see how the ''Element Types Configurations'' defined in this plug-in reduce the
+UML concepts available to just those employed in the definition of metamodels. And observe the initial configuration of new model, which is all
+implemented by ''advice'' in the element types configurations model: a default value for the package URI and a "starter kit" metaclass with a name
+attribute:
+
+[[Image:images/new-model.png|thumb|New metamodel configured by edit advice]]
+
+==Generic Editing Rules==
+
+This section presents recipes for common editing customizations that are not specific to UML semantics but are generally applicable to EMF-based models.
+The example Element Types Configurations model for UML metamodels defines a number of ''edit advice'' contributions to two element types
+used in metamodels, including two ''specialization types'' specific to metamodels (beyond common UML concepts):
+
+* Metamodel: a model stereotyped as «metamodel» from the UML Standard Profile
+* Metaclass: a class stereotyped as «metaclass» from the UML Standard Profile
+
+The stereotype aspect of these element type configurations is detailed in the section on UML-specific editing rules, below.
+
+===Configuring a New Element===
+
+Creation of a new element in the model comprises two steps: the edit helper of the container provides a command to create the new element,
+and then once that new element has been created, the edit helper for that element provides a command to ''configure'' it.
+
+This is demonstrated in the example by the ''New Metaclass Advice'' bound to the ''Metaclass'' element type configuration. This is a
+simple ''AdviceBindingConfiguration'' owned by the ''Metaclass'' specialization type configuration. This advice binding primarily just
+references a Java class implementing the <tt>IEditHelperAdvice</tt> interface, in this case the <tt>NewMetaclassAdvice</tt> class. Many common scenarios
+for edit advice do not require custom code implemented this way in Java, but can be expressed directly in the Element Types Configurations model.
+This configuration example is a case where it is convenient to do it in code.
+
+The <tt>NewMetaclassAdvice</tt> class overrides the <tt>getAfterConfigureCommand(ConfigureRequest)</tt> method to create a property
+in the new metaclass, to get the user started with some content to edit. This creation of additional objects is itself implemented via
+the ''Element Types'' framework, using the edit helpers and their attendant advice to accomplish the creation of the property and setting
+its type, potentially further advices by other contributions.
+
+<source lang="java">
+ @Override
+ protected ICommand getAfterConfigureCommand(ConfigureRequest request) {
+ org.eclipse.uml2.uml.Class metaclass = (org.eclipse.uml2.uml.Class) request.getElementToConfigure();
+
+ // Create a new property
+ CreateElementRequest createRequest = new CreateElementRequest(metaclass, MetamodelElementTypes.getPropertyType());
+ createRequest.setParameter(RequestParameterConstants.NAME_TO_SET, "name"); //$NON-NLS-1$
+
+ // Use the edit service to ensure that creation of the property, itself, is advised by element types
+ IElementEditService edit = ElementEditServiceUtils.getCommandProvider(metaclass);
+ ICommand createProperty = edit.getEditCommand(createRequest);
+
+ // The type of the new property can only be set once the property exists, so defer setting it until then
+ SetRequest setTypeRequest = new SetRequest(request.getEditingDomain(), null,
+ UMLPackage.Literals.TYPED_ELEMENT__TYPE, getStringType(request));
+ ICommand setType = new DeferredSetValueCommand(setTypeRequest) {
+ @Override
+ protected EObject getElementToEdit() {
+ return createRequest.getNewElement();
+ }
+ };
+
+ return CompositeCommand.compose(createProperty, setType);
+ }
+</source>
+
+A simpler example of configuration of new elements is setting initial values of attributes. In the example of the UML for Metamodels, the
+''SetValuesAdviceConfiguration'' is used to set the visibility of newly created elements. Both advice configurations are bound to the
+''UML::NamedElement'' type (for which visibility is defined):
+
+* for named elements that must be public (as determined by a custom ''MustBePublicMatcher'' class), the advice sets the visibility to ''public''
+* for named elements that must be private (as is the case for associations), the advice sets the visibility to ''private''
+
+[[Image:images/set-values.png|thumb|Set values advice configurations]]
+
+<blockquote>The warning markers are a consequence of the reuse in the ''SetValuesAdviceConfiguration'' of the UML Metamodel in a non-UML context.
+The advice configuration uses the UML ''ValueSpecification'' to model the values to set in attributes of the matching elements, but a
+''ValueSpecification'' must be owned by another UML element. Here, there is no UML owner because the value is contained in an Element Types
+Configurations element. Hence the warnings reported by validation of the Element Types Configurations model.</blockquote>
+
+The simplest values to set are primitives: booleans, numers, and strings, for which UML provides convenient literal value specifications:
+
+[[Image:images/value-specifications.png|thumb|UML value specifications]]
+
+In the UML for Metamodels example, the specification of the value to set is a bit more complex because the value is an ''enumeration literal'',
+which is defined in the ''UML Metamodel Library'' model and so must be referenced by indirection using an ''InstanceValue''.
+
+
+===Deleting Dependent Elements===
+
+It often happens that an element in a model requires others for its definition, such that if some element it depends on is deleted from the model,
+then it should be deleted, also. For example, an a UML model, a ''Generalization'' relationship does not make sense without the ''general'' classifier
+to which refers. If that general classifier should be deleted from the model, then all generalizations that reference it as their general are also
+deleted.
+
+Exceptions to this behaviour can be established on a case-by-case basis. The advice that implements destruction of dependents may choose to
+recognize the <tt>DEPENDENTS_TO_KEEP</tt> request parameter to exempt dependent elements that otherwise would be deleted.
+
+Finally, deletion of dependents is not limited to deletion of dependent ''elements'' from the model only. Any action can be taken on deletion of
+an object to update dependents to make them "correct" according to the domain's semantics.
+
+====Destroy Dependents====
+
+The GMF Run-time provides the <tt>DestroyDependentsRequest</tt> to gather commands from edit advice to delete elements from the model that
+need to be deleted along with an element that is being deleted (usually resulting from some user action). Override the
+<tt>getBeforeDestroyDependentsCommand(DestroyDependentsRequest)</tt> method in your advice class to return one or more commands to destroy
+dependent elements. Because the deletion of an element is a recursive process over its entire content tree in the model and the same elements
+may be dependents of multiple elements being destroyed, and also because this process is recursive over the dependents being destroyed, the
+request itself provides tracking of which dependents are being destroyed overall to avoid redundant calculations of commands.
+
+In the UML for Metamodels example, the ''DataTypeDeletionAdvice'' advice binding configuration provides for deletion of attributes of metaclasses
+that are typed by an enumeration or primitive type that is being deleted from the model. In the Java implementation of this advice, you can
+see how the UML <tt>CacheAdapter</tt> API is used to find elements by inverse reference that are typed by the ''DataType'' being deleted.
+For each, the advice obtains a deletion command from the ''Destroy Dependents Request'': if any is already being deleted for any reason, then
+the request returns <tt>null</tt> for the command to avoid redundancy. This null result is seamlessly handled by the command composition API.
+
+An wrinkle that applications may sometimes want to overlay on this process is prompting the user to confirm whether they want to proceed with
+a command because of the possibly unintended consequences that it will have. The example ''DataTypeDeletionAdvice'' achieves this by including
+in the edit operation a command that prompts the user upon execution and cancels itself if the user does not confirm.
+
+<blockquote>'''Note''' that it is important never to put up a dialog or other user interaction in the advice, itself, when it constructs these
+edit commands. The advice can be consulted in many circumstances where Papyrus needs a command not to execute but to determine what to
+present in the UI, for example whether to show an edit command in a menu or to enable or disable controls in the ''Properties'' view.
+Any user interaction must be performed only when the command is actually executed, and then may necessitate cancellation of the command,
+which implies unrolling any changes made by prior commands in a composite operation (which is handled automatically by the GMF Run-time).</blockquote>
+
+<source lang="java">
+ /**
+ * When destroying a {@link DataType}, destroy also any properties or operation parameters
+ * typed by it, with interactive user confirmation.
+ */
+ @Override
+ protected ICommand getBeforeDestroyDependentsCommand(DestroyDependentsRequest request) {
+ ICommand result = null;
+
+ // This covers the enumerations and primitive types that we can use in metamodels
+ if (request.getElementToDestroy() instanceof DataType) {
+ // Find attributes typed by this data type
+ DataType dataType = (DataType) request.getElementToDestroy();
+
+ // The UML Cache Adapter maintains an inverse reference map. We need to find
+ // objects that reference our DataType; the DataType does not reference them
+ CacheAdapter cache = CacheAdapter.getCacheAdapter(dataType);
+ if (cache != null) {
+ Collection<EStructuralFeature.Setting> settings = cache.getInverseReferences(dataType, UMLPackage.Literals.TYPED_ELEMENT__TYPE, true);
+ if (!settings.isEmpty()) {
+ result = deleteOwners(settings, request);
+ }
+ }
+ }
+
+ return CompositeCommand.compose(result, super.getBeforeDestroyDependentsCommand(request));
+ }
+
+ /**
+ * Obtain a command to delete the owners of reference {@code settings}.
+ *
+ * @param settings
+ * settings of references to the object being deleted
+ * @param request
+ * the request gathering dependents of the the object to delete that also should be deleted
+ * @return a command to delete the objects that own the reference {@code settings}
+ */
+ private ICommand deleteOwners(Collection<EStructuralFeature.Setting> settings, DestroyDependentsRequest request) {
+ Collection<TypedElement> typedElements = settings.stream().map(EStructuralFeature.Setting::getEObject)
+ .map(TypedElement.class::cast).distinct().collect(Collectors.toList());
+
+ String listOfNames = typedElements.stream().map(NamedElement::getQualifiedName).collect(Collectors.joining(", "));
+ String prompt = NLS.bind("The following elements will also be deleted. Proceed?\n{0}.", listOfNames);
+
+ ICommand promptToConfirm = new PromptToConfirmCommand(prompt);
+ ICommand destroyTypedElements = request.getDestroyDependentsCommand(typedElements);
+
+ return CompositeCommand.compose(promptToConfirm, destroyTypedElements);
+ }
+</source>
+
+====Preserve Select Dependents====
+
+Papyrus provides a full-featured suite of Element Types Configurations and edit advice for the UML language. The example ''architecture framework''
+for metamodel definition extends, refines, and restricts these to suit its purposes. One default editing behaviour that it needs to override
+is an edit advice for deletion of ''Associations'' that Papyrus provides, to delete the member ends that the ''Association'' does not own but
+are owned by the associated classifiers (owned ends of the association are deleted anyways as they are contained within it). The advice that
+performs this deletion of dependent member ends observes the <tt>DEPENDENTS_TO_KEEP</tt> parameter of the request to skip deleting any
+member ends that are in this preservation list.
+
+The UML for Metamodels example defines an ''AssociationEditAdvice'' that overrides the <tt>getBeforeDestroyDependentsCommand</tt> method
+to add the association's member ends to the <tt>DEPENDENTS_TO_KEEP</tt> parameter (creating this list if it does not already exist).
+To ensure that this advice can set the preservation list before the standard UML advice calculates what to delete, the ''AssociationEditAdvice''
+in the <tt>uml4metamodels.elementtypesconfigurations</tt> model is configured to be ordered ''before'' the Papyrus UML association advice.
+
+<source lang="java">
+ @Override
+ protected ICommand getBeforeDestroyDependentsCommand(DestroyDependentsRequest request) {
+ ICommand result = null;
+
+ if (request.getElementToDestroy() instanceof Association) {
+ // The association advice following this will attempt to destroy the member ends, so block that
+ Association association = (Association) request.getElementToDestroy();
+ protectMemberEnds(association, request);
+ }
+
+ return CompositeCommand.compose(result, super.getBeforeDestroyDependentsCommand(request));
+ }
+
+ /**
+ * Configure the <em>dependents to keep</em> parameter of the {@code request} to preserve the
+ * member ends of the {@code association} that it does not own.
+ *
+ * @param association
+ * an association being destroyed
+ * @param request
+ * the gathering dependencies of the {@code association} that also should be destroyed
+ */
+ protected void protectMemberEnds(Association association, DestroyDependentsRequest request) {
+ List<EObject> dependentsToKeep = RequestParameterUtils.getDependentsToKeep(request, true);
+
+ for (Property end : association.getMemberEnds()) {
+ if (end.getOwningAssociation() != association) {
+ dependentsToKeep.add(end);
+ }
+ }
+ }
+</source>
+
+====Update Dependents====
+
+The usual response to the <tt>DestroyDependentsRequest</tt> is to provide commands to destroy additional elements that depend on the element
+being destroyed, usually mediated by the request as discussed above. However, the contract of advice is to provide additional commands generally
+into the edit operation. These commands can perform whatever kinds of changes are needed, and the destroy-dependents phase can be a useful hook
+for this.
+
+The UML for Metamodels example, again in the ''AssociationEditAdvice'', not only blocks the standard behaviour of deleting member ends but
+effectively supplants that behaviour by updating attributes of those end properties that they may only have in the context of an association.
+In this case, as we will see below, a property may only subset another property if it is an end of an association. So here, in response to
+the <tt>DestroyDependentsRequest</tt>, the ''AssociationEditAdvice'' finds any classifier-owned member ends that are subsets and provides
+command to clear those collections of subsetted properties.
+
+<source lang="java">
+ @Override
+ protected ICommand getBeforeDestroyDependentsCommand(DestroyDependentsRequest request) {
+ ICommand result = null;
+
+ if (request.getElementToDestroy() instanceof Association) {
+ // The association advice following this will attempt to destroy the member ends, so block that
+ Association association = (Association) request.getElementToDestroy();
+ protectMemberEnds(association, request);
+
+ // But as these ends will no longer be in an association, they should not be subsets
+ for (Property end : association.getMemberEnds()) {
+ if (end.getOwningAssociation() != association && end.eIsSet(UMLPackage.Literals.PROPERTY__SUBSETTED_PROPERTY)) {
+ result = CompositeCommand.compose(result, getUnsetCommand(request, end, UMLPackage.Literals.PROPERTY__SUBSETTED_PROPERTY));
+ }
+ }
+ }
+
+ return CompositeCommand.compose(result, super.getBeforeDestroyDependentsCommand(request));
+ }
+
+ /**
+ * Create a command to unset the given {@code feature} of an {@code owner} of that feature.
+ *
+ * @param parentRequest
+ * the request in which edit context we are fetching a corollary command
+ * @param owner
+ * the object that owns the {@code feature} to unset
+ * @param feature
+ * the feature to unset in the {@code owner}
+ * @return the unset command, or {@code null} if no relevant command can be obtained
+ */
+ protected ICommand getUnsetCommand(IEditCommandRequest parentRequest, EObject owner, EStructuralFeature feature) {
+ ICommand result = null;
+
+ IElementEditService edit = ElementEditServiceUtils.getCommandProvider(owner, parentRequest.getClientContext());
+ if (edit != null) {
+ result = edit.getEditCommand(new UnsetRequest(parentRequest.getEditingDomain(), owner, feature));
+ }
+
+ return result;
+ }
+</source>
+
+===Forbid Element Creation===
+
+A very common customization is to forbid the creation of certain kinds of elements in certain other elements. In particular, this is one of the
+primary mechanisms for pruning the "New Child" and "New Relationship" menus in the Papyrus context menu. This menu is generated dynamically and
+omits entries for elements that the Element Types framework provides non-executable commands to create.
+
+In the UML for Metamodels example, a Metamodel may contain only a tiny subset of what UML generally permits as contents of a package.
+The ''Metamodel'' element type configuration defines a ''ConstraintAdviceConfiguration'' with a ''ReferenceConstraint'' that is configured to
+permit a metamodel to contain only a select few types of elements and reject all others. The details of how this works are so:
+
+* the ''ReferenceConstraint'' includes a rule that allows elements matching a select few ''element types'' to be referenced by the package (note that, in this case, the only valid references of these types happen to be containment references)
+* a second rule in the ''ReferenceConstraint'' forbids all elements in any containment reference of the package (note that the absence of a filter means that the rule matches anything)
+
+[[Image:images/reference-constraint.png|thumb|Reference constraint restricting the contents of a metamodel]]
+
+Papyrus provides an edit advice implementation that interprets this constraint configuration model at run-time in the ''request approval'' phase of
+building the edit operation (the <tt>approveRequest(IEditCommandRequest)</tt> API). The algorithm is an iterative evaluation of the reference constraints:
+
+* if the first reference constraint matches the reference into which the request would either create, set, or move an element, then the constraint's filter is evaluated on the object that is to be created/set/moved into that reference. If the filter matches, then the request is approved or denied according the ''isPermitted'' attribute of the constraint. Otherwise, the algorithm proceeds to the next constraint to repeat the process
+* if all of the reference constraints have been processed and none matched the reference being edited, then the constraint overall is deemed not to be applicable and the edit request is approved. '''Note''' that some other advice may independently deny the edit request for whatever reason
+
+A reference constraint can be configured with rules of two kinds:
+
+* an ''AnyReference'' rule matches any reference being edited. It can be configured to match any containment reference, any cross-reference, or any reference whatsoever. Container references are always excluded from consideration because they are canonically edited from the containing end
+* a ''Reference'' rule matches some particular <tt>EReference</tt> specified in its configuration
+
+This configuration model is extensible: if these rules do not match your needs, you can define your own in an Ecore model extending the ''ReferencePermission'' <tt>EClass</tt> and use it in your Element Types Configurations models.
+
+The filters to match the element being created or set in a reference are similarly extensible. Papyrus provides the ''ElementTypeFilter'' that
+handles most common scenarios: it specifies an ''Element Type'' to match against the element and an indication of whether to match
+
+* when the element matches the given ''Element Type'' or any specialization of that type (the default match condition)
+* when the element matches exactly the given ''Element Type'', not any specialization of it
+* when the element matches the given ''Element Type'' or any subtype. This includes not only specialization types, but also metamodel types that are subtypes of the given type's metamodel type and specializations of those metamodel subtypes
+* when the element matches any supertype of the the given ''Element Type''
+
+Of course, toolsmiths are free to define custom filters to handle requirements not covered by the filters provided by Papyrus.
+
+===Forbid Certain Changes to Properties===
+
+A corollary to initialization of properties as described above with ''SetValuesAdviceConfigurations'' is the prevention of certain edits
+to the properties of model elements.
+
+The typical way to forbid certain edits is via the ''approve request'' mechanism discussed above in the reference constraints. The UML for
+Metamodels example also demonstrates how to do this with custom code. The ''MetamodelRequiredAttributesAdvice'' overrides the
+<tt>approveRequest(IEditCommandRequest)</tt> method to deny edits that would unset or blank the package URI via a <tt>SetRequest</tt> or
+<tt>UnsetRequest</tt>.
+
+<source lang="java">
+ @Override
+ public boolean approveRequest(IEditCommandRequest request) {
+ if (request instanceof SetRequest) {
+ return approveSetRequest((SetRequest) request);
+ } else if (request instanceof UnsetRequest) {
+ return approveUnsetRequest((UnsetRequest) request);
+ } else {
+ return super.approveRequest(request);
+ }
+ }
+
+ protected boolean approveSetRequest(SetRequest request) {
+ boolean result = true;
+
+ if (request.getFeature() == UMLPackage.Literals.PACKAGE__URI) {
+ result = request.getValue() != null && !String.valueOf(request.getValue()).isBlank();
+ }
+
+ return result;
+ }
+
+ protected boolean approveUnsetRequest(UnsetRequest request) {
+ boolean result = true;
+
+ if (request.getFeature() == UMLPackage.Literals.PACKAGE__URI) {
+ result = false;
+ }
+
+ return result;
+ }
+</source>
+
+Similarly, the ''AssociationEndAdvice'' denies approval of requests that would add properties to the ''subsettedProperty'' attribute of a
+''Property'' that is not an end of an association. The ''RequiredVisibilityAdvice'' rejects any request that would set the visibility of
+an element that requires either public or private visibility to something else.
+
+===Forbid Relationship Creation or Reorientation===
+
+The preceding discussion covers the restriction of creation or assignment of the properties of model elements, whether references or
+or attributes, including containment references to forbid certain contents of an element. Many modeling languages have more elaborate
+ways of connecting elements, generally called ''Relationships'', that are themselves model elements. It is common, especially in UML,
+that these objects are neither contained by nor referenced by the objects that they relate. Instead, the only relationship references
+the elements that it relates and it may be contained by some element that is none of them.
+
+So, how to forbid creation of relationships between certain elements that otherwise the language would allow? The GMF Run-time provides
+two requests that the ''edit helper advice'' can intercept: <tt>CreateRelationshipRequest</tt> and <tt>ReorientRelationshipRequest</tt>.
+The former requests creation of a relationship between a source and a target end (for n-ary relationships, a sequence of edits is required)
+and the latter requests the change of source or target end of an existing relationship.
+
+The UML for Metamodels example allows creation only two of the many relationships supported by UML ''Classifiers'': ''Generalization'' and
+''Association''. Furthermore, these relationships are only allowed between metaclasses. So the ''Metaclass'' specialization type configuration
+includes a ''ConstraintAdviceConfiguration'' that constrains the allowed relationships:
+
+[[Image:images/relationship-constraint.png|thumb|Relationship constraint restricting the metaclass type]]
+
+Here the constraint is configured by a number of ''EndPermissions''. The evaluation of the constraint follows an algorithm similar to
+the ''ReferenceConstraint'':
+
+* an ''EndPermission'' either grants or denies an edit request matching its relationship filter. In the example above this is an ''ElementTypeFilter'' matching either the ''Generalization'' or ''Association'' type from UML
+* an ''EndPermission'' that matches the relationship type then tests the end or ends being edited against its ''end filter.'' Here permission is granted only for ends that are metaclasses
+
+The ''EndPermission'' has an attribute that determines which ends it will attempt to match: source, target, or all. The constraint overall applies equally to creation of a new relationship and to reorientation of an existing relationship. However, the latter case adds a wrinkle: whereas
+creation of a new relationship can be constrained exclusively by advice on the element types that it relates, the reorientation request is processed
+by the relationship, itself that exists ''a priori'' (or, more correctly, by its ''edit helper'' and attendant ''advice''). For that reason the
+UML for Metamodels example also defines ''ConstraintAdvice'' for the ''Generalization'' and ''Association'' element types:
+
+[[Image:images/reorient-constraint.png|thumb|Relationship constraints for reorientation]]
+
+These quite simply enumerate the permitted relationship ends.
+
+==UML-specific Editing Rules==
+
+The Element Types framework of the GMF Run-time is quite generic, handling the semantics of typical Ecore-defined models. As such, is has no
+inherent support for UML semantics, such as the strong dependency of stereotype applications on the elements that they extend. To cover these
+additional semantics, Papyrus adds more kinds of requests to manage the application and unapplication of stereotypes and profiles.
+Some specific advice configurations also are provided by Papyrus to implement basic editing constraints for stereotype and profile applications.
+
+The UML-specific edit requests that advice may be asked to approve or to contribute commands to are
+
+* <tt>ApplyStereotypeRequest</tt>: indicates the element to which a stereotype is to be applied, and which stereotype
+* <tt>UnapplyStereotypeRequest</tt>: indicates the element from which a stereotype is to be unapplied, and which stereotype
+* <tt>ApplyProfileRequest</tt>: indicates the profile to which a profile is to be applied, and which profile
+* <tt>UnapplyProfileRequest</tt>: indicates the profile from which a profile is to be unapplied, and which profile
+
+===Stereotype-based Element Types===
+
+A very common case in which editing functions need to be specialized is in models that have some domain-specific profile applied. In such
+case, it is usual that the stereotypes of the profile represent unique modeling concepts that it is useful to capture as ''Element Types''
+derived as specializations of types from UML. So, for example, in the domain of metamodelling, UML itself provides the ''Standard Profile''
+with stereotypes <tt>«Metamodel»</tt> and <tt>«Metaclass»</tt>. In the UML for Metamodels example project, these are modeled as specializations
+of the <tt>UML::Model</tt> and <tt>UML::Class</tt> element types, respectively:
+
+[[Image:images/stereotype-types.png|thumb|Element Types Configurations based on UML stereotypes]]
+
+===Applied Stereotype Matchers and Advice===
+
+Stereotype-based element types configurations need two essential components to capture the stereotype concept:
+
+* an ''element matcher'' that recognizes stereotyped elements as instances of the ''element type'' and
+* an ''advice'' that applies the stereotype to the UML element upon creation of an instance of the ''element type''
+
+Both of these functions are provided by the ''StereotypeMatcherAdviceConfiguration''. Create an instance of this configuration as the
+''matcher'' of your element type configuration and specify the profile URI and name of the stereotype:
+
+[[Image:images/stereotype-matcher.png|thumb|Specifying the stereotype to match/apply]]
+
+Note that this configuration supports multiple stereotypes, in which case all stereotypes must be applied for a successful match and all will
+be applied upon creation.
+
+===Applied Stereotype Invariant Constraint===
+
+An element in a UML or other EMF-based model generally cannot change its class and so has an invariant class type. An ''element type'' based
+on stereotype applications is more dynamic than the element's class because stereotypes may be applied or unapplied to or from an element, thus
+changing the ''element types'' that it matches. In cases where this plasticity of type is unwanted, the element type configuration can be
+configured with ''Constraint Advice'' bearing a ''StereotypeInvariantConstraint''. In the UML for Metamodels example, all classes in a
+metamodel are metaclasses and so must be recognized as such by their <tt>«Metaclass»</tt> stereotype:
+
+[[Image:images/required-stereotype.png|thumb|Required stereotype constraint]]
+
+This constraint denies any ''UnapplyStereotypeRequest'' that would remove any of the stereotypes specified by the element type's
+''matcher configuration''.
+
+<blockquote>'''Note''' that this constraint only works in ''element types'' configured with some kind of ''StereotypeApplicationMatcherConfiguration'',
+of which the dual-purpose ''StereotypeMatcherAdviceConfiguration'' is one.</blockquote>
+
+==Tips and Tricks==
+
+This section presents some tips for more effective editing advice and pitfalls to avoid when possible.
+
+===Performance===
+
+There are three areas generally to concentrate on to help reduce the performance impact of your edit-helper advice. Consider that the UML metamodel
+comprises hundreds of classes, each of which has at least one corresponding ''element type'' and ''edit helper'', and that Papyrus adds to this
+dozens of instances of advice for a wide variety of specific and cross-cutting editing concerns, ranging from the semantics of association ends to
+controlled resources (sub-models) and dependencies of diagram views.
+
+====Target Element Type====
+
+Try to bind your advice to the narrowest possible ''element type''. Advice bindings are not qualified by edit request, so for any edit operation,
+all advices bound to the element types being edit are consulted regardless of what kind of edit is requested. For some recursive operations, such
+as ''destroy element'' (and the ''destroy dependents'' that always accompanies it) this can add up to processing the product of a large number of
+requests with many advices. So, for example, if advice applies only an element with some stereotype, bind it to the specialization for that
+stereotype, like in the examples for the ''Metaclass'' type above. If an advice applies only to classes, bind it to the ''UML::Class'' element type
+and not to ''UML::Classifier'' or ''UML::NamedElement'' and just only provide commands for inputs that are classes. Most elements in an UML model
+are ''NamedElement''s!
+
+There are, however, cases where more general bindings are appropriate or even necessary. Papyrus provides several examples, itself:
+
+* an advice that deletes stereotype applications for an element being deleted. As all elements can be stereotype, this is bound to the ''UML::Element'' type
+* an advice that denies any request to edit an object in a read-only resource. As any kind of model object, not just UML elements but also diagram views and more, can be in a read-only resource, this advice is a wildcard binding (bound to all ''element types'')
+
+====Finding Associated Model Elements====
+
+A great many, if not most, use cases for edit advice require either examination of or operation on elements related in some way to the element for
+which an edit command is requested. The canonical case of this is the ''destroy dependents'' phase in assembly of a command for the
+''destroy element'' request. But there are others, especially in ''approval'' (or more precisely denial) of edit requests based on conditions
+involving the wider context of the model element.
+
+Often the related elements of interest are reachable by references from the element being edited, in which case they can be found quite efficiently.
+But in many cases, and curiously more often in the cases for which the advice is needed in the first place, these related elements are not reachable
+from the subject element but rather they are the ones that reference it, either directly or indirectly. Depending on the size of a model, it can be
+very costly to search the entire EMF ''ResourceSet'' looking for certain objects that reference the element being edited. For these cases, the EMF
+and UML2 APIs provide ''cross referencers'' that provide effectively constant-time look-up of inverse references.
+
+* for EMF-based models generally, the ''ECrossReferenceAdapter''
+* for UML models specifically, the UML2 ''CacheAdapter'' that provides the same ''ECrossReferenceAdapter'' API
+
+<blockquote>'''Note''' that in the context of Papyrus UML models, the UML API will always ensure that the ''CacheAdapter'' is attached
+to all elements in the model (in the ''ResourceSet''), so it should preferred as adding another ''ECrossReferenceAdapter'' is just redundant.
+</blockquote>
+
+Consider, for example, edit advice that seeks to deny approval of a ''DestroyElementRequest'' that would destroy a ''Classifier'' if that classifier
+is the type of one or more ''InstanceSpecification''s (ignoring for now enumerations and their owned literals). An ''InstanceSpecification'' references
+the ''Classifier''s that are its types; a ''Classifier'' does not reference its ''InstanceSpecification''s. So, this advice needs to ''invert'' the
+''InstanceSpecification::type'' reference:
+
+<source lang="java">
+ protected boolean approveDestroyElementRequest(DestroyElementRequest request) {
+ Classifier classifier = (Classifier) request.getElementToDestroy();
+ CacheAdapter cache = CacheAdapter.getCacheAdapter(classifier);
+ Collection<EStructuralFeature.Setting> settings = cache.getInverseReferences(classifier, UMLPackage.Literals.INSTANCE_SPECIFICATION__CLASSIFIER, true);
+ return settings.isEmpty();
+ }
+</source>
+
+This is a simple case where all that is needed is to determine that there is ''some'' object that references the element being edited in a particular
+role. More complex cases may need to iterate the settings provided as inverse references to inspect details of the objects (in this case,
+''InstanceSpecification''s) that own those references. But the important point is that in neither case is it necessary to search over the entire
+resource set looking for references. The adapter caches these at the time the model is loaded and maintains its index as it changes.
+
+====Avoiding Repeated Computation====
+
+Some edit operations are recursive by nature, especially ''DestroyElementRequest'' and ''DestroyDependentsRequest''. It may happen that dependents
+of the original element being edited have, recursively, dependents and that they have dependents in common. A naïve recursive algorithm could
+perform redundant computations repeatedly on the same and related model elements. One pattern often used in such situations is the storing of
+pre-computed results ''in the request''.
+
+An ''IEditCommandRequest'' includes a map of named parameters. Some of these are inputs to the original requested edit operation, e.g., name to assign
+to a new model element or pointer location at which to create a diagram view, but others can be set by advice routines to communication information
+to other advice. A single request instance is provided to all advice, or if not then at least the request parameters are propagated to any new
+request instances that are created, so that any advice can pick up data stashed previously in the processing of the reqiest.
+
+The GMF Run-time provides a special case of this in the ''DestroyDependentsRequest'' API. For any dependent element discovered by advice, if that
+dependent also should be deleted, then the advice asks the ''request'' for a command to delete it and returns that (possibly in addition to other
+commands performing other kinds of changes). This has two benefits:
+
+* the request keeps track of dependent elements for which it has created destruction commands. If some advice asks for a command to destroy some element that has already been processed, the request just returns <tt>null</tt> because there is nothing more to do
+* in the case that a new command needs to be computed to destroy a dependent, the request takes care of implementing the entire recursive deletion algorithm, including the recursive dependency graph, so that the advice need not be concerned with this complexity. By tracking all of this in the one request instance, depdency cycles are readily handled and do not result in unbounded recursion or iteration
+
+Any other advice classes implemented in coordination can pre-compute any kind of results on the graph of model elements and store it in
+the request parameters for other advice to pick up and avoid repeating work. An advice like the snippet below may not be doing much computation
+that is expensive to repeat, but it illustrates the APIs involved, accessing the request parameters:
+
+<source lang="java">
+ public class AutoNameAdvice extends AbstractEditHelperAdvice {
+
+ static final class Autonamer implements Supplier<String> {
+ private final String baseName;
+ private int index;
+
+ Autonamer(String baseName, int index) {
+ this.baseName = baseName;
+ this.index = index;
+ }
+
+ @Override
+ public String get() {
+ String result = baseName + " " + index;
+ index = index + 1;
+ return result;
+ }
+ }
+
+ @Override
+ public void configureRequest(IEditCommandRequest request) {
+ super.configureRequest(request);
+
+ if (request instanceof CreateElementRequest) {
+ configureCreateRequest((CreateElementRequest) request);
+ }
+ }
+
+ protected void configureCreateRequest(CreateElementRequest request) {
+ Autonamer autonamer = (Autonamer) request.getParameter(Autonamer.class.getName());
+ if (autonamer == null && request.getContainer() instanceof Namespace) {
+ // Create an autonamer to pick up again in configuring creation requests for
+ // any other elements in this namespace that other advices may wish to create
+ Namespace namespace = (Namespace) request.getContainer();
+ int memberCount = namespace.getMembers().size();
+
+ autonamer = new Autonamer("NewElement", memberCount + 1);
+
+ // This parameter will be passed along to the configure request after creation of
+ // the new element, so any advice that then creates further new elements can
+ // initialize create requests with the parameters of the configure request to
+ // pass along this context of unique automatic names
+ request.setParameter(Autonamer.class.getName(), autonamer);
+ }
+
+ if (autonamer != null) {
+ // Configure the unique name to set into the new element
+ request.setParameter(RequestParameterConstants.NAME_TO_SET, autonamer.get());
+ }
+ }
+ }
+</source>
+
+===Things to Avoid===
+
+This section discusses a few common pitfalls to avoid in the implementation of custom edit advice.
+
+====Interactive UI====
+
+An edit advice is involved in three of four phases of the construction and execution of an ''edit command'':
+
+1. configuring the edit request
+2. approving the edit request
+3. creating a command to compose in the requested edit operation
+
+Only the fourth stage, execution of the composed edit command, does not involve consultation of the advice. And it is only in this stage
+that it is safe to present any interactive UI. The first three stages can occur in a variety of situations that will not be followed by
+the fourth, e.g.:
+
+* collect edit operations to present in some kind of a menu
+* query whether an edit operation would be available/permitted
+
+In such scenarios edit commands may be created without any intent to execute them or, perhaps, to defer execution until some later time.
+Moreover, it can happen, and does in GMF-based applications such as Papyrus, that an edit command is created multiple times even when the
+intent is immediately to execute it.
+
+If a custom edit advice must seek user input via a dialog or menu or other mechanism in order to provide an executable command, then it
+cannot seek this input before creating that command. Instead, it must create a command that does the required user interaction when
+executed and, if it does not get acceptable input, returns a cancel result. The GMF Run-time handles this gracefully by reverting any
+model changes already performed by earlier commands in the composed edit command.
+
+A convenient pattern for this kind of user interactive command is the ''command wrapper''. This is especially useful when the command
+proceed with any input (even just some default). In cases where it is possible that the user interaction may not yield sufficient input,
+it is necessary to halt command execution and roll back any changes already performed by other commands. The best way to do this is to
+compose the edit advice command with a prior command that performs the interaction, updates shared state if necessary to capture in
+results, or cancels if the requisite inputs are not obtained. The ''DataTypeDeletionAdvice'' in the example project does just this to
+prompt the user to confirm deletion of related elements:
+
+<source lang="java">
+ Collection<TypedElement> typedElements = settings.stream().map(EStructuralFeature.Setting::getEObject)
+ .map(TypedElement.class::cast).distinct().collect(Collectors.toList());
+
+ String listOfNames = typedElements.stream().map(NamedElement::getQualifiedName).collect(Collectors.joining(", "));
+ String prompt = NLS.bind("The following elements will also be deleted. Proceed?\n{0}.", listOfNames);
+
+ // If this returns a cancel result, then the framework will undo any changes performed by earlier commands
+ ICommand promptToConfirm = new PromptToConfirmCommand("Delete Typed Elements", prompt);
+ ICommand destroyTypedElements = request.getDestroyDependentsCommand(typedElements);
+
+ return CompositeCommand.compose(promptToConfirm, destroyTypedElements);
+</source>
+
+In this simple case there is no other input requested than confirmation to proceed. More complex cases may need to store information
+provided by the user in some shared state for execution of the edit advice command to pick up.
+
+====Deferring Large Computations====
+
+Some edit commands may perform a great number of changes or require many complex calculations to determine what to do. The most common
+example of this in applications based on the GMF Run-time is deletion. This is a recursive operation over the entire content trees of
+all model elements selected by the user. If the computation of the advice command for operations that can tend to scale so large is
+particularly onerous, it may be a good idea to defer some of into the execution of the advice command, itself, rather than perform it
+up-front in the advice. This is very similar to the case of user interaction via the UI discussed above.
+
+====Modifying the Model in the Advice====
+
+Because the commands provided by advice may never end up being executed, for a variety of reasons, the advice should never make changes
+to the model except in the ''execute()''' method of the command that it provides. Advices are requested to configure and create commands
+in contexts that are ''read-only'' with respect to the model, where even changes that the advice would immediately revert are not
+permitted.
+
+
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.validation.doc/src/site/mediawiki/images/devDoc/Papyrus_ProblemsViewNewChild.png b/plugins/doc/org.eclipse.papyrus.toolsmiths.validation.doc/src/site/mediawiki/images/devDoc/Papyrus_ProblemsViewNewChild.png
new file mode 100644
index 00000000000..7428862c687
--- /dev/null
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.validation.doc/src/site/mediawiki/images/devDoc/Papyrus_ProblemsViewNewChild.png
Binary files differ
diff --git a/plugins/doc/org.eclipse.papyrus.toolsmiths.validation.doc/src/site/mediawiki/validationToolsmithsDevDoc.mediawiki b/plugins/doc/org.eclipse.papyrus.toolsmiths.validation.doc/src/site/mediawiki/validationToolsmithsDevDoc.mediawiki
index cc07757b4b8..47c9bca0c66 100644
--- a/plugins/doc/org.eclipse.papyrus.toolsmiths.validation.doc/src/site/mediawiki/validationToolsmithsDevDoc.mediawiki
+++ b/plugins/doc/org.eclipse.papyrus.toolsmiths.validation.doc/src/site/mediawiki/validationToolsmithsDevDoc.mediawiki
@@ -4,6 +4,7 @@ Papyrus provides for validation of tooling models for DSML and other customizati
* Validation of a UML '''profiles''', both static (generated) and dynamic
* Validation of '''element types configurations'''
* Validation of '''architecture domain''' models
+* Validation of '''element creation menu''' models
Validation is provided on-demand via the '''Papyrus Developer''' context menu and optionally also as a project builder.
@@ -160,3 +161,39 @@ The result is displayed in the ''''Problems'''' view and are categorized by the
Like others problems, you can double-click on one to open the relevant file. You may delete a problem that you think is resolved, but if it is not, then it will be presented again by the next validation.
+==Element Creation Menu Plug-in Validation==
+
+This section describes the validation checks performed by the '''Papyrus Plug-in Builder''' on ''Element Creation Menus''.
+
+===What is checked?===
+Several validation rules are checked for any plug-in project that contains Element Creation Menu models, including:
+* Bundle manifest dependencies on core Element Creation Menu bundles: '''WARNING'''
+** 'org.eclipse.papyrus.infra.newchild'
+* For each element creation menu model found in the plug-in:
+** Validation of the element creation menu model file itself: errors or warnings as described for different elements, below
+** an icon resource referenced by the element creation menu model does not exist: '''ERROR'''
+** a ''role'' name