Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorytanguy2011-07-22 13:49:02 +0000
committerytanguy2011-07-22 13:49:02 +0000
commit4babc7ed976759746a93a7086ff6b1b33dbaa136 (patch)
tree10edf1503248e3c45c7e14c05a11ae90adb52fdf /plugins/sysml/org.eclipse.papyrus.sysml
parent529708062b6f98c7f54db9b1bca78051d56107d1 (diff)
downloadorg.eclipse.papyrus-4babc7ed976759746a93a7086ff6b1b33dbaa136.tar.gz
org.eclipse.papyrus-4babc7ed976759746a93a7086ff6b1b33dbaa136.tar.xz
org.eclipse.papyrus-4babc7ed976759746a93a7086ff6b1b33dbaa136.zip
NEW - bug 352563: [SysML Static Profile] Incorrect content for Requirement::/tracedTo derived property
https://bugs.eclipse.org/bugs/show_bug.cgi?id=352563
Diffstat (limited to 'plugins/sysml/org.eclipse.papyrus.sysml')
-rw-r--r--plugins/sysml/org.eclipse.papyrus.sysml/src/org/eclipse/papyrus/sysml/requirements/impl/RequirementImpl.java5
-rw-r--r--plugins/sysml/org.eclipse.papyrus.sysml/src/org/eclipse/papyrus/sysml/requirements/impl/RequirementRelatedImpl.java17
2 files changed, 13 insertions, 9 deletions
diff --git a/plugins/sysml/org.eclipse.papyrus.sysml/src/org/eclipse/papyrus/sysml/requirements/impl/RequirementImpl.java b/plugins/sysml/org.eclipse.papyrus.sysml/src/org/eclipse/papyrus/sysml/requirements/impl/RequirementImpl.java
index a10a1ed4fc6..f804a895c60 100644
--- a/plugins/sysml/org.eclipse.papyrus.sysml/src/org/eclipse/papyrus/sysml/requirements/impl/RequirementImpl.java
+++ b/plugins/sysml/org.eclipse.papyrus.sysml/src/org/eclipse/papyrus/sysml/requirements/impl/RequirementImpl.java
@@ -471,9 +471,10 @@ public class RequirementImpl extends EObjectImpl implements Requirement {
// Find Trace link
while(itDep.hasNext()) {
DirectedRelationship currentDR = itDep.next();
- currentTrace = (Trace)ElementUtil.hasStereotype(currentDR, StandardPackage.eINSTANCE.getTrace());
+ currentTrace = ElementUtil.getStereotypeApplication(currentDR, Trace.class);
- if(currentTrace != null) {
+ // Must be a Trace not a subtype (see bug #352563).
+ if((currentTrace != null) && (currentTrace.eClass() == StandardPackage.eINSTANCE.getTrace())) {
EList<NamedElement> suppliers = currentTrace.getBase_Abstraction().getClients();
tracedTo.addAll(suppliers);
}
diff --git a/plugins/sysml/org.eclipse.papyrus.sysml/src/org/eclipse/papyrus/sysml/requirements/impl/RequirementRelatedImpl.java b/plugins/sysml/org.eclipse.papyrus.sysml/src/org/eclipse/papyrus/sysml/requirements/impl/RequirementRelatedImpl.java
index b922d6c5123..61e26b4eeec 100644
--- a/plugins/sysml/org.eclipse.papyrus.sysml/src/org/eclipse/papyrus/sysml/requirements/impl/RequirementRelatedImpl.java
+++ b/plugins/sysml/org.eclipse.papyrus.sysml/src/org/eclipse/papyrus/sysml/requirements/impl/RequirementRelatedImpl.java
@@ -258,25 +258,28 @@ public class RequirementRelatedImpl extends EObjectImpl implements RequirementRe
* @generated NOT
*/
public EList<Requirement> getTracedFrom() {
- // This should return the Requirement clients of any Trace link targeting current
- // RequirementRelated
+
+ // Derived from all requirements that are supplier of a "trace" relationship for
+ // which this element is a client.
+ // "trace" subtypes are not included (see bug #352563).
EList<Requirement> tracedFrom = new BasicEList<Requirement>();
Trace currentTrace = null;
if(getBase_NamedElement() != null) {
// Find Trace link
- EList<DirectedRelationship> relationships = getBase_NamedElement().getTargetDirectedRelationships();
+ EList<DirectedRelationship> relationships = getBase_NamedElement().getSourceDirectedRelationships();
Iterator<DirectedRelationship> itDep = relationships.iterator();
while(itDep.hasNext()) {
DirectedRelationship currentDRelationship = itDep.next();
- currentTrace = (Trace)ElementUtil.hasStereotype(currentDRelationship, StandardPackage.eINSTANCE.getTrace());
+ currentTrace = ElementUtil.getStereotypeApplication(currentDRelationship, Trace.class);
- if(currentTrace != null) {
- EList<NamedElement> clients = currentTrace.getBase_Abstraction().getClients();
+ // Must be a Trace not a subtype (see bug #352563).
+ if((currentTrace != null) && (currentTrace.eClass() == StandardPackage.eINSTANCE.getTrace())) {
+ EList<NamedElement> clients = currentTrace.getBase_Abstraction().getSuppliers();
Iterator<NamedElement> it = clients.iterator();
while(it.hasNext()) {
- Requirement currentRequirement = (Requirement)ElementUtil.hasStereotype(it.next(), RequirementsPackage.eINSTANCE.getRequirement());
+ Requirement currentRequirement = ElementUtil.getStereotypeApplication(it.next(), Requirement.class);
if(currentRequirement != null) {
tracedFrom.add(currentRequirement);
}

Back to the top