diff options
author | Christian W. Damus | 2020-11-17 19:28:01 +0000 |
---|---|---|
committer | Christian W. Damus | 2020-11-24 14:45:51 +0000 |
commit | 75e6b4c3895e6e81a596fde3400bc611b9f2f8f6 (patch) | |
tree | f29c9d5f4525af57244c67cd47eab45c6ca89f0f | |
parent | d6da06d8c5d4a4ceaa94f7ec961c92793e293fee (diff) | |
download | org.eclipse.papyrus-75e6b4c3895e6e81a596fde3400bc611b9f2f8f6.tar.gz org.eclipse.papyrus-75e6b4c3895e6e81a596fde3400bc611b9f2f8f6.tar.xz org.eclipse.papyrus-75e6b4c3895e6e81a596fde3400bc611b9f2f8f6.zip |
Bug 568853: [Toolsmiths - ElementTypes] Add "MatchAndApply" Stereotype Matcher
- export StereotypeMatcher.ecore model to UML and use the UML as generator source
- add a class that specializes both StereotypeApplicationMatcherConfiguration and
AbstractAdviceBindingConfiguration to fulfill both roles
- register matcher and advice factories to instantiate matcher and advice
implementations from the new configuration
https://bugs.eclipse.org/bugs/show_bug.cgi?id=568853
Signed-off-by: Christian W. Damus <give.a.damus@gmail.com>
Change-Id: Iab4875a617ddf4d900451a6fc5b5f56b553c1d89
Signed-off-by: Christian W. Damus <give.a.damus@gmail.com>
28 files changed, 1915 insertions, 57 deletions
diff --git a/plugins/infra/types/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.genmodel b/plugins/infra/types/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.genmodel index d3a58d97c48..dddee19b85e 100644 --- a/plugins/infra/types/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.genmodel +++ b/plugins/infra/types/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.genmodel @@ -43,6 +43,9 @@ extensibleProviderFactory="true" contentTypeIdentifier="org.eclipse.papyrus.infra.types" fileExtensions="elementtypesconfigurations" ecorePackage="ElementTypesConfigurations.ecore#/" operationsPackage="org.eclipse.papyrus.infra.types.operations"> + <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/exporter/org.eclipse.uml2.uml.ecore.exporter"> + <genAnnotations source="ElementTypesConfigurations.uml"/> + </genAnnotations> <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="ElementTypesConfigurations.ecore#//InheritanceKind"> <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="ElementTypesConfigurations.ecore#//InheritanceKind/none"/> <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="ElementTypesConfigurations.ecore#//InheritanceKind/all"/> diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateAbstractAdviceBindingConfiguration_matcherConfiguration_StereotypeMatcherAdviceConfiguration.gif b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateAbstractAdviceBindingConfiguration_matcherConfiguration_StereotypeMatcherAdviceConfiguration.gif Binary files differnew file mode 100644 index 00000000000..6a5dfd409aa --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateAbstractAdviceBindingConfiguration_matcherConfiguration_StereotypeMatcherAdviceConfiguration.gif diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateContainerConfiguration_containerMatcherConfiguration_StereotypeMatcherAdviceConfiguration.gif b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateContainerConfiguration_containerMatcherConfiguration_StereotypeMatcherAdviceConfiguration.gif Binary files differnew file mode 100644 index 00000000000..2ce9ec86de4 --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateContainerConfiguration_containerMatcherConfiguration_StereotypeMatcherAdviceConfiguration.gif diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateElementTypeConfiguration_ownedAdvice_StereotypeMatcherAdviceConfiguration.gif b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateElementTypeConfiguration_ownedAdvice_StereotypeMatcherAdviceConfiguration.gif Binary files differnew file mode 100644 index 00000000000..d839c758a4c --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateElementTypeConfiguration_ownedAdvice_StereotypeMatcherAdviceConfiguration.gif diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateElementTypeSetConfiguration_adviceBindingsConfigurations_StereotypeMatcherAdviceConfiguration.gif b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateElementTypeSetConfiguration_adviceBindingsConfigurations_StereotypeMatcherAdviceConfiguration.gif Binary files differnew file mode 100644 index 00000000000..40f87e13167 --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateElementTypeSetConfiguration_adviceBindingsConfigurations_StereotypeMatcherAdviceConfiguration.gif diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateSpecializationTypeConfiguration_matcherConfiguration_StereotypeMatcherAdviceConfiguration.gif b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateSpecializationTypeConfiguration_matcherConfiguration_StereotypeMatcherAdviceConfiguration.gif Binary files differnew file mode 100644 index 00000000000..6a5dfd409aa --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/ctool16/CreateSpecializationTypeConfiguration_matcherConfiguration_StereotypeMatcherAdviceConfiguration.gif diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/obj16/StereotypeMatcherAdviceConfiguration.gif b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/obj16/StereotypeMatcherAdviceConfiguration.gif Binary files differnew file mode 100644 index 00000000000..89ad5da38ab --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/icons/full/obj16/StereotypeMatcherAdviceConfiguration.gif diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.di b/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.di new file mode 100644 index 00000000000..bf9abab340f --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.di @@ -0,0 +1,2 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/> diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.ecore b/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.ecore index d009de33081..2b8432da06d 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.ecore +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.ecore @@ -5,7 +5,9 @@ <eClassifiers xsi:type="ecore:EClass" name="StereotypeApplicationMatcherConfiguration" eSuperTypes="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.ecore#//AbstractMatcherConfiguration"> <eStructuralFeatures xsi:type="ecore:EAttribute" name="stereotypesQualifiedNames" - lowerBound="1" upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/> + lowerBound="1" upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eStructuralFeatures xsi:type="ecore:EAttribute" name="profileUri" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="StereotypeMatcherAdviceConfiguration" + eSuperTypes="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.ecore#//AbstractAdviceBindingConfiguration #//StereotypeApplicationMatcherConfiguration"/> </ecore:EPackage> diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.genmodel b/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.genmodel index 4e1a3dd2975..eea7943e0e4 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.genmodel +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.genmodel @@ -1,20 +1,71 @@ <?xml version="1.0" encoding="UTF-8"?> -<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" - xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" copyrightText="Copyright (c) 2014 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:
 CEA LIST - Initial API and implementation" +<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="Copyright (c) 2020 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:
CEA LIST - Initial API and implementation" modelDirectory="/org.eclipse.papyrus.uml.types.core/src-gen" editDirectory="/org.eclipse.papyrus.uml.types.core/src-gen" editorDirectory="/org.eclipse.papyrus.uml.types.core.editor/src-gen" modelPluginID="org.eclipse.papyrus.uml.types.core" modelName="StereotypeApplicationMatcherConfiguration" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" - testsDirectory="/org.eclipse.papyrus.uml.types.core.tests/src-gen" importerID="org.eclipse.emf.importer.ecore" - complianceLevel="7.0" copyrightFields="false" usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.genmodel#//types" - operationReflection="true" importOrganizing="true"> - <foreignModel>StereotypeMatcher.ecore</foreignModel> - <genPackages prefix="StereotypeApplicationMatcher" basePackage="org.eclipse.papyrus.uml.types.core.matchers" - resource="XML" disposableProviderFactory="true" childCreationExtenders="true" - ecorePackage="StereotypeMatcher.ecore#/"> - <genClasses ecoreClass="StereotypeMatcher.ecore#//StereotypeApplicationMatcherConfiguration" + testsDirectory="/org.eclipse.papyrus.uml.types.core.tests/src-gen" importerID="org.eclipse.uml2.uml.ecore.importer" + complianceLevel="11.0" copyrightFields="false" usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.genmodel#//types" + operationReflection="true" importOrganizing="true" operationsFolder="src-gen/"> + <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/exporter/org.eclipse.uml2.uml.ecore.exporter"> + <genAnnotations source="selectedPackages"> + <details key="http://www.eclipse.org/papyrus/uml/types/stereotypematcher/1.1" + value="StereotypeMatcher.uml"/> + </genAnnotations> + <genAnnotations source="selectedReferencedPackages"> + <details key="http://www.eclipse.org/emf/2002/Ecore" value="pathmap://UML_METAMODELS/Ecore.metamodel.uml"/> + <details key="http://www.eclipse.org/papyrus/infra/elementtypesconfigurations/1.2" + value="ElementTypesConfigurations.uml"/> + </genAnnotations> + <details key="directoryURI" value="."/> + <details key="SUBSETS_ANNOTATIONS" value="PROCESS"/> + <details key="UNION_ANNOTATIONS" value="PROCESS"/> + <details key="BODY_ANNOTATIONS" value="IGNORE"/> + <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/> + <details key="XMI_IDENTIFIERS" value="IGNORE"/> + <details key="ANNOTATION_DETAILS" value="IGNORE"/> + <details key="ECORE_TAGGED_VALUES" value="PROCESS"/> + <details key="DOCUMENTATION_ANNOTATIONS" value="PROCESS"/> + <details key="REDEFINES_ANNOTATIONS" value="PROCESS"/> + </genAnnotations> + <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="PROCESS"/> + <details key="ANNOTATION_DETAILS" value="PROCESS"/> + <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="PROCESS"/> + <details key="DUPLICATE_FEATURE_INHERITANCE" value="PROCESS"/> + <details key="COMMENTS" value="PROCESS"/> + <details key="DERIVED_FEATURES" value="PROCESS"/> + <details key="SUPER_CLASS_ORDER" value="PROCESS"/> + <details key="DUPLICATE_OPERATION_INHERITANCE" value="PROCESS"/> + <details key="REDEFINING_OPERATIONS" value="PROCESS"/> + <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/> + <details key="UNION_PROPERTIES" value="PROCESS"/> + <details key="DUPLICATE_OPERATIONS" value="PROCESS"/> + <details key="NON_API_INVARIANTS" value="PROCESS"/> + <details key="CAMEL_CASE_NAMES" value="IGNORE"/> + <details key="SUBSETTING_PROPERTIES" value="PROCESS"/> + <details key="OPERATION_BODIES" value="IGNORE"/> + <details key="ECORE_TAGGED_VALUES" value="PROCESS"/> + <details key="UNTYPED_PROPERTIES" value="REPORT"/> + <details key="REDEFINING_PROPERTIES" value="PROCESS"/> + <details key="INVOCATION_DELEGATES" value="PROCESS"/> + <details key="VALIDATION_DELEGATES" value="PROCESS"/> + </genAnnotations> + <foreignModel>StereotypeMatcher.uml</foreignModel> + <genPackages xsi:type="genmodel:GenPackage" prefix="StereotypeApplicationMatcher" + basePackage="org.eclipse.papyrus.uml.types.core.matchers" resource="XML" disposableProviderFactory="true" + generateExampleClass="false" childCreationExtenders="true" ecorePackage="StereotypeMatcher.ecore#/" + operationsPackage="org.eclipse.papyrus.uml.types.core.matchers.stereotype.operations"> + <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/exporter/org.eclipse.uml2.uml.ecore.exporter"> + <genAnnotations source="StereotypeMatcher.uml"/> + </genAnnotations> + <genClasses xsi:type="genmodel:GenClass" ecoreClass="StereotypeMatcher.ecore#//StereotypeApplicationMatcherConfiguration" labelFeature="#//stereotype/StereotypeApplicationMatcherConfiguration/profileUri"> - <genFeatures createChild="false" ecoreFeature="ecore:EAttribute StereotypeMatcher.ecore#//StereotypeApplicationMatcherConfiguration/stereotypesQualifiedNames"/> - <genFeatures createChild="false" ecoreFeature="ecore:EAttribute StereotypeMatcher.ecore#//StereotypeApplicationMatcherConfiguration/profileUri"/> + <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute StereotypeMatcher.ecore#//StereotypeApplicationMatcherConfiguration/stereotypesQualifiedNames"/> + <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute StereotypeMatcher.ecore#//StereotypeApplicationMatcherConfiguration/profileUri"/> </genClasses> + <genClasses xsi:type="genmodel:GenClass" ecoreClass="StereotypeMatcher.ecore#//StereotypeMatcherAdviceConfiguration"/> </genPackages> </genmodel:GenModel> diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.notation b/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.notation new file mode 100644 index 00000000000..ccd1be1bae9 --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.notation @@ -0,0 +1,355 @@ +<?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: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="_ty9yACkEEeuEo8scjf0hcw" type="PapyrusUMLClassDiagram" name="Stereotype Matchers" measurementUnit="Pixel"> + <children xmi:type="notation:Shape" xmi:id="_0DJ9sCkEEeuEo8scjf0hcw" type="Class_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_0DLy4CkEEeuEo8scjf0hcw" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_0DLy4SkEEeuEo8scjf0hcw" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_0DLy4ikEEeuEo8scjf0hcw" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_0DLy4ykEEeuEo8scjf0hcw" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_0DLy5CkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_0DLy5SkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_0DLy5ikEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0DLy5ykEEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_0DLy6CkEEeuEo8scjf0hcw" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_0DLy6SkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_0DLy6ikEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_0DLy6ykEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0DLy7CkEEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_0DLy7SkEEeuEo8scjf0hcw" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_0DLy7ikEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_0DLy7ykEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_0DLy8CkEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0DLy8SkEEeuEo8scjf0hcw"/> + </children> + <element xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwdRLoEeeDV7UHoBIkeA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0DJ9sSkEEeuEo8scjf0hcw" x="365" y="94"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_0DZOQykEEeuEo8scjf0hcw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_0DZ1UCkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_0DZ1UikEEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwdRLoEeeDV7UHoBIkeA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0DZ1USkEEeuEo8scjf0hcw" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_3tCOcCkEEeuEo8scjf0hcw" type="Class_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_3tCOcikEEeuEo8scjf0hcw" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_3tCOcykEEeuEo8scjf0hcw" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_3tCOdCkEEeuEo8scjf0hcw" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_3tCOdSkEEeuEo8scjf0hcw" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_3tCOdikEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_3tCOdykEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3tCOeCkEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3tCOeSkEEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_3tCOeikEEeuEo8scjf0hcw" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_3tCOeykEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_3tCOfCkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3tCOfSkEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3tCOfikEEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_3tC1gCkEEeuEo8scjf0hcw" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_3tC1gSkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_3tC1gikEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3tC1gykEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3tC1hCkEEeuEo8scjf0hcw"/> + </children> + <element xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwVxLoEeeDV7UHoBIkeA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3tCOcSkEEeuEo8scjf0hcw" x="659" y="96"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_3tQ38ykEEeuEo8scjf0hcw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_3tQ39CkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_3tQ39ikEEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwVxLoEeeDV7UHoBIkeA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3tQ39SkEEeuEo8scjf0hcw" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_6YzRICkEEeuEo8scjf0hcw" type="Class_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_6Yz4MCkEEeuEo8scjf0hcw" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_6Yz4MSkEEeuEo8scjf0hcw" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_6Yz4MikEEeuEo8scjf0hcw" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_6Yz4MykEEeuEo8scjf0hcw" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6Yz4NCkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6Yz4NSkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6Yz4NikEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Yz4NykEEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_6Yz4OCkEEeuEo8scjf0hcw" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6Yz4OSkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6Yz4OikEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6Yz4OykEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Yz4PCkEEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_6Yz4PSkEEeuEo8scjf0hcw" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6Yz4PikEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_6Yz4PykEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_6Yz4QCkEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Yz4QSkEEeuEo8scjf0hcw"/> + </children> + <element xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwQhLoEeeDV7UHoBIkeA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6YzRISkEEeuEo8scjf0hcw" x="56" y="41"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_6Y-QQCkEEeuEo8scjf0hcw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6Y-QQSkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_6Y-QQykEEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwQhLoEeeDV7UHoBIkeA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6Y-QQikEEeuEo8scjf0hcw" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_7S9zUCkEEeuEo8scjf0hcw" type="Class_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_7S-aYCkEEeuEo8scjf0hcw" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_7S-aYSkEEeuEo8scjf0hcw" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_7S-aYikEEeuEo8scjf0hcw" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_7S-aYykEEeuEo8scjf0hcw" type="Class_AttributeCompartment"> + <children xmi:type="notation:Shape" xmi:id="_8Oau8CkEEeuEo8scjf0hcw" type="Property_ClassAttributeLabel"> + <element xmi:type="uml:Property" href="StereotypeMatcher.uml#_N4HmAykEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_8Oau8SkEEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_8OuQ8CkEEeuEo8scjf0hcw" type="Property_ClassAttributeLabel"> + <element xmi:type="uml:Property" href="StereotypeMatcher.uml#_N4HmBSkEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_8OuQ8SkEEeuEo8scjf0hcw"/> + </children> + <styles xmi:type="notation:TitleStyle" xmi:id="_7S-aZCkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_7S-aZSkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_7S-aZikEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7S-aZykEEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_7S-aaCkEEeuEo8scjf0hcw" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_7S-aaSkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_7S-aaikEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_7S-aaykEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7S-abCkEEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_7S-abSkEEeuEo8scjf0hcw" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_7S-abikEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_7S-abykEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_7S-acCkEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7S-acSkEEeuEo8scjf0hcw"/> + </children> + <element xmi:type="uml:Class" href="StereotypeMatcher.uml#_N4HmASkEEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7S9zUSkEEeuEo8scjf0hcw" x="355" y="310"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_7TFvICkEEeuEo8scjf0hcw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_7TFvISkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_7TFvIykEEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="StereotypeMatcher.uml#_N4HmASkEEeuEo8scjf0hcw"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7TFvIikEEeuEo8scjf0hcw" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_Bs4iwCkFEeuEo8scjf0hcw" type="Class_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_Bs4iwikFEeuEo8scjf0hcw" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_Bs4iwykFEeuEo8scjf0hcw" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_Bs4ixCkFEeuEo8scjf0hcw" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_Bs4ixSkFEeuEo8scjf0hcw" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_Bs4ixikFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_Bs4ixykFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Bs4iyCkFEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Bs4iySkFEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_Bs5J0CkFEeuEo8scjf0hcw" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_Bs5J0SkFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_Bs5J0ikFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Bs5J0ykFEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Bs5J1CkFEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_Bs5J1SkFEeuEo8scjf0hcw" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_Bs5J1ikFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_Bs5J1ykFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_Bs5J2CkFEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Bs5J2SkFEeuEo8scjf0hcw"/> + </children> + <element xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwgxLoEeeDV7UHoBIkeA"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Bs4iwSkFEeuEo8scjf0hcw" x="53" y="245"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_BtBFoykFEeuEo8scjf0hcw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_BtBFpCkFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_BtBFpikFEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwgxLoEeeDV7UHoBIkeA"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BtBFpSkFEeuEo8scjf0hcw" x="200"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_TynZECkFEeuEo8scjf0hcw" type="Class_Shape"> + <children xmi:type="notation:DecorationNode" xmi:id="_TynZEikFEeuEo8scjf0hcw" type="Class_NameLabel"/> + <children xmi:type="notation:DecorationNode" xmi:id="_TynZEykFEeuEo8scjf0hcw" type="Class_FloatingNameLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_TynZFCkFEeuEo8scjf0hcw" y="15"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_TynZFSkFEeuEo8scjf0hcw" type="Class_AttributeCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_TynZFikFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_TynZFykFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_TynZGCkFEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TynZGSkFEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_TyoAICkFEeuEo8scjf0hcw" type="Class_OperationCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_TyoAISkFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_TyoAIikFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_TyoAIykFEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TyoAJCkFEeuEo8scjf0hcw"/> + </children> + <children xmi:type="notation:BasicCompartment" xmi:id="_TyoAJSkFEeuEo8scjf0hcw" type="Class_NestedClassifierCompartment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_TyoAJikFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:SortingStyle" xmi:id="_TyoAJykFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_TyoAKCkFEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TyoAKSkFEeuEo8scjf0hcw"/> + </children> + <element xmi:type="uml:Class" href="StereotypeMatcher.uml#_TymK8CkFEeuEo8scjf0hcw"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TynZESkFEeuEo8scjf0hcw" x="524" y="509"/> + </children> + <children xmi:type="notation:Shape" xmi:id="_6P-26ikFEeuEo8scjf0hcw" type="StereotypeComment"> + <styles xmi:type="notation:TitleStyle" xmi:id="_6P-26ykFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_6P-27SkFEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="StereotypeMatcher.uml#_TymK8CkFEeuEo8scjf0hcw"/> + </styles> + <element xsi:nil="true"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6P-27CkFEeuEo8scjf0hcw" x="724" y="509"/> + </children> + <styles xmi:type="notation:StringValueStyle" xmi:id="_ty9yASkEEeuEo8scjf0hcw" name="diagram_compatibility_version" stringValue="1.4.0"/> + <styles xmi:type="notation:DiagramStyle" xmi:id="_ty9yAikEEeuEo8scjf0hcw"/> + <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_ty9yAykEEeuEo8scjf0hcw" diagramKindId="org.eclipse.papyrus.uml.diagram.class"> + <owner xmi:type="uml:Model" href="StereotypeMatcher.uml#_N4HmACkEEeuEo8scjf0hcw"/> + </styles> + <element xmi:type="uml:Model" href="StereotypeMatcher.uml#_N4HmACkEEeuEo8scjf0hcw"/> + <edges xmi:type="notation:Connector" xmi:id="_0DZ1UykEEeuEo8scjf0hcw" type="StereotypeCommentLink" source="_0DJ9sCkEEeuEo8scjf0hcw" target="_0DZOQykEEeuEo8scjf0hcw"> + <styles xmi:type="notation:FontStyle" xmi:id="_0DZ1VCkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_0DZ1WCkEEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwdRLoEeeDV7UHoBIkeA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0DZ1VSkEEeuEo8scjf0hcw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0DZ1VikEEeuEo8scjf0hcw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0DZ1VykEEeuEo8scjf0hcw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_3tQ39ykEEeuEo8scjf0hcw" type="StereotypeCommentLink" source="_3tCOcCkEEeuEo8scjf0hcw" target="_3tQ38ykEEeuEo8scjf0hcw"> + <styles xmi:type="notation:FontStyle" xmi:id="_3tQ3-CkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_3tQ3_CkEEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwVxLoEeeDV7UHoBIkeA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3tQ3-SkEEeuEo8scjf0hcw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3tQ3-ikEEeuEo8scjf0hcw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3tQ3-ykEEeuEo8scjf0hcw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_6Y-QRCkEEeuEo8scjf0hcw" type="StereotypeCommentLink" source="_6YzRICkEEeuEo8scjf0hcw" target="_6Y-QQCkEEeuEo8scjf0hcw"> + <styles xmi:type="notation:FontStyle" xmi:id="_6Y-QRSkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_6Y-QSSkEEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwQhLoEeeDV7UHoBIkeA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6Y-QRikEEeuEo8scjf0hcw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6Y-QRykEEeuEo8scjf0hcw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6Y-QSCkEEeuEo8scjf0hcw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_7TFvJCkEEeuEo8scjf0hcw" type="StereotypeCommentLink" source="_7S9zUCkEEeuEo8scjf0hcw" target="_7TFvICkEEeuEo8scjf0hcw"> + <styles xmi:type="notation:FontStyle" xmi:id="_7TFvJSkEEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_7TFvKSkEEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="StereotypeMatcher.uml#_N4HmASkEEeuEo8scjf0hcw"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7TFvJikEEeuEo8scjf0hcw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TFvJykEEeuEo8scjf0hcw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7TFvKCkEEeuEo8scjf0hcw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_-nEBUCkEEeuEo8scjf0hcw" type="Generalization_Edge" source="_7S9zUCkEEeuEo8scjf0hcw" target="_0DJ9sCkEEeuEo8scjf0hcw"> + <children xmi:type="notation:DecorationNode" xmi:id="_-nEBUykEEeuEo8scjf0hcw" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_G0hyACkFEeuEo8scjf0hcw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_-nEBVCkEEeuEo8scjf0hcw" x="-1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_-nEBUSkEEeuEo8scjf0hcw"/> + <element xmi:type="uml:Generalization" href="StereotypeMatcher.uml#_N4HmAikEEeuEo8scjf0hcw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-nEBUikEEeuEo8scjf0hcw" points="[306, 386, -643984, -643984]$[285, 197, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_G2hWECkFEeuEo8scjf0hcw" id="(0.3422222222222222,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_G2hWESkFEeuEo8scjf0hcw" id="(0.39520958083832336,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_BtBFpykFEeuEo8scjf0hcw" type="StereotypeCommentLink" source="_Bs4iwCkFEeuEo8scjf0hcw" target="_BtBFoykFEeuEo8scjf0hcw"> + <styles xmi:type="notation:FontStyle" xmi:id="_BtBFqCkFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_BtBFrCkFEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwgxLoEeeDV7UHoBIkeA"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BtBFqSkFEeuEo8scjf0hcw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BtBFqikFEeuEo8scjf0hcw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BtBFqykFEeuEo8scjf0hcw"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_DJkjMCkFEeuEo8scjf0hcw" type="Generalization_Edge" source="_Bs4iwCkFEeuEo8scjf0hcw" target="_6YzRICkEEeuEo8scjf0hcw"> + <children xmi:type="notation:DecorationNode" xmi:id="_DJlKQCkFEeuEo8scjf0hcw" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Hcd7wCkFEeuEo8scjf0hcw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_DJlKQSkFEeuEo8scjf0hcw" y="39"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_DJkjMSkFEeuEo8scjf0hcw"/> + <element xmi:type="uml:Generalization" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwhBLoEeeDV7UHoBIkeA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DJkjMikFEeuEo8scjf0hcw" points="[635, 555, -643984, -643984]$[661, 481, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Hc4LcCkFEeuEo8scjf0hcw" id="(0.30057803468208094,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Hc4ygCkFEeuEo8scjf0hcw" id="(0.32,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_F4IbMCkFEeuEo8scjf0hcw" type="Association_Edge" source="_Bs4iwCkFEeuEo8scjf0hcw" target="_0DJ9sCkEEeuEo8scjf0hcw"> + <children xmi:type="notation:DecorationNode" xmi:id="_F4IbMykFEeuEo8scjf0hcw" type="Association_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_G0xCkCkFEeuEo8scjf0hcw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_F4IbNCkFEeuEo8scjf0hcw" x="1" y="-18"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_F4IbNSkFEeuEo8scjf0hcw" type="Association_NameLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_G1BhQCkFEeuEo8scjf0hcw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_F4IbNikFEeuEo8scjf0hcw" x="-1" y="18"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_F4IbNykFEeuEo8scjf0hcw" type="Association_TargetRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_G1RY4CkFEeuEo8scjf0hcw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_F4IbOCkFEeuEo8scjf0hcw" x="31" y="-18"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_F4IbOSkFEeuEo8scjf0hcw" type="Association_SourceRoleLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_G1gpcCkFEeuEo8scjf0hcw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_F4IbOikFEeuEo8scjf0hcw" x="-76" y="-35"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_F4IbOykFEeuEo8scjf0hcw" type="Association_SourceMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_G14c4CkFEeuEo8scjf0hcw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_F4IbPCkFEeuEo8scjf0hcw" x="13" y="16"/> + </children> + <children xmi:type="notation:DecorationNode" xmi:id="_F4IbPSkFEeuEo8scjf0hcw" type="Association_TargetMultiplicityLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_G2IUgCkFEeuEo8scjf0hcw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_F4IbPikFEeuEo8scjf0hcw" x="-18" y="23"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_F4IbMSkFEeuEo8scjf0hcw"/> + <element xmi:type="uml:Association" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwlBLoEeeDV7UHoBIkeA"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F4IbMikFEeuEo8scjf0hcw" points="[226, 293, -643984, -643984]$[392, 194, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_G2hWEikFEeuEo8scjf0hcw" id="(1.0,0.48)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_G2h9ICkFEeuEo8scjf0hcw" id="(0.16167664670658682,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_LY0ckCkFEeuEo8scjf0hcw" type="Generalization_Edge" source="_TynZECkFEeuEo8scjf0hcw" target="_3tCOcCkEEeuEo8scjf0hcw"> + <children xmi:type="notation:DecorationNode" xmi:id="_LY1DoCkFEeuEo8scjf0hcw" type="Generalization_StereotypeLabel"> + <styles xmi:type="notation:BooleanValueStyle" xmi:id="_L5C0wCkFEeuEo8scjf0hcw" name="IS_UPDATED_POSITION" booleanValue="true"/> + <layoutConstraint xmi:type="notation:Location" xmi:id="_LY1DoSkFEeuEo8scjf0hcw" x="1" y="38"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_LY0ckSkFEeuEo8scjf0hcw"/> + <element xmi:type="uml:Generalization" href="StereotypeMatcher.uml#_LYiIsCkFEeuEo8scjf0hcw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LY0ckikFEeuEo8scjf0hcw" points="[542, 387, -643984, -643984]$[641, 202, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LZZEUCkFEeuEo8scjf0hcw" id="(0.7414634146341463,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LZZEUSkFEeuEo8scjf0hcw" id="(0.38144329896907214,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_kX9asCkFEeuEo8scjf0hcw" type="Generalization_Edge" source="_TynZECkFEeuEo8scjf0hcw" target="_7S9zUCkEEeuEo8scjf0hcw"> + <children xmi:type="notation:DecorationNode" xmi:id="_kX-BwCkFEeuEo8scjf0hcw" type="Generalization_StereotypeLabel"> + <layoutConstraint xmi:type="notation:Location" xmi:id="_kX-BwSkFEeuEo8scjf0hcw" y="40"/> + </children> + <styles xmi:type="notation:FontStyle" xmi:id="_kX9asSkFEeuEo8scjf0hcw"/> + <element xmi:type="uml:Generalization" href="StereotypeMatcher.uml#_kXqfwCkFEeuEo8scjf0hcw"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kX9asikFEeuEo8scjf0hcw" points="[584, 509, -643984, -643984]$[548, 433, -643984, -643984]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kYipgCkFEeuEo8scjf0hcw" id="(0.2926829268292683,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kYipgSkFEeuEo8scjf0hcw" id="(0.8577777777777778,1.0)"/> + </edges> + <edges xmi:type="notation:Connector" xmi:id="_6P-27ikFEeuEo8scjf0hcw" type="StereotypeCommentLink" source="_TynZECkFEeuEo8scjf0hcw" target="_6P-26ikFEeuEo8scjf0hcw"> + <styles xmi:type="notation:FontStyle" xmi:id="_6P-27ykFEeuEo8scjf0hcw"/> + <styles xmi:type="notation:EObjectValueStyle" xmi:id="_6P-28ykFEeuEo8scjf0hcw" name="BASE_ELEMENT"> + <eObjectValue xmi:type="uml:Class" href="StereotypeMatcher.uml#_TymK8CkFEeuEo8scjf0hcw"/> + </styles> + <element xsi:nil="true"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6P-28CkFEeuEo8scjf0hcw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6P-28SkFEeuEo8scjf0hcw"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6P-28ikFEeuEo8scjf0hcw"/> + </edges> +</notation:Diagram> diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.uml b/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.uml new file mode 100644 index 00000000000..a774fc7b64a --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/model/StereotypeMatcher.uml @@ -0,0 +1,36 @@ +<?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:Model xmi:id="_N4HmACkEEeuEo8scjf0hcw" name="stereotype" URI="http://www.eclipse.org/papyrus/uml/types/stereotypematcher/1.1"> + <packageImport xmi:type="uml:PackageImport" xmi:id="_tzCDcCkEEeuEo8scjf0hcw"> + <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/> + </packageImport> + <packagedElement xmi:type="uml:Class" xmi:id="_N4HmASkEEeuEo8scjf0hcw" name="StereotypeApplicationMatcherConfiguration"> + <generalization xmi:type="uml:Generalization" xmi:id="_N4HmAikEEeuEo8scjf0hcw"> + <general xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwdRLoEeeDV7UHoBIkeA"/> + </generalization> + <ownedAttribute xmi:type="uml:Property" xmi:id="_N4HmAykEEeuEo8scjf0hcw" name="stereotypesQualifiedNames" visibility="public" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/> + <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_N4HmBCkEEeuEo8scjf0hcw" value="*"/> + </ownedAttribute> + <ownedAttribute xmi:type="uml:Property" xmi:id="_N4HmBSkEEeuEo8scjf0hcw" name="profileUri" visibility="public" isOrdered="true"> + <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EString"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_N4HmBikEEeuEo8scjf0hcw"/> + </ownedAttribute> + </packagedElement> + <packagedElement xmi:type="uml:Class" xmi:id="_TymK8CkFEeuEo8scjf0hcw" name="StereotypeMatcherAdviceConfiguration"> + <generalization xmi:type="uml:Generalization" xmi:id="_LYiIsCkFEeuEo8scjf0hcw"> + <general xmi:type="uml:Class" href="platform:/plugin/org.eclipse.papyrus.infra.types/model/ElementTypesConfigurations.uml#_VkhwVxLoEeeDV7UHoBIkeA"/> + </generalization> + <generalization xmi:type="uml:Generalization" xmi:id="_kXqfwCkFEeuEo8scjf0hcw" general="_N4HmASkEEeuEo8scjf0hcw"/> + </packagedElement> + <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_N4HmBykEEeuEo8scjf0hcw"> + <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N4HmCCkEEeuEo8scjf0hcw" 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:Model> + <Ecore:EPackage xmi:id="_N4HmCSkEEeuEo8scjf0hcw" base_Package="_N4HmACkEEeuEo8scjf0hcw" nsPrefix="stereotypematcher" basePackage="org.eclipse.papyrus.uml.types.core.matchers"/> + <Ecore:EClass xmi:id="_N4HmCikEEeuEo8scjf0hcw" base_Class="_N4HmASkEEeuEo8scjf0hcw"/> + <Ecore:EClass xmi:id="_6PrU4CkFEeuEo8scjf0hcw" base_Class="_TymK8CkFEeuEo8scjf0hcw"/> +</xmi:XMI> diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/plugin.properties b/plugins/uml/org.eclipse.papyrus.uml.types.core/plugin.properties index 24b8fd6ab86..1e62d86f138 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/plugin.properties +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/plugin.properties @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2010 CEA LIST. +# Copyright (c) 2010, 2020 CEA LIST, Christian W. Damus, 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 @@ -9,6 +9,7 @@ # # Contributors: # Remi Schnekenburger (CEA LIST) remi.schnekenburger@cea.fr - initial API and implementation +# Christian W. Damus - bug 568853 ################################################################################## pluginName = UML configurations for ElementTypesConfigurations framework providerName = Eclipse Modeling Project @@ -55,3 +56,4 @@ _UI_StereotypePropertyReferenceEdgeAdviceConfiguration_type = Stereotype Propert _UI_StereotypePropertyReferenceEdgeAdviceConfiguration_featureToSet_feature = Feature To Set _UI_StereotypePropertyReferenceEdgeAdviceConfiguration_stereotypeQualifiedName_feature = Stereotype Qualified Name _UI_StereotypePropertyReferenceEdgeAdviceConfiguration_edgeLabel_feature = Edge Label +_UI_StereotypeMatcherAdviceConfiguration_type = Stereotype Matcher Advice Configuration diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/plugin.xml b/plugins/uml/org.eclipse.papyrus.uml.types.core/plugin.xml index 4f87f3969fe..01eeebcdc76 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/plugin.xml +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/plugin.xml @@ -2,25 +2,6 @@ <?eclipse version="3.0"?> <plugin> - - - - - - - - - - - - - - - - - - - <extension point="org.eclipse.emf.ecore.generated_package"> <!-- @generated SetTypeAdvice --> <package @@ -177,6 +158,13 @@ </adviceConfigurationKind> </extension> <extension + point="org.eclipse.papyrus.infra.types.core.adviceConfigurationKind"> + <adviceConfigurationKind + configurationClass="org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration" + factoryClass="org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceAdviceFactory"> + </adviceConfigurationKind> + </extension> + <extension point="org.eclipse.papyrus.infra.types.rulebased.ruleKind"> <ruleKind configurationClass="org.eclipse.papyrus.uml.types.core.rules.invariantstereotype.InvariantStereotypeRuleConfiguration" @@ -190,6 +178,13 @@ factoryClass="org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherConfigurationFactory"> </matcherConfigurationKind> </extension> + <extension + point="org.eclipse.papyrus.infra.types.core.matcherConfigurationKind"> + <matcherConfigurationKind + configurationClass="org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration" + factoryClass="org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherConfigurationFactory"> + </matcherConfigurationKind> + </extension> <extension point="org.eclipse.emf.ecore.generated_package"> <!-- @generated StereotypePropertyReferenceEdgeAdvice --> <package diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcherFactory.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcherFactory.java index 37cc580ce9d..9cfaca156b3 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcherFactory.java +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcherFactory.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2014 CEA LIST. + * Copyright (c) 2014, 2020 CEA LIST, Christian W. Damus, and others. * * * All rights reserved. This program and the accompanying materials @@ -11,6 +11,7 @@ * * Contributors: * CEA LIST - Initial API and implementation + * Christian W. Damus - bug 568853 */ package org.eclipse.papyrus.uml.types.core.matchers.stereotype; @@ -43,6 +44,15 @@ public interface StereotypeApplicationMatcherFactory extends EFactory { StereotypeApplicationMatcherConfiguration createStereotypeApplicationMatcherConfiguration(); /** + * Returns a new object of class '<em>Stereotype Matcher Advice Configuration</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Stereotype Matcher Advice Configuration</em>'. + * @generated + */ + StereotypeMatcherAdviceConfiguration createStereotypeMatcherAdviceConfiguration(); + + /** * Returns the package supported by this factory. * <!-- begin-user-doc --> * <!-- end-user-doc --> diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcherPackage.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcherPackage.java index e2fa71dd012..ee355973737 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcherPackage.java +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcherPackage.java @@ -145,6 +145,188 @@ public interface StereotypeApplicationMatcherPackage extends EPackage { /** + * The meta object id for the '{@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl.StereotypeMatcherAdviceConfigurationImpl <em>Stereotype Matcher Advice Configuration</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl.StereotypeMatcherAdviceConfigurationImpl + * @see org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl.StereotypeApplicationMatcherPackageImpl#getStereotypeMatcherAdviceConfiguration() + * @generated + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION = 1; + + /** + * The feature id for the '<em><b>Description</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__DESCRIPTION = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__DESCRIPTION; + + /** + * The feature id for the '<em><b>Owning Type</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_TYPE = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__OWNING_TYPE; + + /** + * The feature id for the '<em><b>Before</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__BEFORE = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__BEFORE; + + /** + * The feature id for the '<em><b>After</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__AFTER = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__AFTER; + + /** + * The feature id for the '<em><b>Identifier</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__IDENTIFIER = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__IDENTIFIER; + + /** + * The feature id for the '<em><b>Target</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__TARGET = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__TARGET; + + /** + * The feature id for the '<em><b>Container Configuration</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__CONTAINER_CONFIGURATION = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__CONTAINER_CONFIGURATION; + + /** + * The feature id for the '<em><b>Matcher Configuration</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHER_CONFIGURATION = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__MATCHER_CONFIGURATION; + + /** + * The feature id for the '<em><b>Inheritance</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__INHERITANCE = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__INHERITANCE; + + /** + * The feature id for the '<em><b>Apply To All Types</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__APPLY_TO_ALL_TYPES = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__APPLY_TO_ALL_TYPES; + + /** + * The feature id for the '<em><b>Owning Set</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_SET = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__OWNING_SET; + + /** + * The feature id for the '<em><b>Element Type Set</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__ELEMENT_TYPE_SET = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__ELEMENT_TYPE_SET; + + /** + * The feature id for the '<em><b>Owning Target</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_TARGET = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION__OWNING_TARGET; + + /** + * The feature id for the '<em><b>Matched Type</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>Stereotypes Qualified Names</b></em>' attribute list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>Profile Uri</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__PROFILE_URI = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION_FEATURE_COUNT + 2; + + /** + * The number of structural features of the '<em>Stereotype Matcher Advice Configuration</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION_FEATURE_COUNT = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION_FEATURE_COUNT + 3; + + /** + * The operation id for the '<em>Get Element Type Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION___GET_ELEMENT_TYPE_SET = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION___GET_ELEMENT_TYPE_SET; + + /** + * The number of operations of the '<em>Stereotype Matcher Advice Configuration</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int STEREOTYPE_MATCHER_ADVICE_CONFIGURATION_OPERATION_COUNT = ElementTypesConfigurationsPackage.ABSTRACT_ADVICE_BINDING_CONFIGURATION_OPERATION_COUNT + 0; + + + /** * Returns the meta object for class '{@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherConfiguration <em>Configuration</em>}'. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -177,6 +359,16 @@ public interface StereotypeApplicationMatcherPackage extends EPackage { EAttribute getStereotypeApplicationMatcherConfiguration_ProfileUri(); /** + * Returns the meta object for class '{@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration <em>Stereotype Matcher Advice Configuration</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Stereotype Matcher Advice Configuration</em>'. + * @see org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration + * @generated + */ + EClass getStereotypeMatcherAdviceConfiguration(); + + /** * Returns the factory that creates the instances of the model. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -225,6 +417,16 @@ public interface StereotypeApplicationMatcherPackage extends EPackage { */ EAttribute STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION__PROFILE_URI = eINSTANCE.getStereotypeApplicationMatcherConfiguration_ProfileUri(); + /** + * The meta object literal for the '{@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl.StereotypeMatcherAdviceConfigurationImpl <em>Stereotype Matcher Advice Configuration</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl.StereotypeMatcherAdviceConfigurationImpl + * @see org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl.StereotypeApplicationMatcherPackageImpl#getStereotypeMatcherAdviceConfiguration() + * @generated + */ + EClass STEREOTYPE_MATCHER_ADVICE_CONFIGURATION = eINSTANCE.getStereotypeMatcherAdviceConfiguration(); + } } //StereotypeApplicationMatcherPackage diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeMatcherAdviceConfiguration.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeMatcherAdviceConfiguration.java new file mode 100644 index 00000000000..b4619bc4519 --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeMatcherAdviceConfiguration.java @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2020 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 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + */ +package org.eclipse.papyrus.uml.types.core.matchers.stereotype; + +import org.eclipse.papyrus.infra.types.AbstractAdviceBindingConfiguration; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Stereotype Matcher Advice Configuration</b></em>'. + * <!-- end-user-doc --> + * + * + * @see org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherPackage#getStereotypeMatcherAdviceConfiguration() + * @model + * @generated + */ +public interface StereotypeMatcherAdviceConfiguration extends AbstractAdviceBindingConfiguration, StereotypeApplicationMatcherConfiguration { +} // StereotypeMatcherAdviceConfiguration diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeApplicationMatcherFactoryImpl.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeApplicationMatcherFactoryImpl.java index ce06e125202..2f3be84614f 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeApplicationMatcherFactoryImpl.java +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeApplicationMatcherFactoryImpl.java @@ -70,6 +70,7 @@ public class StereotypeApplicationMatcherFactoryImpl extends EFactoryImpl implem public EObject create(EClass eClass) { switch (eClass.getClassifierID()) { case StereotypeApplicationMatcherPackage.STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION: return createStereotypeApplicationMatcherConfiguration(); + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION: return createStereotypeMatcherAdviceConfiguration(); default: throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); } @@ -92,6 +93,17 @@ public class StereotypeApplicationMatcherFactoryImpl extends EFactoryImpl implem * @generated */ @Override + public StereotypeMatcherAdviceConfiguration createStereotypeMatcherAdviceConfiguration() { + StereotypeMatcherAdviceConfigurationImpl stereotypeMatcherAdviceConfiguration = new StereotypeMatcherAdviceConfigurationImpl(); + return stereotypeMatcherAdviceConfiguration; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override public StereotypeApplicationMatcherPackage getStereotypeApplicationMatcherPackage() { return (StereotypeApplicationMatcherPackage)getEPackage(); } diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeApplicationMatcherPackageImpl.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeApplicationMatcherPackageImpl.java index 948618ae21e..c101a5564ac 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeApplicationMatcherPackageImpl.java +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeApplicationMatcherPackageImpl.java @@ -27,6 +27,7 @@ import org.eclipse.papyrus.infra.types.ElementTypesConfigurationsPackage; import org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherConfiguration; import org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherFactory; import org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherPackage; +import org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration; /** * <!-- begin-user-doc --> @@ -43,6 +44,13 @@ public class StereotypeApplicationMatcherPackageImpl extends EPackageImpl implem private EClass stereotypeApplicationMatcherConfigurationEClass = null; /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass stereotypeMatcherAdviceConfigurationEClass = 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. @@ -143,6 +151,16 @@ public class StereotypeApplicationMatcherPackageImpl extends EPackageImpl implem * @generated */ @Override + public EClass getStereotypeMatcherAdviceConfiguration() { + return stereotypeMatcherAdviceConfigurationEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override public StereotypeApplicationMatcherFactory getStereotypeApplicationMatcherFactory() { return (StereotypeApplicationMatcherFactory)getEFactoryInstance(); } @@ -169,6 +187,8 @@ public class StereotypeApplicationMatcherPackageImpl extends EPackageImpl implem stereotypeApplicationMatcherConfigurationEClass = createEClass(STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION); createEAttribute(stereotypeApplicationMatcherConfigurationEClass, STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES); createEAttribute(stereotypeApplicationMatcherConfigurationEClass, STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION__PROFILE_URI); + + stereotypeMatcherAdviceConfigurationEClass = createEClass(STEREOTYPE_MATCHER_ADVICE_CONFIGURATION); } /** @@ -196,7 +216,6 @@ public class StereotypeApplicationMatcherPackageImpl extends EPackageImpl implem // Obtain other dependent packages ElementTypesConfigurationsPackage theElementTypesConfigurationsPackage = (ElementTypesConfigurationsPackage)EPackage.Registry.INSTANCE.getEPackage(ElementTypesConfigurationsPackage.eNS_URI); - EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI); // Create type parameters @@ -204,12 +223,16 @@ public class StereotypeApplicationMatcherPackageImpl extends EPackageImpl implem // Add supertypes to classes stereotypeApplicationMatcherConfigurationEClass.getESuperTypes().add(theElementTypesConfigurationsPackage.getAbstractMatcherConfiguration()); + stereotypeMatcherAdviceConfigurationEClass.getESuperTypes().add(theElementTypesConfigurationsPackage.getAbstractAdviceBindingConfiguration()); + stereotypeMatcherAdviceConfigurationEClass.getESuperTypes().add(this.getStereotypeApplicationMatcherConfiguration()); // Initialize classes, features, and operations; add parameters initEClass(stereotypeApplicationMatcherConfigurationEClass, StereotypeApplicationMatcherConfiguration.class, "StereotypeApplicationMatcherConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEAttribute(getStereotypeApplicationMatcherConfiguration_StereotypesQualifiedNames(), theEcorePackage.getEString(), "stereotypesQualifiedNames", null, 1, -1, StereotypeApplicationMatcherConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getStereotypeApplicationMatcherConfiguration_StereotypesQualifiedNames(), ecorePackage.getEString(), "stereotypesQualifiedNames", null, 1, -1, StereotypeApplicationMatcherConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getStereotypeApplicationMatcherConfiguration_ProfileUri(), ecorePackage.getEString(), "profileUri", null, 0, 1, StereotypeApplicationMatcherConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEClass(stereotypeMatcherAdviceConfigurationEClass, StereotypeMatcherAdviceConfiguration.class, "StereotypeMatcherAdviceConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + // Create resource createResource(eNS_URI); } diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeMatcherAdviceConfigurationImpl.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeMatcherAdviceConfigurationImpl.java new file mode 100644 index 00000000000..35cfbead720 --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/impl/StereotypeMatcherAdviceConfigurationImpl.java @@ -0,0 +1,489 @@ +/** + * Copyright (c) 2020 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 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + */ +package org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; + +import org.eclipse.emf.ecore.resource.Resource; + +import org.eclipse.emf.ecore.util.EDataTypeUniqueEList; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.papyrus.infra.types.AbstractMatcherConfiguration; +import org.eclipse.papyrus.infra.types.ElementTypeConfiguration; +import org.eclipse.papyrus.infra.types.ElementTypesConfigurationsPackage; +import org.eclipse.papyrus.infra.types.SpecializationTypeConfiguration; + +import org.eclipse.papyrus.infra.types.impl.AbstractAdviceBindingConfigurationImpl; + +import org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherConfiguration; +import org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherPackage; +import org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Stereotype Matcher Advice Configuration</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl.StereotypeMatcherAdviceConfigurationImpl#getOwningType <em>Owning Type</em>}</li> + * <li>{@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl.StereotypeMatcherAdviceConfigurationImpl#getMatchedType <em>Matched Type</em>}</li> + * <li>{@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl.StereotypeMatcherAdviceConfigurationImpl#getStereotypesQualifiedNames <em>Stereotypes Qualified Names</em>}</li> + * <li>{@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.impl.StereotypeMatcherAdviceConfigurationImpl#getProfileUri <em>Profile Uri</em>}</li> + * </ul> + * + * @generated + */ +public class StereotypeMatcherAdviceConfigurationImpl extends AbstractAdviceBindingConfigurationImpl implements StereotypeMatcherAdviceConfiguration { + /** + * The cached value of the '{@link #getMatchedType() <em>Matched Type</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getMatchedType() + * @generated + * @ordered + */ + protected SpecializationTypeConfiguration matchedType; + + /** + * The cached value of the '{@link #getStereotypesQualifiedNames() <em>Stereotypes Qualified Names</em>}' attribute list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getStereotypesQualifiedNames() + * @generated + * @ordered + */ + protected EList<String> stereotypesQualifiedNames; + + /** + * The default value of the '{@link #getProfileUri() <em>Profile Uri</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getProfileUri() + * @generated + * @ordered + */ + protected static final String PROFILE_URI_EDEFAULT = null; + + /** + * The cached value of the '{@link #getProfileUri() <em>Profile Uri</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getProfileUri() + * @generated + * @ordered + */ + protected String profileUri = PROFILE_URI_EDEFAULT; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StereotypeMatcherAdviceConfigurationImpl() { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() { + return StereotypeApplicationMatcherPackage.Literals.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ElementTypeConfiguration getOwningType() { + if (eContainerFeatureID() != StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_TYPE) return null; + return (ElementTypeConfiguration)eInternalContainer(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetOwningType(ElementTypeConfiguration newOwningType, NotificationChain msgs) { + msgs = eBasicSetContainer((InternalEObject)newOwningType, StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_TYPE, msgs); + Resource.Internal eInternalResource = eInternalResource(); + if (eInternalResource == null || !eInternalResource.isLoading()) { + if (matchedType != null && matchedType != newOwningType) { + setMatchedType(null); + } + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setOwningType(ElementTypeConfiguration newOwningType) { + if (newOwningType != eInternalContainer() || (eContainerFeatureID() != StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_TYPE && newOwningType != null)) { + if (EcoreUtil.isAncestor(this, newOwningType)) + throw new IllegalArgumentException("Recursive containment not allowed for " + toString()); + NotificationChain msgs = null; + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + if (newOwningType != null) + msgs = ((InternalEObject)newOwningType).eInverseAdd(this, ElementTypesConfigurationsPackage.ELEMENT_TYPE_CONFIGURATION__OWNED_CONFIGURATIONS, ElementTypeConfiguration.class, msgs); + msgs = basicSetOwningType(newOwningType, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_TYPE, newOwningType, newOwningType)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public SpecializationTypeConfiguration getMatchedType() { + if (matchedType != null && matchedType.eIsProxy()) { + InternalEObject oldMatchedType = (InternalEObject)matchedType; + matchedType = (SpecializationTypeConfiguration)eResolveProxy(oldMatchedType); + if (matchedType != oldMatchedType) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE, oldMatchedType, matchedType)); + } + } + return matchedType; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public SpecializationTypeConfiguration basicGetMatchedType() { + return matchedType; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetMatchedType(SpecializationTypeConfiguration newMatchedType, NotificationChain msgs) { + SpecializationTypeConfiguration oldMatchedType = matchedType; + matchedType = newMatchedType; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE, oldMatchedType, newMatchedType); + if (msgs == null) msgs = notification; else msgs.add(notification); + } + Resource.Internal eInternalResource = eInternalResource(); + if (eInternalResource == null || !eInternalResource.isLoading()) { + if (newMatchedType != null) { + ElementTypeConfiguration owningType = getOwningType(); + if (newMatchedType != owningType) { + setOwningType(newMatchedType); + } + } + } + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setMatchedType(SpecializationTypeConfiguration newMatchedType) { + if (newMatchedType != matchedType) { + NotificationChain msgs = null; + if (matchedType != null) + msgs = ((InternalEObject)matchedType).eInverseRemove(this, ElementTypesConfigurationsPackage.SPECIALIZATION_TYPE_CONFIGURATION__MATCHER_CONFIGURATION, SpecializationTypeConfiguration.class, msgs); + if (newMatchedType != null) + msgs = ((InternalEObject)newMatchedType).eInverseAdd(this, ElementTypesConfigurationsPackage.SPECIALIZATION_TYPE_CONFIGURATION__MATCHER_CONFIGURATION, SpecializationTypeConfiguration.class, msgs); + msgs = basicSetMatchedType(newMatchedType, msgs); + if (msgs != null) msgs.dispatch(); + } + else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE, newMatchedType, newMatchedType)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public EList<String> getStereotypesQualifiedNames() { + if (stereotypesQualifiedNames == null) { + stereotypesQualifiedNames = new EDataTypeUniqueEList<String>(String.class, this, StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES); + } + return stereotypesQualifiedNames; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getProfileUri() { + return profileUri; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setProfileUri(String newProfileUri) { + String oldProfileUri = profileUri; + profileUri = newProfileUri; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__PROFILE_URI, oldProfileUri, profileUri)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseAddGen(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_TYPE: + if (eInternalContainer() != null) + msgs = eBasicRemoveFromContainer(msgs); + return basicSetOwningType((ElementTypeConfiguration)otherEnd, msgs); + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE: + if (matchedType != null) + msgs = ((InternalEObject)matchedType).eInverseRemove(this, ElementTypesConfigurationsPackage.SPECIALIZATION_TYPE_CONFIGURATION__MATCHER_CONFIGURATION, SpecializationTypeConfiguration.class, msgs); + return basicSetMatchedType((SpecializationTypeConfiguration)otherEnd, msgs); + } + return super.eInverseAddGen(otherEnd, featureID, msgs); + } + + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + NotificationChain result = eInverseAddGen(otherEnd, featureID, msgs); + + switch (featureID) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE: + if (otherEnd != null) { + // Maintain the subset constraint + result = basicSetTarget((ElementTypeConfiguration) otherEnd, result); + } + break; + } + + return result; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_TYPE: + return basicSetOwningType(null, msgs); + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE: + return basicSetMatchedType(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) { + switch (eContainerFeatureID()) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_TYPE: + return eInternalContainer().eInverseRemove(this, ElementTypesConfigurationsPackage.ELEMENT_TYPE_CONFIGURATION__OWNED_CONFIGURATIONS, ElementTypeConfiguration.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE: + if (resolve) return getMatchedType(); + return basicGetMatchedType(); + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES: + return getStereotypesQualifiedNames(); + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__PROFILE_URI: + return getProfileUri(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE: + setMatchedType((SpecializationTypeConfiguration)newValue); + return; + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES: + getStereotypesQualifiedNames().clear(); + getStereotypesQualifiedNames().addAll((Collection<? extends String>)newValue); + return; + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__PROFILE_URI: + setProfileUri((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE: + setMatchedType((SpecializationTypeConfiguration)null); + return; + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES: + getStereotypesQualifiedNames().clear(); + return; + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__PROFILE_URI: + setProfileUri(PROFILE_URI_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__OWNING_TYPE: + return getOwningType() != null; + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE: + return matchedType != null; + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES: + return stereotypesQualifiedNames != null && !stereotypesQualifiedNames.isEmpty(); + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__PROFILE_URI: + return PROFILE_URI_EDEFAULT == null ? profileUri != null : !PROFILE_URI_EDEFAULT.equals(profileUri); + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) { + if (baseClass == AbstractMatcherConfiguration.class) { + switch (derivedFeatureID) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE: return ElementTypesConfigurationsPackage.ABSTRACT_MATCHER_CONFIGURATION__MATCHED_TYPE; + default: return -1; + } + } + if (baseClass == StereotypeApplicationMatcherConfiguration.class) { + switch (derivedFeatureID) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES: return StereotypeApplicationMatcherPackage.STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES; + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__PROFILE_URI: return StereotypeApplicationMatcherPackage.STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION__PROFILE_URI; + default: return -1; + } + } + return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) { + if (baseClass == AbstractMatcherConfiguration.class) { + switch (baseFeatureID) { + case ElementTypesConfigurationsPackage.ABSTRACT_MATCHER_CONFIGURATION__MATCHED_TYPE: return StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__MATCHED_TYPE; + default: return -1; + } + } + if (baseClass == StereotypeApplicationMatcherConfiguration.class) { + switch (baseFeatureID) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES: return StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES; + case StereotypeApplicationMatcherPackage.STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION__PROFILE_URI: return StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__PROFILE_URI; + default: return -1; + } + } + return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() { + if (eIsProxy()) return super.toString(); + + StringBuilder result = new StringBuilder(super.toString()); + result.append(" (stereotypesQualifiedNames: "); + result.append(stereotypesQualifiedNames); + result.append(", profileUri: "); + result.append(profileUri); + result.append(')'); + return result.toString(); + } + +} //StereotypeMatcherAdviceConfigurationImpl diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/provider/StereotypeApplicationMatcherItemProviderAdapterFactory.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/provider/StereotypeApplicationMatcherItemProviderAdapterFactory.java index c893cb9fb9b..f4324a264ca 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/provider/StereotypeApplicationMatcherItemProviderAdapterFactory.java +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/provider/StereotypeApplicationMatcherItemProviderAdapterFactory.java @@ -46,6 +46,8 @@ import org.eclipse.emf.edit.provider.ITreeItemContentProvider; import org.eclipse.papyrus.infra.types.AbstractAdviceBindingConfiguration; import org.eclipse.papyrus.infra.types.ContainerConfiguration; +import org.eclipse.papyrus.infra.types.ElementTypeConfiguration; +import org.eclipse.papyrus.infra.types.ElementTypeSetConfiguration; import org.eclipse.papyrus.infra.types.ElementTypesConfigurationsPackage; import org.eclipse.papyrus.infra.types.SpecializationTypeConfiguration; import org.eclipse.papyrus.infra.types.util.ElementTypesConfigurationsSwitch; @@ -126,6 +128,29 @@ public class StereotypeApplicationMatcherItemProviderAdapterFactory extends Ster } /** + * This keeps track of the one adapter used for all {@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected StereotypeMatcherAdviceConfigurationItemProvider stereotypeMatcherAdviceConfigurationItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createStereotypeMatcherAdviceConfigurationAdapter() { + if (stereotypeMatcherAdviceConfigurationItemProvider == null) { + stereotypeMatcherAdviceConfigurationItemProvider = new StereotypeMatcherAdviceConfigurationItemProvider(this); + } + + return stereotypeMatcherAdviceConfigurationItemProvider; + } + + /** * This returns the root adapter factory that contains this factory. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -231,6 +256,7 @@ public class StereotypeApplicationMatcherItemProviderAdapterFactory extends Ster @Override public void dispose() { if (stereotypeApplicationMatcherConfigurationItemProvider != null) stereotypeApplicationMatcherConfigurationItemProvider.dispose(); + if (stereotypeMatcherAdviceConfigurationItemProvider != null) stereotypeMatcherAdviceConfigurationItemProvider.dispose(); } /** @@ -279,12 +305,45 @@ public class StereotypeApplicationMatcherItemProviderAdapterFactory extends Ster * @generated */ @Override + public Object caseElementTypeSetConfiguration(ElementTypeSetConfiguration object) { + newChildDescriptors.add + (createChildParameter + (ElementTypesConfigurationsPackage.Literals.ELEMENT_TYPE_SET_CONFIGURATION__ADVICE_BINDINGS_CONFIGURATIONS, + StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeMatcherAdviceConfiguration())); + + return null; + } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object caseElementTypeConfiguration(ElementTypeConfiguration object) { + newChildDescriptors.add + (createChildParameter + (ElementTypesConfigurationsPackage.Literals.ELEMENT_TYPE_CONFIGURATION__OWNED_ADVICE, + StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeMatcherAdviceConfiguration())); + + return null; + } + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override public Object caseAbstractAdviceBindingConfiguration(AbstractAdviceBindingConfiguration object) { newChildDescriptors.add (createChildParameter (ElementTypesConfigurationsPackage.Literals.ABSTRACT_ADVICE_BINDING_CONFIGURATION__MATCHER_CONFIGURATION, StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeApplicationMatcherConfiguration())); + newChildDescriptors.add + (createChildParameter + (ElementTypesConfigurationsPackage.Literals.ABSTRACT_ADVICE_BINDING_CONFIGURATION__MATCHER_CONFIGURATION, + StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeMatcherAdviceConfiguration())); + return null; } @@ -300,6 +359,11 @@ public class StereotypeApplicationMatcherItemProviderAdapterFactory extends Ster (ElementTypesConfigurationsPackage.Literals.CONTAINER_CONFIGURATION__CONTAINER_MATCHER_CONFIGURATION, StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeApplicationMatcherConfiguration())); + newChildDescriptors.add + (createChildParameter + (ElementTypesConfigurationsPackage.Literals.CONTAINER_CONFIGURATION__CONTAINER_MATCHER_CONFIGURATION, + StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeMatcherAdviceConfiguration())); + return null; } @@ -315,6 +379,11 @@ public class StereotypeApplicationMatcherItemProviderAdapterFactory extends Ster (ElementTypesConfigurationsPackage.Literals.SPECIALIZATION_TYPE_CONFIGURATION__MATCHER_CONFIGURATION, StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeApplicationMatcherConfiguration())); + newChildDescriptors.add + (createChildParameter + (ElementTypesConfigurationsPackage.Literals.SPECIALIZATION_TYPE_CONFIGURATION__MATCHER_CONFIGURATION, + StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeMatcherAdviceConfiguration())); + return null; } /** diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/provider/StereotypeMatcherAdviceConfigurationItemProvider.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/provider/StereotypeMatcherAdviceConfigurationItemProvider.java new file mode 100644 index 00000000000..7e778d990fb --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/provider/StereotypeMatcherAdviceConfigurationItemProvider.java @@ -0,0 +1,244 @@ +/** + * Copyright (c) 2020 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 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + */ +package org.eclipse.papyrus.uml.types.core.matchers.stereotype.provider; + + +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.command.Command; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; + +import org.eclipse.emf.edit.domain.EditingDomain; + +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import org.eclipse.papyrus.infra.types.ElementTypesConfigurationsPackage; + +import org.eclipse.papyrus.infra.types.provider.AbstractAdviceBindingConfigurationItemProvider; + +import org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherFactory; +import org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeApplicationMatcherPackage; +import org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration; + +import org.eclipse.uml2.common.edit.command.SubsetSupersetSetCommand; + +/** + * This is the item provider adapter for a {@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class StereotypeMatcherAdviceConfigurationItemProvider extends AbstractAdviceBindingConfigurationItemProvider { + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public StereotypeMatcherAdviceConfigurationItemProvider(AdapterFactory adapterFactory) { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) { + if (itemPropertyDescriptors == null) { + super.getPropertyDescriptors(object); + + addMatchedTypePropertyDescriptor(object); + addStereotypesQualifiedNamesPropertyDescriptor(object); + addProfileUriPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Matched Type feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMatchedTypePropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_AbstractMatcherConfiguration_matchedType_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_AbstractMatcherConfiguration_matchedType_feature", "_UI_AbstractMatcherConfiguration_type"), + ElementTypesConfigurationsPackage.Literals.ABSTRACT_MATCHER_CONFIGURATION__MATCHED_TYPE, + true, + false, + true, + null, + null, + null)); + } + + /** + * This adds a property descriptor for the Stereotypes Qualified Names feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addStereotypesQualifiedNamesPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_StereotypeApplicationMatcherConfiguration_stereotypesQualifiedNames_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_StereotypeApplicationMatcherConfiguration_stereotypesQualifiedNames_feature", "_UI_StereotypeApplicationMatcherConfiguration_type"), + StereotypeApplicationMatcherPackage.Literals.STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This adds a property descriptor for the Profile Uri feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addProfileUriPropertyDescriptor(Object object) { + itemPropertyDescriptors.add + (createItemPropertyDescriptor + (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), + getResourceLocator(), + getString("_UI_StereotypeApplicationMatcherConfiguration_profileUri_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_StereotypeApplicationMatcherConfiguration_profileUri_feature", "_UI_StereotypeApplicationMatcherConfiguration_type"), + StereotypeApplicationMatcherPackage.Literals.STEREOTYPE_APPLICATION_MATCHER_CONFIGURATION__PROFILE_URI, + true, + false, + false, + ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, + null, + null)); + } + + /** + * This returns StereotypeMatcherAdviceConfiguration.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) { + return overlayImage(object, getResourceLocator().getImage("full/obj16/StereotypeMatcherAdviceConfiguration")); + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) { + String label = ((StereotypeMatcherAdviceConfiguration)object).getDescription(); + return label == null || label.length() == 0 ? + getString("_UI_StereotypeMatcherAdviceConfiguration_type") : + getString("_UI_StereotypeMatcherAdviceConfiguration_type") + " " + label; + } + + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) { + updateChildren(notification); + + switch (notification.getFeatureID(StereotypeMatcherAdviceConfiguration.class)) { + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__STEREOTYPES_QUALIFIED_NAMES: + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION__PROFILE_URI: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) { + super.collectNewChildDescriptors(newChildDescriptors, object); + + newChildDescriptors.add + (createChildParameter + (ElementTypesConfigurationsPackage.Literals.ABSTRACT_ADVICE_BINDING_CONFIGURATION__MATCHER_CONFIGURATION, + StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeApplicationMatcherConfiguration())); + + newChildDescriptors.add + (createChildParameter + (ElementTypesConfigurationsPackage.Literals.ABSTRACT_ADVICE_BINDING_CONFIGURATION__MATCHER_CONFIGURATION, + StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeMatcherAdviceConfiguration())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() { + return StereotypeApplicationMatcherConfigurationEditPlugin.INSTANCE; + } + + /** + * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createSetCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.lang.Object) + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected Command createSetCommand(EditingDomain domain, EObject owner, EStructuralFeature feature, Object value) { + if (feature == ElementTypesConfigurationsPackage.Literals.ABSTRACT_MATCHER_CONFIGURATION__MATCHED_TYPE) { + return new SubsetSupersetSetCommand(domain, owner, feature, new EStructuralFeature[] {ElementTypesConfigurationsPackage.Literals.CONFIGURATION_ELEMENT__OWNING_TYPE}, null, value); + } + if (feature == ElementTypesConfigurationsPackage.Literals.CONFIGURATION_ELEMENT__OWNING_TYPE) { + return new SubsetSupersetSetCommand(domain, owner, feature, null, new EStructuralFeature[] {ElementTypesConfigurationsPackage.Literals.ABSTRACT_MATCHER_CONFIGURATION__MATCHED_TYPE}, value); + } + return super.createSetCommand(domain, owner, feature, value); + } + +} diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherAdapterFactory.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherAdapterFactory.java index eb77165456a..e9ce05b7920 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherAdapterFactory.java +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherAdapterFactory.java @@ -22,9 +22,12 @@ import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; import org.eclipse.emf.ecore.EObject; +import org.eclipse.papyrus.infra.types.AbstractAdviceBindingConfiguration; import org.eclipse.papyrus.infra.types.AbstractMatcherConfiguration; +import org.eclipse.papyrus.infra.types.AdviceConfiguration; import org.eclipse.papyrus.infra.types.ConfigurationElement; +import org.eclipse.papyrus.infra.types.IdentifiedConfiguration; import org.eclipse.papyrus.uml.types.core.matchers.stereotype.*; /** @@ -88,6 +91,10 @@ public class StereotypeApplicationMatcherAdapterFactory extends AdapterFactoryIm return createStereotypeApplicationMatcherConfigurationAdapter(); } @Override + public Adapter caseStereotypeMatcherAdviceConfiguration(StereotypeMatcherAdviceConfiguration object) { + return createStereotypeMatcherAdviceConfigurationAdapter(); + } + @Override public Adapter caseConfigurationElement(ConfigurationElement object) { return createConfigurationElementAdapter(); } @@ -96,6 +103,18 @@ public class StereotypeApplicationMatcherAdapterFactory extends AdapterFactoryIm return createAbstractMatcherConfigurationAdapter(); } @Override + public Adapter caseAdviceConfiguration(AdviceConfiguration object) { + return createAdviceConfigurationAdapter(); + } + @Override + public Adapter caseIdentifiedConfiguration(IdentifiedConfiguration object) { + return createIdentifiedConfigurationAdapter(); + } + @Override + public Adapter caseAbstractAdviceBindingConfiguration(AbstractAdviceBindingConfiguration object) { + return createAbstractAdviceBindingConfigurationAdapter(); + } + @Override public Adapter defaultCase(EObject object) { return createEObjectAdapter(); } @@ -130,6 +149,20 @@ public class StereotypeApplicationMatcherAdapterFactory extends AdapterFactoryIm } /** + * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration <em>Stereotype Matcher Advice Configuration</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.uml.types.core.matchers.stereotype.StereotypeMatcherAdviceConfiguration + * @generated + */ + public Adapter createStereotypeMatcherAdviceConfigurationAdapter() { + return null; + } + + /** * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.infra.types.ConfigurationElement <em>Configuration Element</em>}'. * <!-- begin-user-doc --> * This default implementation returns null so that we can easily ignore cases; @@ -158,6 +191,48 @@ public class StereotypeApplicationMatcherAdapterFactory extends AdapterFactoryIm } /** + * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.infra.types.AdviceConfiguration <em>Advice Configuration</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.infra.types.AdviceConfiguration + * @generated + */ + public Adapter createAdviceConfigurationAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.infra.types.IdentifiedConfiguration <em>Identified Configuration</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.infra.types.IdentifiedConfiguration + * @generated + */ + public Adapter createIdentifiedConfigurationAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.infra.types.AbstractAdviceBindingConfiguration <em>Abstract Advice Binding Configuration</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.infra.types.AbstractAdviceBindingConfiguration + * @generated + */ + public Adapter createAbstractAdviceBindingConfigurationAdapter() { + return null; + } + + /** * Creates a new adapter for the default case. * <!-- begin-user-doc --> * This default implementation returns null. diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherResourceFactoryImpl.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherResourceFactoryImpl.java index 08a245d539d..949db328666 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherResourceFactoryImpl.java +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherResourceFactoryImpl.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2014 CEA LIST. + * Copyright (c) 2014, 2020 CEA LIST, Christian W. Damus, and others. * * * All rights reserved. This program and the accompanying materials @@ -11,6 +11,7 @@ * * Contributors: * CEA LIST - Initial API and implementation + * Christian W. Damus - bug 568853 */ package org.eclipse.papyrus.uml.types.core.matchers.stereotype.util; @@ -19,6 +20,7 @@ import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl; +import org.eclipse.emf.ecore.xmi.XMLResource; /** * <!-- begin-user-doc --> @@ -46,7 +48,7 @@ public class StereotypeApplicationMatcherResourceFactoryImpl extends ResourceFac */ @Override public Resource createResource(URI uri) { - Resource result = new StereotypeApplicationMatcherResourceImpl(uri); + XMLResource result = new StereotypeApplicationMatcherResourceImpl(uri); return result; } diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherSwitch.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherSwitch.java index 000c4274b53..49139639c2e 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherSwitch.java +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src-gen/org/eclipse/papyrus/uml/types/core/matchers/stereotype/util/StereotypeApplicationMatcherSwitch.java @@ -20,9 +20,12 @@ import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.util.Switch; +import org.eclipse.papyrus.infra.types.AbstractAdviceBindingConfiguration; import org.eclipse.papyrus.infra.types.AbstractMatcherConfiguration; +import org.eclipse.papyrus.infra.types.AdviceConfiguration; import org.eclipse.papyrus.infra.types.ConfigurationElement; +import org.eclipse.papyrus.infra.types.IdentifiedConfiguration; import org.eclipse.papyrus.uml.types.core.matchers.stereotype.*; /** @@ -90,6 +93,18 @@ public class StereotypeApplicationMatcherSwitch<T> extends Switch<T> { if (result == null) result = defaultCase(theEObject); return result; } + case StereotypeApplicationMatcherPackage.STEREOTYPE_MATCHER_ADVICE_CONFIGURATION: { + StereotypeMatcherAdviceConfiguration stereotypeMatcherAdviceConfiguration = (StereotypeMatcherAdviceConfiguration)theEObject; + T result = caseStereotypeMatcherAdviceConfiguration(stereotypeMatcherAdviceConfiguration); + if (result == null) result = caseAbstractAdviceBindingConfiguration(stereotypeMatcherAdviceConfiguration); + if (result == null) result = caseStereotypeApplicationMatcherConfiguration(stereotypeMatcherAdviceConfiguration); + if (result == null) result = caseAdviceConfiguration(stereotypeMatcherAdviceConfiguration); + if (result == null) result = caseIdentifiedConfiguration(stereotypeMatcherAdviceConfiguration); + if (result == null) result = caseAbstractMatcherConfiguration(stereotypeMatcherAdviceConfiguration); + if (result == null) result = caseConfigurationElement(stereotypeMatcherAdviceConfiguration); + if (result == null) result = defaultCase(theEObject); + return result; + } default: return defaultCase(theEObject); } } @@ -110,6 +125,21 @@ public class StereotypeApplicationMatcherSwitch<T> extends Switch<T> { } /** + * Returns the result of interpreting the object as an instance of '<em>Stereotype Matcher Advice Configuration</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>Stereotype Matcher Advice Configuration</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseStereotypeMatcherAdviceConfiguration(StereotypeMatcherAdviceConfiguration object) { + return null; + } + + /** * Returns the result of interpreting the object as an instance of '<em>Configuration Element</em>'. * <!-- begin-user-doc --> * This implementation returns null; @@ -140,6 +170,51 @@ public class StereotypeApplicationMatcherSwitch<T> extends Switch<T> { } /** + * Returns the result of interpreting the object as an instance of '<em>Advice Configuration</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>Advice Configuration</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseAdviceConfiguration(AdviceConfiguration object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Identified Configuration</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>Identified Configuration</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseIdentifiedConfiguration(IdentifiedConfiguration object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Abstract Advice Binding Configuration</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>Abstract Advice Binding Configuration</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseAbstractAdviceBindingConfiguration(AbstractAdviceBindingConfiguration object) { + return null; + } + + /** * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. * <!-- begin-user-doc --> * This implementation returns null; diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcher.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcher.java index 285e1d2d236..edf9be6df20 100644 --- a/plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcher.java +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeApplicationMatcher.java @@ -1,5 +1,5 @@ /***************************************************************************** - * Copyright (c) 2014 CEA LIST. + * Copyright (c) 2014, 2020 CEA LIST, Christian W. Damus, and others. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -10,17 +10,18 @@ * * Contributors: * CEA LIST - Initial API and implementation + * Christian W. Damus - bug 568853 * *****************************************************************************/ package org.eclipse.papyrus.uml.types.core.matchers.stereotype; -import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.eclipse.emf.ecore.EObject; import org.eclipse.gmf.runtime.emf.type.core.IElementMatcher; import org.eclipse.uml2.uml.Element; -import org.eclipse.uml2.uml.Model; import org.eclipse.uml2.uml.Profile; @@ -38,12 +39,18 @@ public class StereotypeApplicationMatcher implements IElementMatcher { } + @Override public boolean matches(EObject eObject) { if (!(eObject instanceof Element)) { return false; } Element element = (Element) eObject; + + if (profileUri != null && !isProfileApplied(element, profileUri)) { + return false; + } + if (element.getAppliedStereotypes().isEmpty()) { return false; } @@ -54,22 +61,6 @@ public class StereotypeApplicationMatcher implements IElementMatcher { } } - if (profileUri != null) { - Model model = element.getModel(); - if (model == null) { - return false; - } - - List<String> appliedProfileByUri = new ArrayList<String>(); - for (Profile appliedProfile : model.getAllAppliedProfiles()) { - appliedProfileByUri.add(appliedProfile.getURI()); - } - - if (!appliedProfileByUri.contains(profileUri)) { - return false; - } - - } return true; } @@ -82,4 +73,18 @@ public class StereotypeApplicationMatcher implements IElementMatcher { this.stereotypesQualifiedNames = stereotypeQualifiedName; } + public static boolean isProfileApplied(Element element, String profileURI) { + org.eclipse.uml2.uml.Package package_ = element.getNearestPackage(); + if (package_ == null) { + return false; + } + + Set<String> appliedProfileByURI = new HashSet<>(); + for (Profile appliedProfile : package_.getAllAppliedProfiles()) { + appliedProfileByURI.add(appliedProfile.getURI()); + } + + return appliedProfileByURI.contains(profileURI); + } + } diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeMatcherAdviceAdviceFactory.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeMatcherAdviceAdviceFactory.java new file mode 100644 index 00000000000..fcdfb17e356 --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeMatcherAdviceAdviceFactory.java @@ -0,0 +1,40 @@ +/***************************************************************************** + * Copyright (c) 2020 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.uml.types.core.matchers.stereotype; + +import org.eclipse.gmf.runtime.emf.type.core.edithelper.IEditHelperAdvice; +import org.eclipse.papyrus.infra.types.AbstractAdviceBindingConfiguration; +import org.eclipse.papyrus.infra.types.core.factories.impl.AbstractAdviceBindingFactory; +import org.eclipse.papyrus.infra.types.core.impl.NullEditHelperAdvice; + +/** + * Advice factory for advice described by the combination stereotype matcher and advice configuration. + */ +public class StereotypeMatcherAdviceAdviceFactory extends AbstractAdviceBindingFactory<AbstractAdviceBindingConfiguration> { + + @Override + public AbstractAdviceBindingConfiguration createAdviceBindingConfiguration() { + return StereotypeApplicationMatcherFactory.eINSTANCE.createStereotypeMatcherAdviceConfiguration(); + } + + @Override + protected IEditHelperAdvice getEditHelperAdvice(AbstractAdviceBindingConfiguration adviceConfiguration) { + return (adviceConfiguration instanceof StereotypeMatcherAdviceConfiguration) + ? new StereotypeMatcherEditHelperAdvice((StereotypeMatcherAdviceConfiguration) adviceConfiguration) + : NullEditHelperAdvice.getInstance(); + } + +} diff --git a/plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeMatcherEditHelperAdvice.java b/plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeMatcherEditHelperAdvice.java new file mode 100644 index 00000000000..b26be250804 --- /dev/null +++ b/plugins/uml/org.eclipse.papyrus.uml.types.core/src/org/eclipse/papyrus/uml/types/core/matchers/stereotype/StereotypeMatcherEditHelperAdvice.java @@ -0,0 +1,137 @@ +/***************************************************************************** + * Copyright (c) 2020 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 + * + * Contributors: + * Christian W. Damus - Initial API and implementation + *****************************************************************************/ +package org.eclipse.papyrus.uml.types.core.matchers.stereotype; + +import java.util.List; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.transaction.TransactionalEditingDomain; +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.gmf.runtime.emf.type.core.requests.IEditCommandRequest; +import org.eclipse.osgi.util.NLS; +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.uml.tools.utils.NamedElementUtil; +import org.eclipse.papyrus.uml.types.core.Activator; +import org.eclipse.papyrus.uml.types.core.requests.ApplyStereotypeRequest; +import org.eclipse.uml2.uml.Element; +import org.eclipse.uml2.uml.Package; +import org.eclipse.uml2.uml.Stereotype; + +/** + * An advice that applies the stereotype(s) specified by a stereotype application matcher. + */ +public class StereotypeMatcherEditHelperAdvice extends AbstractEditHelperAdvice { + + + protected StereotypeApplicationMatcherConfiguration configuration; + + + public StereotypeMatcherEditHelperAdvice(StereotypeApplicationMatcherConfiguration configuration) { + this.configuration = configuration; + } + + @Override + public boolean approveRequest(IEditCommandRequest request) { + if (request instanceof CreateElementRequest) { + CreateElementRequest createElement = (CreateElementRequest) request; + + if (configuration == null) { + return false; + } + + if (!(createElement.getContainer() instanceof Element)) { + return false; + } + + Element container = (Element) createElement.getContainer(); + Package nearestPackage = container.getNearestPackage(); + if (nearestPackage == null) { + return false; + } + + String profileURI = configuration.getProfileUri(); + if (profileURI == null || !StereotypeApplicationMatcher.isProfileApplied(container, profileURI)) { + // If the profile is not applied, then we cannot apply the stereotypes + return false; + } + } + + return true; + } + + @Override + public void configureRequest(final IEditCommandRequest request) { + if (!(request instanceof ConfigureRequest)) { + return; + } + + // Use the last stereotype for the name to set, similar to the ApplyStereotypeAdvice + List<String> stereotypeQNames = configuration.getStereotypesQualifiedNames(); + if (!stereotypeQNames.isEmpty()) { + request.setParameter(RequestParameterConstants.BASE_NAME_TO_SET, + NamedElementUtil.getNameFromQualifiedName(stereotypeQNames.get(stereotypeQNames.size() - 1))); + } + } + + @Override + protected ICommand getAfterConfigureCommand(ConfigureRequest request) { + ICommand result = null; + + if (configuration == null) { + return result; + } + + EObject elementToConfigure = request.getElementToConfigure(); + if (!(elementToConfigure instanceof Element)) { + return result; + } + + TransactionalEditingDomain editingDomain = request.getEditingDomain(); + if (editingDomain == null) { + return result; + } + + IElementEditService service = ElementEditServiceUtils.getCommandProvider(elementToConfigure); + if (service == null) { + Activator.log.error(NLS.bind("Cannot get edit service from element: {0}.", elementToConfigure), null); //$NON-NLS-1$ + return result; + } + + for (String next : configuration.getStereotypesQualifiedNames()) { + Stereotype stereotype = ((Element) elementToConfigure).getApplicableStereotype(next); + if (stereotype != null) { + ICommand applyStereotypeCommand = service.getEditCommand(new ApplyStereotypeRequest((Element) elementToConfigure, stereotype, editingDomain)); + + if (result == null) { + result = applyStereotypeCommand; + } else { + result = result.compose(applyStereotypeCommand); + } + } + + } + + if (result != null) { + result = result.reduce(); + } + + return result; + } + +} |