diff --git a/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java index 7081e7c50e..5b46309e4b 100644 --- a/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/CollectionServiceImpl.java @@ -668,9 +668,6 @@ public class CollectionServiceImpl extends DSpaceObjectServiceImpl i // Delete bitstream logo setLogo(context, collection, null); - // Remove all authorization policies - authorizeService.removeAllPolicies(context, collection); - Iterator workspaceItems = workspaceItemService.findByCollection(context, collection).iterator(); while (workspaceItems.hasNext()) { WorkspaceItem workspaceItem = workspaceItems.next(); @@ -738,6 +735,9 @@ public class CollectionServiceImpl extends DSpaceObjectServiceImpl i owningCommunity.getCollections().remove(collection); } + // Remove all authorization policies + authorizeService.removeAllPolicies(context, collection); + collectionDAO.delete(context, collection); } diff --git a/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java index 160d9b1d8b..d56d91ee89 100644 --- a/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/CommunityServiceImpl.java @@ -395,15 +395,16 @@ public class CommunityServiceImpl extends DSpaceObjectServiceImpl imp // Check authorisation authorizeService.authorizeAction(context, community, Constants.REMOVE); - community.removeCollection(collection); ArrayList removedIdentifiers = collectionService.getIdentifiers(context, collection); String removedHandle = collection.getHandle(); UUID removedId = collection.getID(); - - collection.removeCommunity(community); - if(CollectionUtils.isEmpty(collection.getCommunities())){ + if(collection.getCommunities().size() == 1) + { collectionService.delete(context, collection); + }else{ + community.removeCollection(collection); + collection.removeCommunity(community); } log.info(LogManager.getHeader(context, "remove_collection",