|
44 | 44 | import org.eclipse.syson.sysml.Annotation; |
45 | 45 | import org.eclipse.syson.sysml.Comment; |
46 | 46 | import org.eclipse.syson.sysml.ConjugatedPortDefinition; |
| 47 | +import org.eclipse.syson.sysml.Definition; |
47 | 48 | import org.eclipse.syson.sysml.Documentation; |
48 | 49 | import org.eclipse.syson.sysml.Element; |
49 | 50 | import org.eclipse.syson.sysml.EndFeatureMembership; |
|
55 | 56 | import org.eclipse.syson.sysml.FeatureValue; |
56 | 57 | import org.eclipse.syson.sysml.Import; |
57 | 58 | import org.eclipse.syson.sysml.Membership; |
| 59 | +import org.eclipse.syson.sysml.Namespace; |
58 | 60 | import org.eclipse.syson.sysml.ParameterMembership; |
59 | 61 | import org.eclipse.syson.sysml.ReferenceSubsetting; |
60 | 62 | import org.eclipse.syson.sysml.ReferenceUsage; |
|
68 | 70 | import org.eclipse.syson.sysml.SysmlPackage; |
69 | 71 | import org.eclipse.syson.sysml.TransitionUsage; |
70 | 72 | import org.eclipse.syson.sysml.Type; |
| 73 | +import org.eclipse.syson.sysml.Usage; |
71 | 74 | import org.eclipse.syson.sysml.ViewUsage; |
72 | 75 | import org.eclipse.syson.sysml.metamodel.services.ElementInitializerSwitch; |
73 | 76 | import org.eclipse.syson.sysml.metamodel.services.MetamodelQueryElementService; |
@@ -570,12 +573,16 @@ public Element setNewDocumentationValue(Element self, String newValue) { |
570 | 573 | * a {@link FeatureValue} or {@link Feature} |
571 | 574 | * @return a {@link FeatureValue} or <code>null</code> |
572 | 575 | */ |
573 | | - public Element getFeatureValue(Element self) { |
574 | | - Element result = null; |
| 576 | + public FeatureValue getFeatureValue(Element self) { |
| 577 | + FeatureValue result = null; |
575 | 578 | if (self instanceof FeatureValue featureValue && featureValue.getValue() != null) { |
576 | 579 | result = featureValue; |
577 | 580 | } else if (self instanceof Feature feature) { |
578 | | - result = this.metamodelQueryElementService.getValueExpression(feature).orElse(null); |
| 581 | + result = feature.getOwnedRelationship().stream() |
| 582 | + .filter(FeatureValue.class::isInstance) |
| 583 | + .map(FeatureValue.class::cast) |
| 584 | + .findFirst() |
| 585 | + .orElse(null); |
579 | 586 | } |
580 | 587 | return result; |
581 | 588 | } |
@@ -626,6 +633,39 @@ private String getExpressionAsText(Expression expression) { |
626 | 633 | return this.metamodelQueryElementService.getExpressionTextualRepresentation(expression); |
627 | 634 | } |
628 | 635 |
|
| 636 | + /** |
| 637 | + * Gets the {@link ResultExpressionMembership} from a {@link Namespace} or a {@link ResultExpressionMembership}. |
| 638 | + * |
| 639 | + * @param self |
| 640 | + * a {@link Namespace} or a {@link ResultExpressionMembership}. |
| 641 | + * @return a {@link ResultExpressionMembership} or <code>null</code> |
| 642 | + */ |
| 643 | + public Element getResultExpression(Element self) { |
| 644 | + Element result = null; |
| 645 | + if (self instanceof ResultExpressionMembership expressionMembership && expressionMembership.getOwnedResultExpression() != null) { |
| 646 | + result = expressionMembership; |
| 647 | + } else if (self instanceof Namespace namespace && this.metamodelQueryElementService.getResultExpressionMembership(namespace) != null |
| 648 | + && this.metamodelQueryElementService.getResultExpressionMembership(namespace).getOwnedResultExpression() != null) { |
| 649 | + result = this.metamodelQueryElementService.getResultExpressionMembership(namespace); |
| 650 | + } |
| 651 | + return result; |
| 652 | + } |
| 653 | + |
| 654 | + /** |
| 655 | + * Gets the {@link ResultExpressionMembership} from a {@link Namespace} or a {@link ResultExpressionMembership}. |
| 656 | + * |
| 657 | + * @param self |
| 658 | + * a {@link Namespace} or a {@link ResultExpressionMembership}. |
| 659 | + * @return a {@link ResultExpressionMembership} or <code>null</code> |
| 660 | + */ |
| 661 | + public Element getExpression(Element self) { |
| 662 | + if (self instanceof Expression && !(self instanceof Usage) && !(self instanceof Definition)) { |
| 663 | + return self; |
| 664 | + } else { |
| 665 | + return null; |
| 666 | + } |
| 667 | + } |
| 668 | + |
629 | 669 | /** |
630 | 670 | * Returns the element that owns the visibility feature of the given element. |
631 | 671 | * |
|
0 commit comments