Skip to content

Commit 6fa6377

Browse files
committed
ST6RI-178 Fixed root namespace insertion in model loading
1 parent 67e7173 commit 6fa6377

2 files changed

Lines changed: 24 additions & 10 deletions

File tree

org.omg.sysml.interactive/src/org/omg/sysml/interactive/SysMLInteractive.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -541,16 +541,10 @@ private String load(RemoteBranch branch) {
541541
EMFModelDelta delta = modelRefresher.create();
542542
modelRefresher.getIssues().forEach(System.out::println);
543543

544-
delta.getProjectRoots().forEach((eObject, dto) -> {
545-
Resource resource = this.createResource(eObject.toString() + SYSML_EXTENSION);
544+
delta.getProjectRootsAsNamespaces().forEach(rootNs -> {
545+
Resource resource = this.createResource(rootNs.toString() + SYSML_EXTENSION);
546+
resource.getContents().add(rootNs);
546547
this.addInputResource(resource);
547-
if (eObject instanceof Namespace) {
548-
resource.getContents().add(eObject);
549-
} else {
550-
Namespace root = SysMLFactory.eINSTANCE.createNamespace();
551-
NamespaceUtil.addOwnedMemberTo(root, (Element) eObject);
552-
resource.getContents().add(root);
553-
}
554548
addResourceToIndex(resource);
555549
});
556550

org.omg.sysml/src/org/omg/sysml/util/repository/EMFModelDelta.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,19 @@
2525
import java.io.IOException;
2626
import java.util.Collections;
2727
import java.util.Map;
28+
import java.util.Set;
29+
import java.util.stream.Collectors;
2830

2931
import org.eclipse.emf.common.util.URI;
3032
import org.eclipse.emf.ecore.EObject;
3133
import org.eclipse.emf.ecore.resource.Resource;
3234
import org.eclipse.emf.ecore.resource.ResourceSet;
35+
import org.omg.sysml.lang.sysml.Namespace;
36+
import org.omg.sysml.lang.sysml.SysMLFactory;
37+
import org.omg.sysml.lang.sysml.SysMLPackage;
3338
import org.omg.sysml.model.Element;
3439
import org.omg.sysml.util.ElementUtil;
40+
import org.omg.sysml.util.NamespaceUtil;
3541

3642
public class EMFModelDelta {
3743
private static final String EXTENSION = "sysmlx";
@@ -46,13 +52,27 @@ public Map<EObject, Element> getProjectRoots() {
4652
return projectRoots;
4753
}
4854

55+
public Set<EObject> getProjectRootsAsNamespaces() {
56+
return projectRoots.keySet().stream().map(this::wrapInNamespaceIfNotNamespace).collect(Collectors.toSet());
57+
}
58+
59+
private EObject wrapInNamespaceIfNotNamespace(EObject eObject) {
60+
if (eObject.eClass() == SysMLPackage.eINSTANCE.getNamespace()) {
61+
return eObject;
62+
} else {
63+
Namespace root = SysMLFactory.eINSTANCE.createNamespace();
64+
NamespaceUtil.addOwnedMemberTo(root, (org.omg.sysml.lang.sysml.Element) eObject);
65+
return root;
66+
}
67+
}
68+
4969
public void apply(ResourceSet resourceSet, URI baseUri) throws IOException {
5070
for (var root : projectRoots.keySet()) {
5171
var dto = projectRoots.get(root);
5272
Object object = dto.get("@id");
5373
URI fileURI = baseUri.appendSegment(object.toString()).appendFileExtension(EXTENSION);
5474
Resource resource = resourceSet.createResource(fileURI);
55-
resource.getContents().add(root);
75+
resource.getContents().add(wrapInNamespaceIfNotNamespace(root));
5676
ElementUtil.transformAll(resource, false);
5777
resource.save(Collections.EMPTY_MAP);
5878
}

0 commit comments

Comments
 (0)