commit 19cce29fe9dd43cdb019a2d0e50b252cde8ebbb1 Author: Trang Truong Thi Huyen Date: Mon May 11 13:29:43 2015 +0700 MAGNOLIA-6097: Fix review by throwning an IllegalArgumentException Instead of returning null in case of exception diff --git a/magnolia-core/src/main/java/info/magnolia/cms/security/MgnlGroupManager.java b/magnolia-core/src/main/java/info/magnolia/cms/security/MgnlGroupManager.java index 509eaba..e8447f0 100644 --- a/magnolia-core/src/main/java/info/magnolia/cms/security/MgnlGroupManager.java +++ b/magnolia-core/src/main/java/info/magnolia/cms/security/MgnlGroupManager.java @@ -303,8 +303,7 @@ public class MgnlGroupManager extends RepositoryBackedSecurityManager implements try { super.remove(group.getName(), groupName, NODE_GROUPS); } catch (PrincipalNotFoundException e) { - // group doesn't exist in this UM - return null; + throw new IllegalArgumentException("group doesn't exist in this GM" + e); } return getGroup(group.getName()); } @@ -314,8 +313,7 @@ public class MgnlGroupManager extends RepositoryBackedSecurityManager implements try { super.remove(group.getName(), roleName, NODE_ROLES); } catch (PrincipalNotFoundException e) { - // group doesn't exist in this UM - return null; + throw new IllegalArgumentException("role doesn't exist in this GM" + e); } return getGroup(group.getName()); } commit a1681e21814980f258ade9be7ff628db032530cb Author: Trang Truong Thi Huyen Date: Thu May 7 13:53:01 2015 +0700 MAGNOLIA-6097: provide removeGroup() and removeRole() methods diff --git a/magnolia-core/src/main/java/info/magnolia/cms/security/GroupManager.java b/magnolia-core/src/main/java/info/magnolia/cms/security/GroupManager.java index 02ef782..658dc35 100644 --- a/magnolia-core/src/main/java/info/magnolia/cms/security/GroupManager.java +++ b/magnolia-core/src/main/java/info/magnolia/cms/security/GroupManager.java @@ -99,4 +99,17 @@ public interface GroupManager { */ public Collection getGroupsWithRole(String roleName); + /** + * Removes group from a group. + * + * @return group object with the group assignment removed. + */ + public Group removeGroup(Group group, String groupName) throws AccessDeniedException; + + /** + * Removes role from a group. + * + * @return group object without removed role. + */ + public Group removeRole(Group group, String roleName) throws AccessDeniedException; } diff --git a/magnolia-core/src/main/java/info/magnolia/cms/security/MgnlGroupManager.java b/magnolia-core/src/main/java/info/magnolia/cms/security/MgnlGroupManager.java index e4ce1fe..509eaba 100644 --- a/magnolia-core/src/main/java/info/magnolia/cms/security/MgnlGroupManager.java +++ b/magnolia-core/src/main/java/info/magnolia/cms/security/MgnlGroupManager.java @@ -297,4 +297,26 @@ public class MgnlGroupManager extends RepositoryBackedSecurityManager implements } }); } + + @Override + public Group removeGroup(Group group, String groupName) throws AccessDeniedException { + try { + super.remove(group.getName(), groupName, NODE_GROUPS); + } catch (PrincipalNotFoundException e) { + // group doesn't exist in this UM + return null; + } + return getGroup(group.getName()); + } + + @Override + public Group removeRole(Group group, String roleName) throws AccessDeniedException { + try { + super.remove(group.getName(), roleName, NODE_ROLES); + } catch (PrincipalNotFoundException e) { + // group doesn't exist in this UM + return null; + } + return getGroup(group.getName()); + } } diff --git a/magnolia-core/src/test/java/info/magnolia/cms/security/MgnlGroupTest.java b/magnolia-core/src/test/java/info/magnolia/cms/security/MgnlGroupTest.java index 434a06b..d494f7a 100644 --- a/magnolia-core/src/test/java/info/magnolia/cms/security/MgnlGroupTest.java +++ b/magnolia-core/src/test/java/info/magnolia/cms/security/MgnlGroupTest.java @@ -158,4 +158,32 @@ public class MgnlGroupTest { final Collection groupsD= gman.getAllGroups("groupD"); assertEquals(0, groupsD.size()); } + + @Test + public void testRemoveGroup() throws Exception { + + // GIVEN + Group groupA = gman.getGroup("groupA"); + + // WHEN + gman.addGroup(groupA, "groupB"); + gman.removeGroup(groupA, "groupB"); + + // THEN + assertFalse(gman.getGroup("groupA").getGroups().contains("groupB")); + } + + @Test + public void testRemoveRole() throws Exception { + + // GIVEN + Group groupA = gman.getGroup("groupA"); + + // THEN + gman.addRole(groupA, "roleW"); + gman.removeRole(groupA, "roleW"); + + // THEN + assertFalse(gman.getGroup("groupA").getRoles().contains("roleW")); + } }