11package controllers ;
22
33import com .fasterxml .jackson .databind .JsonNode ;
4- import models .Element ;
5- import models .Relationship ;
4+ import config .MetamodelProvider ;
5+ import jackson .JacksonHelper ;
6+ import org .omg .sysml .metamodel .MofObject ;
7+ import org .omg .sysml .metamodel .Relationship ;
68import play .libs .Json ;
79import play .mvc .Controller ;
10+ import play .mvc .Http ;
811import play .mvc .Result ;
912import play .mvc .Results ;
1013import services .RelationshipService ;
2023 * Controller for handling all API requests related to SysML v2 elements
2124 */
2225public class RelationshipController extends Controller {
26+ @ Inject
27+ private MetamodelProvider metamodelProvider ;
28+
2329 @ Inject
2430 private RelationshipService relationshipService ;
2531
@@ -31,37 +37,40 @@ public Result byId(String id) {
3137
3238 public Result all () {
3339 List <Relationship > relationships = relationshipService .getAll ();
34- return ok (Json . toJson ( relationships ));
40+ return ok (JacksonHelper . collectionValueToTree ( List . class , metamodelProvider . getImplementationClass ( Relationship . class ), relationships ));
3541 }
3642
37- public Result create () {
38- JsonNode requestBodyJson = request ().body ().asJson ();
39- Relationship requestRelationship = Json .fromJson (requestBodyJson , Relationship .class );
40- Optional <Relationship > responseRelationship = relationshipService .create (requestRelationship );
41- return responseRelationship .map (e -> ok (Json .toJson (e ))).orElseGet (Results ::badRequest );
43+ public Result create (Http .Request request ) {
44+ JsonNode requestBodyJson = request .body ().asJson ();
45+ MofObject requestedObject = Json .fromJson (requestBodyJson , metamodelProvider .getImplementationClass (MofObject .class ));
46+ if (!(requestedObject instanceof Relationship )) {
47+ return Results .badRequest ();
48+ }
49+ Optional <Relationship > responseRelationship = relationshipService .create ((Relationship ) requestedObject );
50+ return responseRelationship .map (e -> created (Json .toJson (e ))).orElseGet (Results ::badRequest );
4251 }
4352
4453 public Result byRelatedElementId (String id ) {
4554 UUID elementUuid = UUID .fromString (id );
4655 List <Relationship > relationships = relationshipService .getByRelatedElementId (elementUuid );
47- return ok (Json . toJson ( relationships ));
56+ return ok (JacksonHelper . collectionValueToTree ( List . class , metamodelProvider . getImplementationClass ( Relationship . class ), relationships ));
4857 }
4958
5059 public Result bySourceElementId (String id ) {
5160 UUID elementUuid = UUID .fromString (id );
5261 List <Relationship > relationships = relationshipService .getBySourceElementId (elementUuid );
53- return ok (Json . toJson ( relationships ));
62+ return ok (JacksonHelper . collectionValueToTree ( List . class , metamodelProvider . getImplementationClass ( Relationship . class ), relationships ));
5463 }
5564
5665 public Result byTargetElementId (String id ) {
5766 UUID elementUuid = UUID .fromString (id );
5867 List <Relationship > relationships = relationshipService .getByTargetElementId (elementUuid );
59- return ok (Json . toJson ( relationships ));
68+ return ok (JacksonHelper . collectionValueToTree ( List . class , metamodelProvider . getImplementationClass ( Relationship . class ), relationships ));
6069 }
6170
62- public Result byModel (String modelId ) {
63- UUID modelUuid = UUID .fromString (modelId );
64- List <Relationship > relationships = relationshipService .getByModelId ( modelUuid );
65- return ok (Json . toJson ( relationships ));
71+ public Result byProject (String projectId ) {
72+ UUID projectUuid = UUID .fromString (projectId );
73+ List <Relationship > relationships = relationshipService .getByProjectId ( projectUuid );
74+ return ok (JacksonHelper . collectionValueToTree ( List . class , metamodelProvider . getImplementationClass ( Relationship . class ), relationships ));
6675 }
6776}
0 commit comments