Skip to content

Commit 6c752f6

Browse files
authored
Merge pull request #651 from Systems-Modeling/ST6RI-850
ST6RI-850 Generating XMI with implicit elements can cause an exception
2 parents 7a9da0d + cb19bed commit 6c752f6

4 files changed

Lines changed: 15 additions & 6 deletions

File tree

org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,11 @@ protected Feature getBoundValueResult() {
209209
Expression value = valuation.getValue();
210210
if (value != null) {
211211
ElementUtil.transform(value);
212-
Feature result = FeatureUtil.chainFeatures(value, value.getResult());
213-
return result;
212+
Feature valueResult = value.getResult();
213+
if (valueResult != null) {
214+
Feature result = FeatureUtil.chainFeatures(value, value.getResult());
215+
return result;
216+
}
214217
}
215218
}
216219
return null;

org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,12 @@ protected Feature computeTransitionLinkConnectors() {
9494
Feature transitionLinkFeature = UsageUtil.getTransitionLinkFeatureOf(transition);
9595
if (transitionLinkFeature == null) {
9696
// checkTransitionUsageSuccessionBindingConnector
97-
transitionLinkFeature = SysMLFactory.eINSTANCE.createReferenceUsage();
98-
TypeUtil.addOwnedFeatureTo(transition, transitionLinkFeature);
9997
Succession succession = transition.getSuccession();
100-
addBindingConnector(succession, transitionLinkFeature);
98+
if (succession != null) {
99+
transitionLinkFeature = SysMLFactory.eINSTANCE.createReferenceUsage();
100+
TypeUtil.addOwnedFeatureTo(transition, transitionLinkFeature);
101+
addBindingConnector(succession, transitionLinkFeature);
102+
}
101103

102104
// checkTransitionUsageSourceBindingConnector
103105
List<Feature> parameters = TypeUtil.getOwnedParametersOf(transition);

org.omg.sysml/src/org/omg/sysml/adapter/TypeAdapter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,8 @@ public BindingConnector addBindingConnector(Feature source, Feature target) {
478478

479479
public BindingConnector addResultBinding(Expression sourceExpression, Feature target) {
480480
ElementUtil.transform(sourceExpression);
481-
return addBindingConnector(sourceExpression.getResult(), target);
481+
Feature sourceResult = sourceExpression.getResult();
482+
return sourceResult == null || target == null? null: addBindingConnector(sourceResult, target);
482483
}
483484

484485
public void createResultConnector(Feature result) {

org.omg.sysml/src/org/omg/sysml/util/ConnectorUtil.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ public static void transformBindingConnector(BindingConnector connector, Type ow
6767
public static Feature addConnectorEndTo(Connector connector, Feature relatedFeature) {
6868
Feature endFeature = SysMLFactory.eINSTANCE.createFeature();
6969
ReferenceSubsetting subsetting = SysMLFactory.eINSTANCE.createReferenceSubsetting();
70+
if (relatedFeature.getOwner() == null) {
71+
subsetting.getOwnedRelatedElement().add(relatedFeature);
72+
}
7073
subsetting.setReferencedFeature(relatedFeature);
7174
endFeature.getOwnedRelationship().add(subsetting);
7275
endFeature.setIsEnd(true);

0 commit comments

Comments
 (0)