diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java index b18dbc84d8..876eb4eeca 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java @@ -209,8 +209,11 @@ protected Feature getBoundValueResult() { Expression value = valuation.getValue(); if (value != null) { ElementUtil.transform(value); - Feature result = FeatureUtil.chainFeatures(value, value.getResult()); - return result; + Feature valueResult = value.getResult(); + if (valueResult != null) { + Feature result = FeatureUtil.chainFeatures(value, value.getResult()); + return result; + } } } return null; diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java index e30e0697fd..2d5bdd9e79 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TransitionUsageAdapter.java @@ -94,10 +94,12 @@ protected Feature computeTransitionLinkConnectors() { Feature transitionLinkFeature = UsageUtil.getTransitionLinkFeatureOf(transition); if (transitionLinkFeature == null) { // checkTransitionUsageSuccessionBindingConnector - transitionLinkFeature = SysMLFactory.eINSTANCE.createReferenceUsage(); - TypeUtil.addOwnedFeatureTo(transition, transitionLinkFeature); Succession succession = transition.getSuccession(); - addBindingConnector(succession, transitionLinkFeature); + if (succession != null) { + transitionLinkFeature = SysMLFactory.eINSTANCE.createReferenceUsage(); + TypeUtil.addOwnedFeatureTo(transition, transitionLinkFeature); + addBindingConnector(succession, transitionLinkFeature); + } // checkTransitionUsageSourceBindingConnector List parameters = TypeUtil.getOwnedParametersOf(transition); diff --git a/org.omg.sysml/src/org/omg/sysml/adapter/TypeAdapter.java b/org.omg.sysml/src/org/omg/sysml/adapter/TypeAdapter.java index 065901af67..de2cc9190e 100644 --- a/org.omg.sysml/src/org/omg/sysml/adapter/TypeAdapter.java +++ b/org.omg.sysml/src/org/omg/sysml/adapter/TypeAdapter.java @@ -478,7 +478,8 @@ public BindingConnector addBindingConnector(Feature source, Feature target) { public BindingConnector addResultBinding(Expression sourceExpression, Feature target) { ElementUtil.transform(sourceExpression); - return addBindingConnector(sourceExpression.getResult(), target); + Feature sourceResult = sourceExpression.getResult(); + return sourceResult == null || target == null? null: addBindingConnector(sourceResult, target); } public void createResultConnector(Feature result) { diff --git a/org.omg.sysml/src/org/omg/sysml/util/ConnectorUtil.java b/org.omg.sysml/src/org/omg/sysml/util/ConnectorUtil.java index fa0459b6ea..8c324317cf 100644 --- a/org.omg.sysml/src/org/omg/sysml/util/ConnectorUtil.java +++ b/org.omg.sysml/src/org/omg/sysml/util/ConnectorUtil.java @@ -67,6 +67,9 @@ public static void transformBindingConnector(BindingConnector connector, Type ow public static Feature addConnectorEndTo(Connector connector, Feature relatedFeature) { Feature endFeature = SysMLFactory.eINSTANCE.createFeature(); ReferenceSubsetting subsetting = SysMLFactory.eINSTANCE.createReferenceSubsetting(); + if (relatedFeature.getOwner() == null) { + subsetting.getOwnedRelatedElement().add(relatedFeature); + } subsetting.setReferencedFeature(relatedFeature); endFeature.getOwnedRelationship().add(subsetting); endFeature.setIsEnd(true);