From 65a1a2d15e7c72f9aaa22bbd1b09199ba339a50f Mon Sep 17 00:00:00 2001 From: Antoine Snyers Date: Mon, 16 Mar 2020 10:55:27 +0100 Subject: [PATCH] GET /api/eperson/groups/<:uuid>/object --- .../dspace/app/rest/GroupRestController.java | 12 ++ .../rest/repository/GroupRestRepository.java | 52 ++++++++ .../app/rest/GroupRestRepositoryIT.java | 116 ++++++++++++++++-- .../app/rest/builder/CollectionBuilder.java | 23 ++++ 4 files changed, 191 insertions(+), 12 deletions(-) diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/GroupRestController.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/GroupRestController.java index db545736f1..5555a730cc 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/GroupRestController.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/GroupRestController.java @@ -11,6 +11,7 @@ import static java.util.regex.Pattern.compile; import static org.apache.http.HttpStatus.SC_NO_CONTENT; import static org.apache.http.HttpStatus.SC_UNPROCESSABLE_ENTITY; import static org.dspace.app.rest.utils.ContextUtil.obtainContext; +import static org.dspace.app.rest.utils.RegexUtils.REGEX_REQUESTMAPPING_IDENTIFIER_AS_UUID; import static org.dspace.app.rest.utils.RegexUtils.REGEX_UUID; import static org.dspace.app.util.AuthorizeUtil.authorizeManageAdminGroup; import static org.dspace.app.util.AuthorizeUtil.authorizeManageSubmittersGroup; @@ -30,7 +31,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.dspace.app.rest.exception.UnprocessableEntityException; +import org.dspace.app.rest.model.DSpaceObjectRest; import org.dspace.app.rest.model.GroupRest; +import org.dspace.app.rest.repository.GroupRestRepository; import org.dspace.app.rest.utils.GroupUtil; import org.dspace.app.rest.utils.Utils; import org.dspace.authorize.AuthorizeException; @@ -49,6 +52,7 @@ import org.springframework.data.rest.webmvc.ResourceNotFoundException; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /** @@ -76,6 +80,9 @@ public class GroupRestController { @Autowired GroupUtil groupUtil; + @Autowired + GroupRestRepository repository; + /** * Method to add one or more subgroups to a group. * The subgroups to be added should be provided in the request body as a uri-list. @@ -308,4 +315,9 @@ public class GroupRestController { throw new AuthorizeException("not authorized to manage this group"); } + + @RequestMapping(method = RequestMethod.GET, value = REGEX_REQUESTMAPPING_IDENTIFIER_AS_UUID + "/object") + public DSpaceObjectRest object(@PathVariable UUID uuid) { + return repository.object(uuid); + } } diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/GroupRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/GroupRestRepository.java index 6e4f827dc7..8292234af9 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/GroupRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/GroupRestRepository.java @@ -10,12 +10,19 @@ package org.dspace.app.rest.repository; import com.fasterxml.jackson.databind.ObjectMapper; import org.dspace.app.rest.Parameter; import org.dspace.app.rest.SearchRestMethod; +import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.converter.MetadataConverter; import org.dspace.app.rest.exception.RepositoryMethodNotImplementedException; import org.dspace.app.rest.exception.UnprocessableEntityException; +import org.dspace.app.rest.model.DSpaceObjectRest; import org.dspace.app.rest.model.GroupRest; import org.dspace.app.rest.model.patch.Patch; +import org.dspace.app.rest.utils.Utils; import org.dspace.authorize.AuthorizeException; +import org.dspace.content.Collection; +import org.dspace.content.Community; +import org.dspace.content.service.CollectionService; +import org.dspace.content.service.CommunityService; import org.dspace.core.Context; import org.dspace.eperson.Group; import org.dspace.eperson.service.GroupService; @@ -45,6 +52,18 @@ public class GroupRestRepository extends DSpaceObjectRestRepository { indexingService.commit(); } + /** + * Delete the Test Collection referred to by the given UUID + * + * @param uuid UUID of Test Collection to delete + * @throws SQLException + * @throws IOException + */ + public static void deleteCollection(UUID uuid) throws SQLException, IOException { + try (Context c = new Context()) { + c.turnOffAuthorisationSystem(); + Collection collection = collectionService.find(c, uuid); + if (collection != null) { + try { + collectionService.delete(c, collection); + } catch (AuthorizeException e) { + throw new RuntimeException(e.getMessage(), e); + } + } + c.complete(); + } + } + @Override protected DSpaceObjectService getService() { return collectionService;