Skip to content

Commit 17436c8

Browse files
committed
Merge branch 'release/2021-09'
2 parents be91568 + 35d7d5a commit 17436c8

564 files changed

Lines changed: 22038 additions & 24943 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/Module.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/*
22
* SysML v2 REST/HTTP Pilot Implementation
3-
* Copyright (C) 2020 InterCAX LLC
4-
* Copyright (C) 2020 California Institute of Technology ("Caltech")
3+
* Copyright (C) 2020 InterCAX LLC
4+
* Copyright (C) 2020 California Institute of Technology ("Caltech")
5+
* Copyright (C) 2021 Twingineer LLC
56
*
67
* This program is free software: you can redistribute it and/or modify
78
* it under the terms of the GNU Lesser General Public License as published by
@@ -36,11 +37,13 @@ protected void configure() {
3637
bind(MetamodelProvider.class).to(JPAMetamodelProvider.class).asEagerSingleton();
3738
bind(JPAManager.class).to(HibernateManager.class).asEagerSingleton();
3839
bind(ObjectMapperFactory.class).to(HibernateObjectMapperFactory.class).asEagerSingleton();
40+
bind(DataDao.class).to(JpaDataDao.class);
3941
bind(ElementDao.class).to(JpaElementDao.class);
4042
bind(ProjectDao.class).to(JpaProjectDao.class);
4143
bind(RelationshipDao.class).to(JpaRelationshipDao.class);
4244
bind(CommitDao.class).to(JpaCommitDao.class);
4345
bind(QueryDao.class).to(JpaQueryDao.class);
4446
bind(BranchDao.class).to(JpaBranchDao.class);
47+
bind(TagDao.class).to(JpaTagDao.class);
4548
}
4649
}

app/config/impl/JPAMetamodelProvider.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/*
22
* SysML v2 REST/HTTP Pilot Implementation
3-
* Copyright (C) 2020 InterCAX LLC
4-
* Copyright (C) 2020 California Institute of Technology ("Caltech")
3+
* Copyright (C) 2020 InterCAX LLC
4+
* Copyright (C) 2020 California Institute of Technology ("Caltech")
5+
* Copyright (C) 2021 Twingineer LLC
56
*
67
* This program is free software: you can redistribute it and/or modify
78
* it under the terms of the GNU Lesser General Public License as published by
@@ -22,7 +23,7 @@
2223
package config.impl;
2324

2425
import config.MetamodelProvider;
25-
import org.omg.sysml.metamodel.MofObject;
26+
import org.omg.sysml.lifecycle.Data;
2627
import org.omg.sysml.query.Constraint;
2728
import org.omg.sysml.record.Record;
2829
import org.reflections.Reflections;
@@ -38,7 +39,7 @@ public class JPAMetamodelProvider implements MetamodelProvider {
3839

3940
static {
4041
List<Class<?>> roots = Arrays.asList(
41-
MofObject.class,
42+
Data.class,
4243
Record.class,
4344
Constraint.class
4445
);

app/controllers/BranchController.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/*
22
* SysML v2 REST/HTTP Pilot Implementation
3-
* Copyright (C) 2020 InterCAX LLC
4-
* Copyright (C) 2020 California Institute of Technology ("Caltech")
3+
* Copyright (C) 2020 InterCAX LLC
4+
* Copyright (C) 2020 California Institute of Technology ("Caltech")
5+
* Copyright (C) 2021 Twingineer LLC
56
*
67
* This program is free software: you can redistribute it and/or modify
78
* it under the terms of the GNU Lesser General Public License as published by
@@ -84,11 +85,16 @@ public Result getBranchesByProject(UUID projectId, Request request) {
8485
);
8586
}
8687

87-
public Result getBranchesByProjectAndId(UUID projectId, UUID branchId, Request request) {
88+
public Result getBranchByProjectAndId(UUID projectId, UUID branchId, Request request) {
8889
Optional<Branch> branch = branchService.getByProjectIdAndId(projectId, branchId);
8990
return buildResult(branch.orElse(null), request, new ProjectContainmentParameters(projectId));
9091
}
9192

93+
public Result deleteBranchByProjectAndId(UUID projectId, UUID branchId, Request request) {
94+
Optional<Branch> branch = branchService.deleteByProjectIdAndId(projectId, branchId);
95+
return buildResult(branch.orElse(null), request, new ProjectContainmentParameters(projectId));
96+
}
97+
9298
@Override
9399
protected JsonLdAdorner<Branch, ProjectContainmentParameters> getAdorner() {
94100
return adorner;

app/controllers/ElementController.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/*
22
* SysML v2 REST/HTTP Pilot Implementation
3-
* Copyright (C) 2020 InterCAX LLC
4-
* Copyright (C) 2020 California Institute of Technology ("Caltech")
3+
* Copyright (C) 2020 InterCAX LLC
4+
* Copyright (C) 2020 California Institute of Technology ("Caltech")
5+
* Copyright (C) 2021 Twingineer LLC
56
*
67
* This program is free software: you can redistribute it and/or modify
78
* it under the terms of the GNU Lesser General Public License as published by
@@ -22,8 +23,8 @@
2223
package controllers;
2324

2425
import config.MetamodelProvider;
26+
import jackson.jsonld.DataJsonLdAdorner;
2527
import jackson.jsonld.JsonLdAdorner;
26-
import jackson.jsonld.MofObjectJsonLdAdorner;
2728
import org.omg.sysml.metamodel.Element;
2829
import play.Environment;
2930
import play.mvc.Http.Request;
@@ -35,17 +36,17 @@
3536
import java.util.Optional;
3637
import java.util.UUID;
3738

38-
public final class ElementController extends JsonLdController<Element, MofObjectJsonLdAdorner.Parameters> {
39+
public final class ElementController extends JsonLdController<Element, DataJsonLdAdorner.Parameters> {
3940

4041
private final ElementService elementService;
4142
private final MetamodelProvider metamodelProvider;
42-
private final JsonLdAdorner<Element, MofObjectJsonLdAdorner.Parameters> adorner;
43+
private final JsonLdAdorner<Element, DataJsonLdAdorner.Parameters> adorner;
4344

4445
@Inject
4546
public ElementController(ElementService elementService, MetamodelProvider metamodelProvider, Environment environment) {
4647
this.elementService = elementService;
4748
this.metamodelProvider = metamodelProvider;
48-
this.adorner = new MofObjectJsonLdAdorner<>(metamodelProvider, environment, INLINE_JSON_LD_CONTEXT);
49+
this.adorner = new DataJsonLdAdorner<>(metamodelProvider, environment, INLINE_JSON_LD_CONTEXT);
4950
}
5051

5152
public Result getElementsByProjectIdCommitId(UUID projectId, UUID commitId, Request request) {
@@ -56,7 +57,7 @@ public Result getElementsByProjectIdCommitId(UUID projectId, UUID commitId, Requ
5657

5758
public Result getElementByProjectIdCommitIdElementId(UUID projectId, UUID commitId, UUID elementId, Request request) {
5859
Optional<Element> element = elementService.getElementsByProjectIdCommitIdElementId(projectId, commitId, elementId);
59-
return buildResult(element.orElse(null), request, new MofObjectJsonLdAdorner.Parameters(projectId, commitId));
60+
return buildResult(element.orElse(null), request, new DataJsonLdAdorner.Parameters(projectId, commitId));
6061
}
6162

6263
public Result getRootsByProjectIdCommitId(UUID projectId, UUID commitId, Request request) {
@@ -67,7 +68,7 @@ public Result getRootsByProjectIdCommitId(UUID projectId, UUID commitId, Request
6768

6869
private Result buildPaginatedResult(List<Element> elements, UUID projectId, UUID commitId, Request request, PageRequest pageRequest) {
6970
return paginateResult(
70-
buildResult(elements, List.class, metamodelProvider.getImplementationClass(Element.class), request, new MofObjectJsonLdAdorner.Parameters(projectId, commitId)),
71+
buildResult(elements, List.class, metamodelProvider.getImplementationClass(Element.class), request, new DataJsonLdAdorner.Parameters(projectId, commitId)),
7172
elements.size(),
7273
idx -> elements.get(idx).getIdentifier(),
7374
request,
@@ -76,7 +77,7 @@ private Result buildPaginatedResult(List<Element> elements, UUID projectId, UUID
7677
}
7778

7879
@Override
79-
protected JsonLdAdorner<Element, MofObjectJsonLdAdorner.Parameters> getAdorner() {
80+
protected JsonLdAdorner<Element, DataJsonLdAdorner.Parameters> getAdorner() {
8081
return adorner;
8182
}
8283
}

app/controllers/ProjectController.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/*
22
* SysML v2 REST/HTTP Pilot Implementation
3-
* Copyright (C) 2020 InterCAX LLC
4-
* Copyright (C) 2020 California Institute of Technology ("Caltech")
3+
* Copyright (C) 2020 InterCAX LLC
4+
* Copyright (C) 2020 California Institute of Technology ("Caltech")
5+
* Copyright (C) 2021 Twingineer LLC
56
*
67
* This program is free software: you can redistribute it and/or modify
78
* it under the terms of the GNU Lesser General Public License as published by
@@ -56,6 +57,29 @@ public Result getProjectById(UUID id, Request request) {
5657
return buildResult(project.orElse(null), request, null);
5758
}
5859

60+
public Result putProjectById(UUID id, Request request) {
61+
Optional<Project> existingProject = projectService.getById(id);
62+
if (existingProject.isEmpty()) {
63+
return Results.notFound();
64+
}
65+
JsonNode requestBodyJson = request.body().asJson();
66+
Project requestedObject = Json.fromJson(requestBodyJson, metamodelProvider.getImplementationClass(Project.class));
67+
if (requestedObject.getId() != null && !id.equals(requestedObject.getId())) {
68+
return Results.badRequest();
69+
}
70+
requestedObject.setId(id);
71+
Optional<Project> project = projectService.update(requestedObject);
72+
if (project.isEmpty()) {
73+
return Results.internalServerError();
74+
}
75+
return buildResult(project.get(), request, null);
76+
}
77+
78+
public Result deleteProjectById(UUID id, Request request) {
79+
Optional<Project> project = projectService.deleteById(id);
80+
return buildResult(project.orElse(null), request, null);
81+
}
82+
5983
public Result getProjects(Request request) {
6084
PageRequest pageRequest = PageRequest.from(request);
6185
List<Project> projects = projectService.getAll(pageRequest.getAfter(), pageRequest.getBefore(), pageRequest.getSize());

app/controllers/QueryController.java

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/*
22
* SysML v2 REST/HTTP Pilot Implementation
3-
* Copyright (C) 2020 InterCAX LLC
4-
* Copyright (C) 2020 California Institute of Technology ("Caltech")
3+
* Copyright (C) 2020 InterCAX LLC
4+
* Copyright (C) 2020 California Institute of Technology ("Caltech")
5+
* Copyright (C) 2021 Twingineer LLC
56
*
67
* This program is free software: you can redistribute it and/or modify
78
* it under the terms of the GNU Lesser General Public License as published by
@@ -28,10 +29,10 @@
2829
import jackson.JacksonHelper;
2930
import jackson.filter.AllowedPropertyFilter;
3031
import jackson.filter.DynamicFilterMixin;
32+
import jackson.jsonld.DataJsonLdAdorner;
3133
import jackson.jsonld.JsonLdAdorner;
32-
import jackson.jsonld.MofObjectJsonLdAdorner;
34+
import org.omg.sysml.lifecycle.Data;
3335
import org.omg.sysml.metamodel.Element;
34-
import org.omg.sysml.metamodel.MofObject;
3536
import org.omg.sysml.query.Query;
3637
import play.Environment;
3738
import play.libs.Json;
@@ -45,27 +46,27 @@
4546
import java.util.function.UnaryOperator;
4647
import java.util.stream.StreamSupport;
4748

48-
public class QueryController extends JsonLdController<Element, MofObjectJsonLdAdorner.Parameters> {
49+
public class QueryController extends JsonLdController<Data, DataJsonLdAdorner.Parameters> {
4950

5051
private final QueryService queryService;
5152
private final MetamodelProvider metamodelProvider;
52-
private final JsonLdAdorner<Element, MofObjectJsonLdAdorner.Parameters> adorner;
53+
private final JsonLdAdorner<Data, DataJsonLdAdorner.Parameters> adorner;
5354

5455
@Inject
5556
public QueryController(QueryService queryService, MetamodelProvider metamodelProvider, Environment environment) {
5657
this.queryService = queryService;
5758
this.metamodelProvider = metamodelProvider;
58-
this.adorner = new MofObjectJsonLdAdorner<>(metamodelProvider, environment, INLINE_JSON_LD_CONTEXT);
59+
this.adorner = new DataJsonLdAdorner<>(metamodelProvider, environment, INLINE_JSON_LD_CONTEXT);
5960
}
6061

61-
public Result createWithProjectId(UUID projectId, Request request) {
62+
public Result postQueryByProject(UUID projectId, Request request) {
6263
JsonNode requestBodyJson = request.body().asJson();
6364
Query requestedObject = Json.fromJson(requestBodyJson, metamodelProvider.getImplementationClass(Query.class));
6465
Optional<Query> response = queryService.create(projectId, requestedObject);
6566
return response.map(e -> created(Json.toJson(e))).orElseGet(Results::internalServerError);
6667
}
6768

68-
public Result byProject(UUID projectId, Request request) {
69+
public Result getQueriesByProject(UUID projectId, Request request) {
6970
PageRequest pageRequest = PageRequest.from(request);
7071
List<Query> queries = queryService.getByProjectId(projectId, pageRequest.getAfter(), pageRequest.getBefore(), pageRequest.getSize());
7172
return Optional.of(queries)
@@ -81,11 +82,16 @@ public Result byProject(UUID projectId, Request request) {
8182
.orElseThrow();
8283
}
8384

84-
public Result byProjectAndId(UUID projectId, UUID queryId) {
85+
public Result getQueryByProjectAndId(UUID projectId, UUID queryId) {
8586
Optional<Query> query = queryService.getByProjectIdAndId(projectId, queryId);
8687
return query.map(e -> ok(Json.toJson(e))).orElseGet(Results::notFound);
8788
}
8889

90+
public Result deleteQueryByProjectAndId(UUID projectId, UUID queryId) {
91+
Optional<Query> query = queryService.deleteByProjectIdAndId(projectId, queryId);
92+
return query.map(e -> ok(Json.toJson(e))).orElseGet(Results::notFound);
93+
}
94+
8995
public Result getQueryResultsByProjectIdQueryId(UUID projectId, UUID queryId, @SuppressWarnings("OptionalUsedAsFieldOrParameterType") Optional<UUID> commitId, Request request) {
9096
QueryService.QueryResults result = queryService.getQueryResultsByProjectIdQueryId(projectId, queryId, commitId.orElse(null));
9197
return buildResult(result, projectId, request);
@@ -99,17 +105,17 @@ public Result getQueryResultsByProjectIdQuery(UUID projectId, @SuppressWarnings(
99105
}
100106

101107
private Result buildResult(QueryService.QueryResults queryResults, UUID projectId, Request request) {
102-
List<Element> elements = queryResults.getElements();
108+
List<Data> data = queryResults.getData();
103109
AllowedPropertyFilter filter = queryResults.getPropertyFilter();
104110
boolean ld = respondWithJsonLd(request);
105111
JsonNode json = buildJson(
106-
new HashSet<>(elements),
112+
new HashSet<>(data),
107113
Set.class,
108114
metamodelProvider.getImplementationClass(Element.class),
109115
request,
110-
new MofObjectJsonLdAdorner.Parameters(projectId, queryResults.getCommit().getId()),
116+
new DataJsonLdAdorner.Parameters(projectId, queryResults.getCommit().getId()),
111117
ld,
112-
filter != null ? Json.mapper().copy().addMixIn(MofObject.class, DynamicFilterMixin.class) : Json.mapper(),
118+
filter != null ? Json.mapper().copy().addMixIn(Data.class, DynamicFilterMixin.class) : Json.mapper(),
113119
filter != null ? writer -> writer.with(new SimpleFilterProvider().addFilter(DynamicFilterMixin.FILTER_NAME, filter)) : UnaryOperator.identity()
114120
);
115121
// Workaround for JSON always containing "@type"
@@ -122,7 +128,7 @@ private Result buildResult(QueryService.QueryResults queryResults, UUID projectI
122128
}
123129

124130
@Override
125-
protected JsonLdAdorner<Element, MofObjectJsonLdAdorner.Parameters> getAdorner() {
131+
protected JsonLdAdorner<Data, DataJsonLdAdorner.Parameters> getAdorner() {
126132
return adorner;
127133
}
128134
}

app/controllers/RelationshipController.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/*
22
* SysML v2 REST/HTTP Pilot Implementation
3-
* Copyright (C) 2020 InterCAX LLC
4-
* Copyright (C) 2020 California Institute of Technology ("Caltech")
3+
* Copyright (C) 2020 InterCAX LLC
4+
* Copyright (C) 2020 California Institute of Technology ("Caltech")
5+
* Copyright (C) 2021 Twingineer LLC
56
*
67
* This program is free software: you can redistribute it and/or modify
78
* it under the terms of the GNU Lesser General Public License as published by
@@ -22,10 +23,10 @@
2223
package controllers;
2324

2425
import config.MetamodelProvider;
26+
import jackson.jsonld.DataJsonLdAdorner;
2527
import jackson.jsonld.JsonLdAdorner;
26-
import jackson.jsonld.MofObjectJsonLdAdorner;
2728
import org.omg.sysml.metamodel.Relationship;
28-
import org.omg.sysml.utils.RelationshipDirection;
29+
import org.omg.sysml.util.RelationshipDirection;
2930
import play.Environment;
3031
import play.mvc.Http.Request;
3132
import play.mvc.Result;
@@ -37,17 +38,17 @@
3738
import java.util.Optional;
3839
import java.util.UUID;
3940

40-
public final class RelationshipController extends JsonLdController<Relationship, MofObjectJsonLdAdorner.Parameters> {
41+
public final class RelationshipController extends JsonLdController<Relationship, DataJsonLdAdorner.Parameters> {
4142

4243
private final RelationshipService relationshipService;
4344
private final MetamodelProvider metamodelProvider;
44-
private final JsonLdAdorner<Relationship, MofObjectJsonLdAdorner.Parameters> adorner;
45+
private final JsonLdAdorner<Relationship, DataJsonLdAdorner.Parameters> adorner;
4546

4647
@Inject
4748
public RelationshipController(RelationshipService relationshipService, MetamodelProvider metamodelProvider, Environment environment) {
4849
this.relationshipService = relationshipService;
4950
this.metamodelProvider = metamodelProvider;
50-
this.adorner = new MofObjectJsonLdAdorner<>(metamodelProvider, environment, INLINE_JSON_LD_CONTEXT);
51+
this.adorner = new DataJsonLdAdorner<>(metamodelProvider, environment, INLINE_JSON_LD_CONTEXT);
5152
}
5253

5354
public Result getRelationshipsByProjectIdCommitIdRelatedElementId(UUID projectId, UUID commitId, UUID relatedElementId, @SuppressWarnings("OptionalUsedAsFieldOrParameterType") Optional<String> direction, Request request) {
@@ -72,7 +73,7 @@ public Result getRelationshipsByProjectIdCommitIdRelatedElementId(UUID projectId
7273

7374
private Result buildPaginatedResult(List<Relationship> relationships, UUID projectId, UUID commitId, Request request, PageRequest pageRequest) {
7475
return paginateResult(
75-
buildResult(relationships, List.class, metamodelProvider.getImplementationClass(Relationship.class), request, new MofObjectJsonLdAdorner.Parameters(projectId, commitId)),
76+
buildResult(relationships, List.class, metamodelProvider.getImplementationClass(Relationship.class), request, new DataJsonLdAdorner.Parameters(projectId, commitId)),
7677
relationships.size(),
7778
idx -> relationships.get(idx).getIdentifier(),
7879
request,
@@ -81,7 +82,7 @@ private Result buildPaginatedResult(List<Relationship> relationships, UUID proje
8182
}
8283

8384
@Override
84-
protected JsonLdAdorner<Relationship, MofObjectJsonLdAdorner.Parameters> getAdorner() {
85+
protected JsonLdAdorner<Relationship, DataJsonLdAdorner.Parameters> getAdorner() {
8586
return adorner;
8687
}
8788
}

0 commit comments

Comments
 (0)