Loading gms-client/gms-client/src/main/java/it/inaf/ia2/gms/client/GmsClient.java +2 −2 Original line number Diff line number Diff line Loading @@ -98,8 +98,8 @@ public class GmsClient extends BaseClient { }).orElse(super.getInvalidStatusCodeExceptionMessage(request, response)); } public List<String> listGroups(String prefix) { return new ListGroupsCall(this).listGroups(prefix); public List<String> listGroups(String prefix, boolean recursive) { return new ListGroupsCall(this).listGroups(prefix, recursive); } public List<String> getUserGroups(String userId) { Loading gms-client/gms-client/src/main/java/it/inaf/ia2/gms/client/call/ListGroupsCall.java +3 −2 Original line number Diff line number Diff line Loading @@ -19,14 +19,15 @@ public class ListGroupsCall extends BaseCall<GmsClient> { * the privileges to see that information). The prefix is removed by the * service. */ public List<String> listGroups(String prefix) { public List<String> listGroups(String prefix, boolean recursive) { List<String> groups = new ArrayList<>(); String uri = "ws/jwt/list"; String uri = "list"; if (prefix != null && !prefix.isBlank()) { uri += "/" + prefix; } uri += "?recursive=" + recursive; HttpRequest groupsRequest = client.newRequest(uri) .header("Accept", "text/plain") Loading gms-client/gms-client/src/test/java/it/inaf/ia2/gms/client/call/GetUserGroupsTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -50,9 +50,9 @@ public class GetUserGroupsTest extends BaseGmsClientTest { CompletableFuture response = CompletableFuture.completedFuture(getMockedStreamResponse(200, body)); when(httpClient.sendAsync(any(), any())).thenReturn(response); List<String> groups = gmsClient.listGroups("LBT."); List<String> groups = gmsClient.listGroups("LBT.", false); verify(httpClient, times(1)).sendAsync(endpointEq("GET", "ws/jwt/list/LBT."), any()); verify(httpClient, times(1)).sendAsync(endpointEq("GET", "list/LBT.?recursive=false"), any()); assertEquals(2, groups.size()); assertEquals("INAF", groups.get(0)); Loading gms/src/main/java/it/inaf/ia2/gms/controller/JWTWebServiceController.java +10 −3 Original line number Diff line number Diff line Loading @@ -136,14 +136,21 @@ public class JWTWebServiceController { // else: empty response (as defined by GMS standard) } @GetMapping(value = {"/ws/jwt/list/{group:.+}", "/ws/jwt/list"}, produces = MediaType.TEXT_PLAIN_VALUE) public void listGroups(@PathVariable("group") Optional<String> groupNames, Principal principal, HttpServletResponse response) throws IOException { @GetMapping(value = {"/ws/jwt/list/{group:.+}", "/ws/jwt/list", "/list"}, produces = MediaType.TEXT_PLAIN_VALUE) public void listGroups(@PathVariable("group") Optional<String> groupNames, @RequestParam(value = "recursive", defaultValue = "false") boolean recursive, Principal principal, HttpServletResponse response) throws IOException { String userId = principal.getName(); GroupEntity parentGroup = groupNameService.getGroupFromNames(groupNames); List<GroupEntity> allSubGroups = groupsDAO.getDirectSubGroups(parentGroup.getPath()); List<GroupEntity> allSubGroups; if (recursive) { allSubGroups = groupsDAO.getAllChildren(parentGroup.getPath()); } else { allSubGroups = groupsDAO.getDirectSubGroups(parentGroup.getPath()); } // Select only the groups visible to the user List<PermissionEntity> permissions = permissionsDAO.findUserPermissions(userId); Loading Loading
gms-client/gms-client/src/main/java/it/inaf/ia2/gms/client/GmsClient.java +2 −2 Original line number Diff line number Diff line Loading @@ -98,8 +98,8 @@ public class GmsClient extends BaseClient { }).orElse(super.getInvalidStatusCodeExceptionMessage(request, response)); } public List<String> listGroups(String prefix) { return new ListGroupsCall(this).listGroups(prefix); public List<String> listGroups(String prefix, boolean recursive) { return new ListGroupsCall(this).listGroups(prefix, recursive); } public List<String> getUserGroups(String userId) { Loading
gms-client/gms-client/src/main/java/it/inaf/ia2/gms/client/call/ListGroupsCall.java +3 −2 Original line number Diff line number Diff line Loading @@ -19,14 +19,15 @@ public class ListGroupsCall extends BaseCall<GmsClient> { * the privileges to see that information). The prefix is removed by the * service. */ public List<String> listGroups(String prefix) { public List<String> listGroups(String prefix, boolean recursive) { List<String> groups = new ArrayList<>(); String uri = "ws/jwt/list"; String uri = "list"; if (prefix != null && !prefix.isBlank()) { uri += "/" + prefix; } uri += "?recursive=" + recursive; HttpRequest groupsRequest = client.newRequest(uri) .header("Accept", "text/plain") Loading
gms-client/gms-client/src/test/java/it/inaf/ia2/gms/client/call/GetUserGroupsTest.java +2 −2 Original line number Diff line number Diff line Loading @@ -50,9 +50,9 @@ public class GetUserGroupsTest extends BaseGmsClientTest { CompletableFuture response = CompletableFuture.completedFuture(getMockedStreamResponse(200, body)); when(httpClient.sendAsync(any(), any())).thenReturn(response); List<String> groups = gmsClient.listGroups("LBT."); List<String> groups = gmsClient.listGroups("LBT.", false); verify(httpClient, times(1)).sendAsync(endpointEq("GET", "ws/jwt/list/LBT."), any()); verify(httpClient, times(1)).sendAsync(endpointEq("GET", "list/LBT.?recursive=false"), any()); assertEquals(2, groups.size()); assertEquals("INAF", groups.get(0)); Loading
gms/src/main/java/it/inaf/ia2/gms/controller/JWTWebServiceController.java +10 −3 Original line number Diff line number Diff line Loading @@ -136,14 +136,21 @@ public class JWTWebServiceController { // else: empty response (as defined by GMS standard) } @GetMapping(value = {"/ws/jwt/list/{group:.+}", "/ws/jwt/list"}, produces = MediaType.TEXT_PLAIN_VALUE) public void listGroups(@PathVariable("group") Optional<String> groupNames, Principal principal, HttpServletResponse response) throws IOException { @GetMapping(value = {"/ws/jwt/list/{group:.+}", "/ws/jwt/list", "/list"}, produces = MediaType.TEXT_PLAIN_VALUE) public void listGroups(@PathVariable("group") Optional<String> groupNames, @RequestParam(value = "recursive", defaultValue = "false") boolean recursive, Principal principal, HttpServletResponse response) throws IOException { String userId = principal.getName(); GroupEntity parentGroup = groupNameService.getGroupFromNames(groupNames); List<GroupEntity> allSubGroups = groupsDAO.getDirectSubGroups(parentGroup.getPath()); List<GroupEntity> allSubGroups; if (recursive) { allSubGroups = groupsDAO.getAllChildren(parentGroup.getPath()); } else { allSubGroups = groupsDAO.getDirectSubGroups(parentGroup.getPath()); } // Select only the groups visible to the user List<PermissionEntity> permissions = permissionsDAO.findUserPermissions(userId); Loading