diff --git a/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Account.java b/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Account.java index 6202db5..f444138 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Account.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Account.java @@ -3,9 +3,9 @@ public class Account { private Map notifications; public Map getValue() { - Map temp_nil11 = new HashMap<>(); - temp_nil11.put("notifications",this.getNotifications()); - return temp_nil11; + Map temp_nil1 = new HashMap<>(); + temp_nil1.put("notifications",this.getNotifications()); + return temp_nil1; } public Map getNotifications() { return this.notifications; diff --git a/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Accounts.java b/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Accounts.java index 49e585f..91184e1 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Accounts.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Accounts.java @@ -18,11 +18,11 @@ public Account getAccount(String v1) { return this.value.get(v1); } - @Path("/{aid}/notifications") + @Path("/{v1}/notifications") @Produces(MediaType.APPLICATION_JSON) @GET - public Map getNotificationsValue(@PathParam("aid") String aid) { - return getAccount(aid).getNotifications(); + public Map getNotificationsValue(@PathParam("v1") String v1) { + return getAccount(v1).getNotifications(); } @Path("/{v1}") @Produces(MediaType.APPLICATION_JSON) @@ -30,13 +30,13 @@ public Map getAccountValue(@PathParam("v1") String v1) { return getAccount(v1).getValue(); } - @POST - public void signUp(@FormParam("aid") String aid) { - this.value.put(aid,new Account(new HashMap<>())); - } @Path("/{aid}/notifications") @DELETE public void hasRead(@PathParam("aid") String aid, @FormParam("gid") String gid) { getAccount(aid).hasRead(aid, gid); } + @POST + public void signUp(@FormParam("aid") String aid) { + this.value.put(aid,new Account(new HashMap<>())); + } } \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Group.java b/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Group.java index 1a617d9..bd5e825 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Group.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Group.java @@ -1,24 +1,28 @@ import java.util.*; public class Group { - private Members members = new Members(); private List messages; + private List members; public Map getValue() { - Map temp_nil10 = new HashMap<>(); - temp_nil10.put("messages",this.getMessages()); - temp_nil10.put("members",this.members.getValue()); - return temp_nil10; - } - public Members getMembers() { - return this.members; + Map temp_nil0 = new HashMap<>(); + temp_nil0.put("members",this.getMembers()); + temp_nil0.put("messages",this.getMessages()); + return temp_nil0; } public List getMessages() { return this.messages; } + public List getMembers() { + return this.members; + } public void postMessage(String gid, String message) { this.messages.add(message); } - public Group(List messages) { + public void addGroupMember(String gid, String aid) { + this.members.add(aid); + } + public Group(List members, List messages) { + this.members = members; this.messages = messages; } } \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Groups.java b/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Groups.java index eba76e8..eef2dcf 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Groups.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Groups.java @@ -24,22 +24,18 @@ public List getMessagesValue(@PathParam("gid") String gid) { return getGroup(gid).getMessages(); } + @Path("/{gid}/members") + @Produces(MediaType.APPLICATION_JSON) + @GET + public List getMembersValue(@PathParam("gid") String gid) { + return getGroup(gid).getMembers(); + } @Path("/{gid}") @Produces(MediaType.APPLICATION_JSON) @GET public Map getGroupValue(@PathParam("gid") String gid) { return getGroup(gid).getValue(); } - @Path("/{gid}/members") - @Produces(MediaType.APPLICATION_JSON) - @GET - public List getMembersValue(@PathParam("gid") String gid) { - return getGroup(gid).getMembers().getValue(); - } - @POST - public void createGroup(@FormParam("gid") String gid) { - this.value.put(gid,new Group(new ArrayList<>())); - } @Path("/{gid}/messages") @POST public void postMessage(@PathParam("gid") String gid, @FormParam("message") String message) { @@ -48,6 +44,10 @@ @Path("/{gid}/members") @POST public void addGroupMember(@PathParam("gid") String gid, @FormParam("aid") String aid) { - getGroup(gid).getMembers().addGroupMember(gid, aid); + getGroup(gid).addGroupMember(gid, aid); + } + @POST + public void createGroup(@FormParam("gid") String gid) { + this.value.put(gid,new Group(new ArrayList<>(), new ArrayList<>())); } } \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Members.java b/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Members.java deleted file mode 100644 index 4d23cb7..0000000 --- a/AlgebraicDataflowArchitectureModel/prototypes/JAX-RS/GroupChat/Members.java +++ /dev/null @@ -1,11 +0,0 @@ -import java.util.*; - -public class Members { - private List value = new ArrayList<>(); - public List getValue() { - return new ArrayList<>(value); - } - public void addGroupMember(String gid, String aid) { - this.value.add(aid); - } -} \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Account.java b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Account.java index 17825e2..4bed2b8 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Account.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Account.java @@ -3,9 +3,9 @@ public class Account { private Map notifications; public Map getValue() { - Map temp_nil13 = new HashMap<>(); - temp_nil13.put("notifications",this.getNotifications()); - return temp_nil13; + Map temp_nil3 = new HashMap<>(); + temp_nil3.put("notifications",this.getNotifications()); + return temp_nil3; } public Map getNotifications() { return this.notifications; diff --git a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Group.java b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Group.java index 3d045fb..1bba44d 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Group.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Group.java @@ -1,24 +1,28 @@ import java.util.*; public class Group { - private Members members = new Members(); private List messages; + private List members; public Map getValue() { - Map temp_nil12 = new HashMap<>(); - temp_nil12.put("messages",this.getMessages()); - temp_nil12.put("members",this.members.getValue()); - return temp_nil12; - } - public Members getMembers() { - return this.members; + Map temp_nil2 = new HashMap<>(); + temp_nil2.put("members",this.getMembers()); + temp_nil2.put("messages",this.getMessages()); + return temp_nil2; } public List getMessages() { return this.messages; } + public List getMembers() { + return this.members; + } public void postMessage(String gid, String message) { this.messages.add(message); } - public Group(List messages) { + public void addGroupMember(String gid, String aid) { + this.members.add(aid); + } + public Group(List messages, List members) { this.messages = messages; + this.members = members; } } \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/GroupChat.java b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/GroupChat.java index bc7662e..f3ddadd 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/GroupChat.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/GroupChat.java @@ -7,32 +7,14 @@ accounts = new Accounts(); groups = new Groups(); } - public Map getAccount(String v1) { - return this.accounts.getAccount(v1).getValue(); - } public Map getAccounts() { return this.accounts.getValue(); } public void signUp(String aid) { this.accounts.signUp(aid); } - public List getMessages(String gid) { - return this.groups.getGroup(gid).getMessages(); - } - public void postMessage(String gid, String message) { - this.groups.getGroup(gid).postMessage(gid, message); - } - public List getMembers(String gid) { - return this.groups.getGroup(gid).getMembers().getValue(); - } - public void addGroupMember(String gid, String aid) { - this.groups.getGroup(gid).getMembers().addGroupMember(gid, aid); - } - public Map getGroup(String gid) { - return this.groups.getGroup(gid).getValue(); - } - public Map getNotifications(String aid) { - return this.accounts.getAccount(aid).getNotifications(); + public Map getNotifications(String v1) { + return this.accounts.getAccount(v1).getNotifications(); } public void hasRead(String aid, String gid) { this.accounts.getAccount(aid).hasRead(aid, gid); @@ -43,4 +25,22 @@ public void createGroup(String gid) { this.groups.createGroup(gid); } + public List getMessages(String gid) { + return this.groups.getGroup(gid).getMessages(); + } + public void postMessage(String gid, String message) { + this.groups.getGroup(gid).postMessage(gid, message); + } + public List getMembers(String gid) { + return this.groups.getGroup(gid).getMembers(); + } + public void addGroupMember(String gid, String aid) { + this.groups.getGroup(gid).addGroupMember(gid, aid); + } + public Map getGroup(String gid) { + return this.groups.getGroup(gid).getValue(); + } + public Map getAccount(String v1) { + return this.accounts.getAccount(v1).getValue(); + } } \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Groups.java b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Groups.java index fd30ee7..7e1cc35 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Groups.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Groups.java @@ -9,6 +9,6 @@ return this.value.get(gid); } public void createGroup(String gid) { - this.value.put(gid,new Group(new ArrayList<>())); + this.value.put(gid,new Group(new ArrayList<>(), new ArrayList<>())); } } \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Members.java b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Members.java deleted file mode 100644 index 4d23cb7..0000000 --- a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PULL-first/Members.java +++ /dev/null @@ -1,11 +0,0 @@ -import java.util.*; - -public class Members { - private List value = new ArrayList<>(); - public List getValue() { - return new ArrayList<>(value); - } - public void addGroupMember(String gid, String aid) { - this.value.add(aid); - } -} \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Account.java b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Account.java index 5432e13..31e9bb2 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Account.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Account.java @@ -3,9 +3,9 @@ public class Account { private Map notifications; public Map getValue() { - Map temp_nil15 = new HashMap<>(); - temp_nil15.put("notifications",this.getNotifications()); - return temp_nil15; + Map temp_nil7 = new HashMap<>(); + temp_nil7.put("notifications",this.getNotifications()); + return temp_nil7; } public Map getNotifications() { return this.notifications; diff --git a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Group.java b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Group.java index 45ed108..d97238f 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Group.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Group.java @@ -1,24 +1,28 @@ import java.util.*; public class Group { - private Members members = new Members(); private List messages; + private List members; public Map getValue() { - Map temp_nil14 = new HashMap<>(); - temp_nil14.put("messages",this.getMessages()); - temp_nil14.put("members",this.members.getValue()); - return temp_nil14; - } - public Members getMembers() { - return this.members; + Map temp_nil6 = new HashMap<>(); + temp_nil6.put("members",this.getMembers()); + temp_nil6.put("messages",this.getMessages()); + return temp_nil6; } public List getMessages() { return this.messages; } + public List getMembers() { + return this.members; + } public void postMessage(String gid, String message) { this.messages.add(message); } - public Group(List messages) { + public void addGroupMember(String gid, String aid) { + this.members.add(aid); + } + public Group(List messages, List members) { this.messages = messages; + this.members = members; } } \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/GroupChat.java b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/GroupChat.java index bc7662e..f3ddadd 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/GroupChat.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/GroupChat.java @@ -7,32 +7,14 @@ accounts = new Accounts(); groups = new Groups(); } - public Map getAccount(String v1) { - return this.accounts.getAccount(v1).getValue(); - } public Map getAccounts() { return this.accounts.getValue(); } public void signUp(String aid) { this.accounts.signUp(aid); } - public List getMessages(String gid) { - return this.groups.getGroup(gid).getMessages(); - } - public void postMessage(String gid, String message) { - this.groups.getGroup(gid).postMessage(gid, message); - } - public List getMembers(String gid) { - return this.groups.getGroup(gid).getMembers().getValue(); - } - public void addGroupMember(String gid, String aid) { - this.groups.getGroup(gid).getMembers().addGroupMember(gid, aid); - } - public Map getGroup(String gid) { - return this.groups.getGroup(gid).getValue(); - } - public Map getNotifications(String aid) { - return this.accounts.getAccount(aid).getNotifications(); + public Map getNotifications(String v1) { + return this.accounts.getAccount(v1).getNotifications(); } public void hasRead(String aid, String gid) { this.accounts.getAccount(aid).hasRead(aid, gid); @@ -43,4 +25,22 @@ public void createGroup(String gid) { this.groups.createGroup(gid); } + public List getMessages(String gid) { + return this.groups.getGroup(gid).getMessages(); + } + public void postMessage(String gid, String message) { + this.groups.getGroup(gid).postMessage(gid, message); + } + public List getMembers(String gid) { + return this.groups.getGroup(gid).getMembers(); + } + public void addGroupMember(String gid, String aid) { + this.groups.getGroup(gid).addGroupMember(gid, aid); + } + public Map getGroup(String gid) { + return this.groups.getGroup(gid).getValue(); + } + public Map getAccount(String v1) { + return this.accounts.getAccount(v1).getValue(); + } } \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Groups.java b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Groups.java index fd30ee7..7e1cc35 100644 --- a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Groups.java +++ b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Groups.java @@ -9,6 +9,6 @@ return this.value.get(gid); } public void createGroup(String gid) { - this.value.put(gid,new Group(new ArrayList<>())); + this.value.put(gid,new Group(new ArrayList<>(), new ArrayList<>())); } } \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Members.java b/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Members.java deleted file mode 100644 index 4d23cb7..0000000 --- a/AlgebraicDataflowArchitectureModel/prototypes/Java/GroupChat/PUSH-first/Members.java +++ /dev/null @@ -1,11 +0,0 @@ -import java.util.*; - -public class Members { - private List value = new ArrayList<>(); - public List getValue() { - return new ArrayList<>(value); - } - public void addGroupMember(String gid, String aid) { - this.value.add(aid); - } -} \ No newline at end of file diff --git a/AlgebraicDataflowArchitectureModel/src/generators/JavaCodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/generators/JavaCodeGenerator.java index 48f226e..5dce75b 100644 --- a/AlgebraicDataflowArchitectureModel/src/generators/JavaCodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/generators/JavaCodeGenerator.java @@ -123,6 +123,8 @@ if (res.getParent() == null) return true; if (res.getChildren() == null || res.getChildren().size() == 0) return false; if (res.getNumParameters() > 0 && res.getChildren().size() == 1 && res.getChildren().iterator().next().getNumParameters() > 0) return false; + if (res.getChildren().size() == 1 && res.getChildren().iterator().next().getNumParameters() > 0 + && (res.getChildren().iterator().next().getChildren() == null || res.getChildren().iterator().next().getChildren().size() == 0)) return false; return true; // return res.getParent() == null || !(res.getChildren() == null || res.getChildren().size() == 0); } diff --git a/AlgebraicDataflowArchitectureModel/src/generators/JavaMethodBodyGenerator.java b/AlgebraicDataflowArchitectureModel/src/generators/JavaMethodBodyGenerator.java index 74345b1..affec83 100644 --- a/AlgebraicDataflowArchitectureModel/src/generators/JavaMethodBodyGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/generators/JavaMethodBodyGenerator.java @@ -615,7 +615,7 @@ String childTypeName = JavaCodeGenerator.getComponentName(child); String fieldName = JavaCodeGenerator.toVariableName(childTypeName); Term childGetter = null; - if ((child.getChildren() == null || child.getChildren().size() == 0) && child.getNumParameters() == 0) { + if (!JavaCodeGenerator.generatesComponent(child)) { // the child is not a class childGetter = new Term(new Symbol("get" + childTypeName, 1, Symbol.Type.METHOD)); childGetter.addChild(new Constant("this")); diff --git a/AlgebraicDataflowArchitectureModel/src/generators/JerseyCodeGenerator.java b/AlgebraicDataflowArchitectureModel/src/generators/JerseyCodeGenerator.java index 6182314..ce5c62d 100644 --- a/AlgebraicDataflowArchitectureModel/src/generators/JerseyCodeGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/generators/JerseyCodeGenerator.java @@ -124,6 +124,8 @@ if (res.getParent() == null) return true; if (res.getChildren() == null || res.getChildren().size() == 0) return false; if (res.getNumParameters() > 0 && res.getChildren().size() == 1 && res.getChildren().iterator().next().getNumParameters() > 0) return false; + if (res.getChildren().size() == 1 && res.getChildren().iterator().next().getNumParameters() > 0 + && (res.getChildren().iterator().next().getChildren() == null || res.getChildren().iterator().next().getChildren().size() == 0)) return false; return true; // return res.getParent() == null || !(res.getChildren() == null || res.getChildren().size() == 0); } diff --git a/AlgebraicDataflowArchitectureModel/src/generators/JerseyMethodBodyGenerator.java b/AlgebraicDataflowArchitectureModel/src/generators/JerseyMethodBodyGenerator.java index 8fd6590..ab32c63 100644 --- a/AlgebraicDataflowArchitectureModel/src/generators/JerseyMethodBodyGenerator.java +++ b/AlgebraicDataflowArchitectureModel/src/generators/JerseyMethodBodyGenerator.java @@ -739,7 +739,7 @@ String childTypeName = JerseyCodeGenerator.getComponentName(child); String fieldName = JerseyCodeGenerator.toVariableName(childTypeName); Term childGetter = null; - if ((child.getChildren() == null || child.getChildren().size() == 0) && child.getNumParameters() == 0) { + if (!JerseyCodeGenerator.generatesComponent(child)) { // the child is not a class childGetter = new Term(new Symbol("get" + childTypeName, 1, Symbol.Type.METHOD)); childGetter.addChild(new Constant("this")); diff --git a/AlgebraicDataflowArchitectureModel/src/tests/JAXRSCodeGeneratorTest.java b/AlgebraicDataflowArchitectureModel/src/tests/JAXRSCodeGeneratorTest.java index aaac194..7eddd76 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/JAXRSCodeGeneratorTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/JAXRSCodeGeneratorTest.java @@ -395,81 +395,33 @@ Entry, // arg types Integer>>>>>>> // lines of code exprectedStructure = new HashMap<>(); - exprectedStructure.put("Groups", Map.entry(Set.of("@Path(\"/groups\")","@Component"), - Map.entry(Map.ofEntries(Map.entry("value", "Map")), - Map.ofEntries(Map.entry("getValue", Map.entry(Set.of("@Produces(MediaType.APPLICATION_JSON)","@GET"), - Map.entry("Map", - Map.entry(List.of(), - 1)))), - Map.entry("getGroup", Map.entry(Set.of(), - Map.entry("Group", - Map.entry(List.of("String"), - 1)))), - Map.entry("getMembersValue", Map.entry(Set.of("@Path(\"/{gid}/members\")","@Produces(MediaType.APPLICATION_JSON)","@GET"), - Map.entry("List", - Map.entry(List.of("String"), - 1)))), - Map.entry("getMessagesValue", Map.entry(Set.of("@Path(\"/{gid}/messages\")","@Produces(MediaType.APPLICATION_JSON)","@GET"), - Map.entry("List", - Map.entry(List.of("String"), - 1)))), - Map.entry("getGroupValue", Map.entry(Set.of("@Path(\"/{gid}\")","@Produces(MediaType.APPLICATION_JSON)","@GET"), - Map.entry("Map", - Map.entry(List.of("String"), - 1)))), - Map.entry("addGroupMember", Map.entry(Set.of("@Path(\"/{gid}/members\")","@POST"), - Map.entry("void", - Map.entry(List.of("String","String"), - 1)))), - Map.entry("postMessage", Map.entry(Set.of("@Path(\"/{gid}/messages\")","@POST"), - Map.entry("void", - Map.entry(List.of("String","String"), - 1)))), - Map.entry("createGroup", Map.entry(Set.of("@POST"), - Map.entry("void", - Map.entry(List.of("String"), - 1)))))))); - exprectedStructure.put("Account", Map.entry(Set.of(), - Map.entry(Map.ofEntries(Map.entry("notifications", "Map")), - Map.ofEntries(Map.entry("getValue", Map.entry(Set.of(), - Map.entry("Map", - Map.entry(List.of(), - 1)))), - Map.entry("getNotifications", Map.entry(Set.of(), - Map.entry("Map", - Map.entry(List.of(), - 1)))), - Map.entry("hasRead", Map.entry(Set.of(), - Map.entry("void", - Map.entry(List.of("String","String"), - 1)))), - Map.entry("Account", Map.entry(Set.of(), - Map.entry("void", - Map.entry(List.of("Map"), - 1)))))))); exprectedStructure.put("Group", Map.entry(Set.of(), - Map.entry(Map.ofEntries(Map.entry("members", "Members"), - Map.entry("messages", "List")), + Map.entry(Map.ofEntries(Map.entry("messages", "List"), + Map.entry("members", "List")), Map.ofEntries(Map.entry("getValue", Map.entry(Set.of(), Map.entry("Map", Map.entry(List.of(), 1)))), - Map.entry("getMembers", Map.entry(Set.of(), - Map.entry("Members", - Map.entry(List.of(), - 1)))), Map.entry("getMessages", Map.entry(Set.of(), Map.entry("List", Map.entry(List.of(), 1)))), + Map.entry("getMembers", Map.entry(Set.of(), + Map.entry("List", + Map.entry(List.of(), + 1)))), Map.entry("postMessage", Map.entry(Set.of(), Map.entry("void", Map.entry(List.of("String","String"), 1)))), + Map.entry("addGroupMember", Map.entry(Set.of(), + Map.entry("void", + Map.entry(List.of("String","String"), + 1)))), Map.entry("Group", Map.entry(Set.of(), Map.entry("void", - Map.entry(List.of("List"), - 1)))))))); + Map.entry(List.of("List","List"), + 2)))))))); exprectedStructure.put("Accounts", Map.entry(Set.of("@Path(\"/accounts\")","@Component"), Map.entry(Map.ofEntries(Map.entry("value", "Map")), Map.ofEntries(Map.entry("getValue", Map.entry(Set.of("@Produces(MediaType.APPLICATION_JSON)","@GET"), @@ -496,16 +448,58 @@ Map.entry("void", Map.entry(List.of("String"), 1)))))))); - exprectedStructure.put("Members", Map.entry(Set.of(), - Map.entry(Map.ofEntries(Map.entry("value", "List")), + exprectedStructure.put("Account", Map.entry(Set.of(), + Map.entry(Map.ofEntries(Map.entry("notifications", "Map")), Map.ofEntries(Map.entry("getValue", Map.entry(Set.of(), - Map.entry("List", + Map.entry("Map", Map.entry(List.of(), 1)))), - Map.entry("addGroupMember", Map.entry(Set.of(), - Map.entry("void", - Map.entry(List.of("String","String"), - 1)))))))); + Map.entry("getNotifications", Map.entry(Set.of(), + Map.entry("Map", + Map.entry(List.of(), + 1)))), + Map.entry("hasRead", Map.entry(Set.of(), + Map.entry("void", + Map.entry(List.of("String","String"), + 1)))), + Map.entry("Account", Map.entry(Set.of(), + Map.entry("void", + Map.entry(List.of("Map"), + 1)))))))); + exprectedStructure.put("Groups", Map.entry(Set.of("@Path(\"/groups\")","@Component"), + Map.entry(Map.ofEntries(Map.entry("value", "Map")), + Map.ofEntries(Map.entry("getValue", Map.entry(Set.of("@Produces(MediaType.APPLICATION_JSON)","@GET"), + Map.entry("Map", + Map.entry(List.of(), + 1)))), + Map.entry("getGroup", Map.entry(Set.of(), + Map.entry("Group", + Map.entry(List.of("String"), + 1)))), + Map.entry("getMessagesValue", Map.entry(Set.of("@Path(\"/{gid}/messages\")","@Produces(MediaType.APPLICATION_JSON)","@GET"), + Map.entry("List", + Map.entry(List.of("String"), + 1)))), + Map.entry("getGroupValue", Map.entry(Set.of("@Path(\"/{gid}\")","@Produces(MediaType.APPLICATION_JSON)","@GET"), + Map.entry("Map", + Map.entry(List.of("String"), + 1)))), + Map.entry("getMembersValue", Map.entry(Set.of("@Path(\"/{gid}/members\")","@Produces(MediaType.APPLICATION_JSON)","@GET"), + Map.entry("List", + Map.entry(List.of("String"), + 1)))), + Map.entry("postMessage", Map.entry(Set.of("@Path(\"/{gid}/messages\")","@POST"), + Map.entry("void", + Map.entry(List.of("String","String"), + 1)))), + Map.entry("addGroupMember", Map.entry(Set.of("@Path(\"/{gid}/members\")","@POST"), + Map.entry("void", + Map.entry(List.of("String","String"), + 1)))), + Map.entry("createGroup", Map.entry(Set.of("@POST"), + Map.entry("void", + Map.entry(List.of("String"), + 1)))))))); checkStructure(generatedCode, exprectedStructure); // generateCheckCode(generatedCode); diff --git a/AlgebraicDataflowArchitectureModel/src/tests/JavaCodeGeneratorTest.java b/AlgebraicDataflowArchitectureModel/src/tests/JavaCodeGeneratorTest.java index 819b70a..bfea36d 100644 --- a/AlgebraicDataflowArchitectureModel/src/tests/JavaCodeGeneratorTest.java +++ b/AlgebraicDataflowArchitectureModel/src/tests/JavaCodeGeneratorTest.java @@ -495,12 +495,36 @@ Entry, // arg types Integer>>>>> // lines of code - exprectedStructure = new HashMap<>(); + exprectedStructure = new HashMap<>(); exprectedStructure.put("Main", Map.entry(Map.ofEntries(Map.entry("accounts", "Accounts"), Map.entry("groups", "Groups")), Map.ofEntries(Map.entry("Main", Map.entry("void", Map.entry(List.of(), 2))), + Map.entry("getGroup", Map.entry("Map", + Map.entry(List.of("String"), + 1))), + Map.entry("getMessages", Map.entry("List", + Map.entry(List.of("String"), + 1))), + Map.entry("postMessage", Map.entry("void", + Map.entry(List.of("String","String"), + 1))), + Map.entry("getAccounts", Map.entry("Map", + Map.entry(List.of(), + 1))), + Map.entry("signUp", Map.entry("void", + Map.entry(List.of("String"), + 1))), + Map.entry("getGroups", Map.entry("Map", + Map.entry(List.of(), + 1))), + Map.entry("createGroup", Map.entry("void", + Map.entry(List.of("String"), + 1))), + Map.entry("getAccount", Map.entry("Map", + Map.entry(List.of("String"), + 1))), Map.entry("getNotifications", Map.entry("Map", Map.entry(List.of("String"), 1))), @@ -512,90 +536,62 @@ 1))), Map.entry("addGroupMember", Map.entry("void", Map.entry(List.of("String","String"), + 1)))))); + exprectedStructure.put("Group", Map.entry(Map.ofEntries(Map.entry("messages", "List"), + Map.entry("members", "List")), + Map.ofEntries(Map.entry("getValue", Map.entry("Map", + Map.entry(List.of(), + 1))), + Map.entry("getMessages", Map.entry("List", + Map.entry(List.of(), + 1))), + Map.entry("getMembers", Map.entry("List", + Map.entry(List.of(), + 1))), + Map.entry("postMessage", Map.entry("void", + Map.entry(List.of("String","String"), + 1))), + Map.entry("addGroupMember", Map.entry("void", + Map.entry(List.of("String","String"), + 1))), + Map.entry("Group", Map.entry("void", + Map.entry(List.of("List","List"), + 2)))))); + exprectedStructure.put("Accounts", Map.entry(Map.ofEntries(), + Map.ofEntries(Map.entry("getValue", Map.entry("Map", + Map.entry(List.of(), + 1))), + Map.entry("getAccount", Map.entry("Account", + Map.entry(List.of("String"), + 1))), + Map.entry("signUp", Map.entry("void", + Map.entry(List.of("String"), + 1)))))); + exprectedStructure.put("Groups", Map.entry(Map.ofEntries(), + Map.ofEntries(Map.entry("getValue", Map.entry("Map", + Map.entry(List.of(), 1))), - Map.entry("getGroup", Map.entry("Map", - Map.entry(List.of("String"), - 1))), - Map.entry("getAccounts", Map.entry("Map", - Map.entry(List.of(), - 1))), - Map.entry("signUp", Map.entry("void", - Map.entry(List.of("String"), - 1))), - Map.entry("getAccount", Map.entry("Map", - Map.entry(List.of("String"), - 1))), - Map.entry("getGroups", Map.entry("Map", - Map.entry(List.of(), - 1))), - Map.entry("createGroup", Map.entry("void", - Map.entry(List.of("String"), - 1))), - Map.entry("getMessages", Map.entry("List", - Map.entry(List.of("String"), - 1))), - Map.entry("postMessage", Map.entry("void", - Map.entry(List.of("String","String"), - 1)))))); - exprectedStructure.put("Members", Map.entry(Map.ofEntries(), - Map.ofEntries(Map.entry("getValue", Map.entry("List", - Map.entry(List.of(), - 1))), - Map.entry("addGroupMember", Map.entry("void", - Map.entry(List.of("String","String"), - 1)))))); - exprectedStructure.put("Group", Map.entry(Map.ofEntries(Map.entry("members", "Members"), - Map.entry("messages", "List")), - Map.ofEntries(Map.entry("getValue", Map.entry("Map", - Map.entry(List.of(), - 1))), - Map.entry("getMembers", Map.entry("Members", - Map.entry(List.of(), - 1))), - Map.entry("getMessages", Map.entry("List", - Map.entry(List.of(), - 1))), - Map.entry("postMessage", Map.entry("void", - Map.entry(List.of("String","String"), - 1))), - Map.entry("Group", Map.entry("void", - Map.entry(List.of("List"), - 1)))))); - exprectedStructure.put("Accounts", Map.entry(Map.ofEntries(), - Map.ofEntries(Map.entry("getValue", Map.entry("Map", - Map.entry(List.of(), - 1))), - Map.entry("getAccount", Map.entry("Account", + Map.entry("getGroup", Map.entry("Group", Map.entry(List.of("String"), 1))), - Map.entry("signUp", Map.entry("void", - Map.entry(List.of("String"), - 1)))))); - exprectedStructure.put("Account", Map.entry(Map.ofEntries(), - Map.ofEntries(Map.entry("getValue", Map.entry("Map", - Map.entry(List.of(), - 1))), - Map.entry("getNotifications", Map.entry("Map", - Map.entry(List.of(), - 1))), - Map.entry("hasRead", Map.entry("void", - Map.entry(List.of("String","String"), - 1))), - Map.entry("Account", Map.entry("void", - Map.entry(List.of("Map"), - 1)))))); - exprectedStructure.put("Groups", Map.entry(Map.ofEntries(), - Map.ofEntries(Map.entry("getValue", Map.entry("Map", - Map.entry(List.of(), - 1))), - Map.entry("getGroup", Map.entry("Group", - Map.entry(List.of("String"), - 1))), - Map.entry("createGroup", Map.entry("void", - Map.entry(List.of("String"), - 1)))))); - - checkStructure(generatedCode, exprectedStructure); + Map.entry("createGroup", Map.entry("void", + Map.entry(List.of("String"), + 1)))))); + exprectedStructure.put("Account", Map.entry(Map.ofEntries(), + Map.ofEntries(Map.entry("getValue", Map.entry("Map", + Map.entry(List.of(), + 1))), + Map.entry("getNotifications", Map.entry("Map", + Map.entry(List.of(), + 1))), + Map.entry("hasRead", Map.entry("void", + Map.entry(List.of("String","String"), + 1))), + Map.entry("Account", Map.entry("void", + Map.entry(List.of("Map"), + 1)))))); + + checkStructure(generatedCode, exprectedStructure); // generateCheckCode(generatedCode); // check PUSH-first @@ -606,86 +602,42 @@ Map.ofEntries(Map.entry("Main", Map.entry("void", Map.entry(List.of(), 2))), - Map.entry("getMembers", Map.entry("List", - Map.entry(List.of("String"), - 1))), - Map.entry("addGroupMember", Map.entry("void", - Map.entry(List.of("String","String"), - 1))), - Map.entry("getMessages", Map.entry("List", - Map.entry(List.of("String"), - 1))), - Map.entry("postMessage", Map.entry("void", - Map.entry(List.of("String","String"), - 1))), Map.entry("getNotifications", Map.entry("Map", Map.entry(List.of("String"), 1))), Map.entry("hasRead", Map.entry("void", Map.entry(List.of("String","String"), 1))), - Map.entry("getGroup", Map.entry("Map", - Map.entry(List.of("String"), - 1))), + Map.entry("getAccount", Map.entry("Map", + Map.entry(List.of("String"), + 1))), Map.entry("getGroups", Map.entry("Map", Map.entry(List.of(), 1))), Map.entry("createGroup", Map.entry("void", Map.entry(List.of("String"), 1))), + Map.entry("getMembers", Map.entry("List", + Map.entry(List.of("String"), + 1))), + Map.entry("addGroupMember", Map.entry("void", + Map.entry(List.of("String","String"), + 1))), + Map.entry("getGroup", Map.entry("Map", + Map.entry(List.of("String"), + 1))), Map.entry("getAccounts", Map.entry("Map", Map.entry(List.of(), 1))), Map.entry("signUp", Map.entry("void", Map.entry(List.of("String"), 1))), - Map.entry("getAccount", Map.entry("Map", - Map.entry(List.of("String"), - 1)))))); - exprectedStructure.put("Members", Map.entry(Map.ofEntries(), - Map.ofEntries(Map.entry("getValue", Map.entry("List", - Map.entry(List.of(), + Map.entry("getMessages", Map.entry("List", + Map.entry(List.of("String"), 1))), - Map.entry("addGroupMember", Map.entry("void", - Map.entry(List.of("String","String"), - 1)))))); - exprectedStructure.put("Group", Map.entry(Map.ofEntries(Map.entry("members", "Members"), - Map.entry("messages", "List")), - Map.ofEntries(Map.entry("getValue", Map.entry("Map", - Map.entry(List.of(), - 1))), - Map.entry("getMembers", Map.entry("Members", - Map.entry(List.of(), - 1))), - Map.entry("getMessages", Map.entry("List", - Map.entry(List.of(), - 1))), - Map.entry("postMessage", Map.entry("void", - Map.entry(List.of("String","String"), - 1))), - Map.entry("Group", Map.entry("void", - Map.entry(List.of("List"), - 1)))))); - exprectedStructure.put("Groups", Map.entry(Map.ofEntries(), - Map.ofEntries(Map.entry("getValue", Map.entry("Map", - Map.entry(List.of(), - 1))), - Map.entry("getGroup", Map.entry("Group", - Map.entry(List.of("String"), - 1))), - Map.entry("createGroup", Map.entry("void", - Map.entry(List.of("String"), - 1)))))); - exprectedStructure.put("Accounts", Map.entry(Map.ofEntries(), - Map.ofEntries(Map.entry("getValue", Map.entry("Map", - Map.entry(List.of(), - 1))), - Map.entry("getAccount", Map.entry("Account", - Map.entry(List.of("String"), - 1))), - Map.entry("signUp", Map.entry("void", - Map.entry(List.of("String"), - 1)))))); + Map.entry("postMessage", Map.entry("void", + Map.entry(List.of("String","String"), + 1)))))); exprectedStructure.put("Account", Map.entry(Map.ofEntries(), Map.ofEntries(Map.entry("getValue", Map.entry("Map", Map.entry(List.of(), @@ -699,9 +651,49 @@ Map.entry("Account", Map.entry("void", Map.entry(List.of("Map"), 1)))))); + exprectedStructure.put("Groups", Map.entry(Map.ofEntries(), + Map.ofEntries(Map.entry("getValue", Map.entry("Map", + Map.entry(List.of(), + 1))), + Map.entry("getGroup", Map.entry("Group", + Map.entry(List.of("String"), + 1))), + Map.entry("createGroup", Map.entry("void", + Map.entry(List.of("String"), + 1)))))); + exprectedStructure.put("Group", Map.entry(Map.ofEntries(Map.entry("members", "List"), + Map.entry("messages", "List")), + Map.ofEntries(Map.entry("getValue", Map.entry("Map", + Map.entry(List.of(), + 1))), + Map.entry("getMembers", Map.entry("List", + Map.entry(List.of(), + 1))), + Map.entry("getMessages", Map.entry("List", + Map.entry(List.of(), + 1))), + Map.entry("postMessage", Map.entry("void", + Map.entry(List.of("String","String"), + 1))), + Map.entry("addGroupMember", Map.entry("void", + Map.entry(List.of("String","String"), + 1))), + Map.entry("Group", Map.entry("void", + Map.entry(List.of("List","List"), + 2)))))); + exprectedStructure.put("Accounts", Map.entry(Map.ofEntries(), + Map.ofEntries(Map.entry("getValue", Map.entry("Map", + Map.entry(List.of(), + 1))), + Map.entry("getAccount", Map.entry("Account", + Map.entry(List.of("String"), + 1))), + Map.entry("signUp", Map.entry("void", + Map.entry(List.of("String"), + 1)))))); checkStructure(generatedCode, exprectedStructure); -// generateCheckCode(generatedCode); + generateCheckCode(generatedCode); } catch (FileNotFoundException | ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutOrRefOrSubKeyword | ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression