Bug 580532: [ClassDiagram][Sirius][Synchronization] Change node declaration from Not Synchronized to Unsynchronized.
- done for CD_PropertyLabelNode, CD_OperationLabelNode and CD_ReceptionLabelNode
- complete the field 'semantic candidates expression'
- set these nodes to Unsynchronizable
- clean field 'associated elements expression'
- add precondition expression 'aql:self.oclIsTypeof(uml::...)
Signed-off-by: Vincent Lorenzo <vincent.lorenzo@cea.fr>
Change-Id: I60f75a80f7314a8d7265da61b4e8a6f62716df06
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign
index efda264..26785ff 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/description/papyrus_class.odesign
@@ -509,7 +509,7 @@
</style>
</containerMappings>
<containerMappings name="CD_OwnedAttribute_FeatureOwner" semanticCandidatesExpression="aql:null" createElements="false" documentation="This mapping is a 'fake'mapping used to avoid validation errors. This node contains mapping requiring a parent providing the 'ownedAttribute' feature.
UML::Class, UML::DataType, UML::Interface and UML::Signal provide this feature but there is not a common superclass providing it, that's why we create this mapping." domainClass="uml::Class">
- <subNodeMappings name="CD_PropertyLabelNode" preconditionExpression="service:isNotAssociation()" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsKindOf(uml::DataType) or self.oclIsKindOf(uml::Interface) or self.oclIsKindOf(uml::Signal)) then self.ownedAttribute else null endif" createElements="false" semanticElements="service:getSemanticElements" domainClass="uml.Property">
+ <subNodeMappings name="CD_PropertyLabelNode" preconditionExpression="aql:if(self.oclIsTypeOf(uml::Property) and self.oclAsType(uml::Property).association = null) then true else false endif" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsKindOf(uml::DataType) or self.oclIsTypeOf(uml::Interface) or self.oclIsTypeOf(uml::Signal)) then self.ownedAttribute else null endif" domainClass="uml.Property">
<style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:buildSingleLineLabel(diagram)" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Property.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
<borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
@@ -522,7 +522,7 @@
</style>
</containerMappings>
<containerMappings name="CD_OwnedOperation_FeatureOwner" semanticCandidatesExpression="aql:null" createElements="false" documentation="This mapping is a 'fake'mapping used to avoid validation errors. This node contains mapping requiring a parent providing the 'ownedOperation' feature.
UML::Class, UML::DataType, and UML::Interface provide this feature but there is not a common superclass providing it, that's why we create this mapping." domainClass="uml::Class">
- <subNodeMappings name="CD_OperationLabelNode" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsKindOf(uml::Interface) or self.oclIsKindOf(uml::DataType)) then self.ownedOperation else null endif" createElements="false" semanticElements="service:getSemanticElements" domainClass="uml.Operation">
+ <subNodeMappings name="CD_OperationLabelNode" preconditionExpression="aql:self.oclIsTypeOf(uml::Operation)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsKindOf(uml::Interface) or self.oclIsKindOf(uml::DataType)) then self.ownedOperation else null endif" domainClass="uml.Operation">
<style xsi:type="style:SquareDescription" borderSizeComputationExpression="1" labelSize="9" labelExpression="service:computeUmlLabel" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Operation.gif" labelAlignment="LEFT" sizeComputationExpression="" labelPosition="node" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
<borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
@@ -535,7 +535,7 @@
</style>
</containerMappings>
<containerMappings name="CD_OwnedReception_FeatureOwner" semanticCandidatesExpression="aql:null" createElements="false" documentation="This mapping is a 'fake'mapping used to avoid validation errors. This node contains mapping requiring a parent providing the 'ownedReception' feature.
UML::Class and UML::Interface provide this feature but there is not a common superclass providing it, that's why we create this mapping.
" domainClass="uml::Class">
- <subNodeMappings name="CD_ReceptionLabelNode" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsKindOf(uml::Interface)) then self.ownedReception else null endif" createElements="false" semanticElements="service:getSemanticElements" domainClass="uml.Reception">
+ <subNodeMappings name="CD_ReceptionLabelNode" preconditionExpression="aql:self.oclIsTypeOf(uml::Reception)" labelDirectEdit="//@ownedViewpoints[name='ClassDiagram']/@ownedRepresentations[name='ClassDiagram']/@defaultLayer/@toolSections.5/@ownedTools[name='NamedElement_name_EditionTool']" semanticCandidatesExpression="aql:if(self.oclIsKindOf(uml::Class) or self.oclIsTypeOf(uml::Interface)) then self.ownedReception else null endif" domainClass="uml.Reception">
<style xsi:type="style:SquareDescription" labelSize="9" labelExpression="service:computeUmlLabel" iconPath="/org.eclipse.uml2.uml.edit/icons/full/obj16/Reception.gif" labelAlignment="LEFT" sizeComputationExpression="" resizeKind="NSEW" width="16" height="5" color="//@userColorsPalettes[name='CD_ColorPalette']/@entries[name='CustomBlue']">
<borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
<labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/specifications.md b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/specifications.md
index 446f21c..1a70b81 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/specifications.md
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/specifications.md
@@ -1,5 +1,10 @@
The content of this file describes specific choices of implementation/limitation.
+#Property
+The **Property** associated to an **Association** are not displayed in the Diagram, even when this diagram is synchronized.
+The Drop of such Properties is not allowed too.
+
+
#Abstraction
The **Abstraction** is owned by the nearest parent Package of the source.
The *semantic candidate expression* must return all **Abstraction** existing in the Package and in its children.
diff --git a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/services/ClassDiagramServices.java b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/services/ClassDiagramServices.java
index ef8215c..b0f5099 100755
--- a/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/services/ClassDiagramServices.java
+++ b/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz/src/org/eclipse/papyrus/sirius/uml/diagram/clazz/services/ClassDiagramServices.java
@@ -2656,6 +2656,12 @@
return target.getName();
}
+ /**
+ * TODO must be replaced by AQL code in the VSM by self.oclAsType(uml::Property).association = null
+ * @param elem
+ * @return
+ */
+ @Deprecated
public boolean isNotAssociation(EObject elem) {
return ((Property) elem).getAssociation() == null;
}
diff --git a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/classSubNodes/classSubNodes.aird b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/classSubNodes/classSubNodes.aird
index 5d6de1b..17656a2 100755
--- a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/classSubNodes/classSubNodes.aird
+++ b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/classSubNodes/classSubNodes.aird
@@ -22,7 +22,7 @@
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.papyrus.sirius.uml.diagram.sequence/description/papyrus_sequence.odesign#//@ownedViewpoints[name='SequenceDiagram']"/>
</ownedViews>
</viewpoint:DAnalysis>
- <diagram:DSemanticDiagram uid="_z6zJwItDEeyrjv-Rf7vw6Q">
+ <diagram:DSemanticDiagram uid="_z6zJwItDEeyrjv-Rf7vw6Q" synchronized="false">
<eAnnotations xmi:type="description:DAnnotation" uid="_z_5FIItDEeyrjv-Rf7vw6Q" source="Papyrus-SiriusDiagram">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z_5FIYtDEeyrjv-Rf7vw6Q" key="Papyrus-SiriusDiagram-ImplementationId" value="org.eclipse.papyrus.sirius.uml.diagram.class"/>
</eAnnotations>
diff --git a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/datatypeSubNodes/datatypeSubNodes.aird b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/datatypeSubNodes/datatypeSubNodes.aird
index 516a3ac..cc9e545 100755
--- a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/datatypeSubNodes/datatypeSubNodes.aird
+++ b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/datatypeSubNodes/datatypeSubNodes.aird
@@ -22,7 +22,7 @@
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.papyrus.sirius.uml.diagram.sequence/description/papyrus_sequence.odesign#//@ownedViewpoints[name='SequenceDiagram']"/>
</ownedViews>
</viewpoint:DAnalysis>
- <diagram:DSemanticDiagram uid="__mJsMJPLEeyIXLbp7yFc_w">
+ <diagram:DSemanticDiagram uid="__mJsMJPLEeyIXLbp7yFc_w" synchronized="false">
<eAnnotations xmi:type="description:DAnnotation" uid="__nwOspPLEeyIXLbp7yFc_w" source="Papyrus-SiriusDiagram">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__nwOs5PLEeyIXLbp7yFc_w" key="Papyrus-SiriusDiagram-ImplementationId" value="org.eclipse.papyrus.sirius.uml.diagram.class"/>
</eAnnotations>
diff --git a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/interfaceSubNodes/interfaceSubNodes.aird b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/interfaceSubNodes/interfaceSubNodes.aird
index b71fea5..55f1816 100755
--- a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/interfaceSubNodes/interfaceSubNodes.aird
+++ b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/interfaceSubNodes/interfaceSubNodes.aird
@@ -22,7 +22,7 @@
</ownedRepresentationDescriptors>
</ownedViews>
</viewpoint:DAnalysis>
- <diagram:DSemanticDiagram uid="_P47mkItaEeyGoqnbLKJBFA">
+ <diagram:DSemanticDiagram uid="_P47mkItaEeyGoqnbLKJBFA" synchronized="false">
<eAnnotations xmi:type="description:DAnnotation" uid="_P7YdoItaEeyGoqnbLKJBFA" source="Papyrus-SiriusDiagram">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P7YdoYtaEeyGoqnbLKJBFA" key="Papyrus-SiriusDiagram-ImplementationId" value="org.eclipse.papyrus.sirius.uml.diagram.class"/>
</eAnnotations>
diff --git a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/primitivetypeSubNodes/primitivetypeSubNodes.aird b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/primitivetypeSubNodes/primitivetypeSubNodes.aird
index 2bbc78b..1aa1caf 100755
--- a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/primitivetypeSubNodes/primitivetypeSubNodes.aird
+++ b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/creation/subNodes/primitivetypeSubNodes/primitivetypeSubNodes.aird
@@ -22,7 +22,7 @@
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.papyrus.sirius.uml.diagram.sequence/description/papyrus_sequence.odesign#//@ownedViewpoints[name='SequenceDiagram']"/>
</ownedViews>
</viewpoint:DAnalysis>
- <diagram:DSemanticDiagram uid="_uMZyIJPLEeyIXLbp7yFc_w">
+ <diagram:DSemanticDiagram uid="_uMZyIJPLEeyIXLbp7yFc_w" synchronized="false">
<eAnnotations xmi:type="description:DAnnotation" uid="_uPDdgJPLEeyIXLbp7yFc_w" source="Papyrus-SiriusDiagram">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uPDdgZPLEeyIXLbp7yFc_w" key="Papyrus-SiriusDiagram-ImplementationId" value="org.eclipse.papyrus.sirius.uml.diagram.class"/>
</eAnnotations>
diff --git a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/drop/subNode/propertyOperationToClass/SubNode_PropertyOperationToClass_DropTest.aird b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/drop/subNode/propertyOperationToClass/SubNode_PropertyOperationToClass_DropTest.aird
index d575bfe..7757476 100755
--- a/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/drop/subNode/propertyOperationToClass/SubNode_PropertyOperationToClass_DropTest.aird
+++ b/tests/junit/plugins/uml/org.eclipse.papyrus.sirius.uml.diagram.clazz.tests/resources/drop/subNode/propertyOperationToClass/SubNode_PropertyOperationToClass_DropTest.aird
@@ -22,7 +22,7 @@
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.papyrus.sirius.uml.diagram.statemachine/description/papyrus_statemachine.odesign#//@ownedViewpoints[name='StateMachineDiagram']"/>
</ownedViews>
</viewpoint:DAnalysis>
- <diagram:DSemanticDiagram uid="_E6rPIDctEeySVJ5jrKIH0A">
+ <diagram:DSemanticDiagram uid="_E6rPIDctEeySVJ5jrKIH0A" synchronized="false">
<eAnnotations xmi:type="description:DAnnotation" uid="_E78acTctEeySVJ5jrKIH0A" source="Papyrus-SiriusDiagram">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E78acjctEeySVJ5jrKIH0A" key="Papyrus-SiriusDiagram-ImplementationId" value="org.eclipse.papyrus.sirius.uml.diagram.class"/>
</eAnnotations>