From bab1d0bd90e426b4f65cd085343c4e2758b1761b Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Thu, 5 Dec 2013 20:26:52 +0100 Subject: SONAR-4940 Create WS to search groups by permission template --- .../org/sonar/core/permission/PermissionDao.java | 7 +- .../core/permission/PermissionTemplateDao.java | 19 +++- .../org/sonar/core/permission/PermissionMapper.xml | 10 +- .../core/permission/PermissionTemplateMapper.xml | 25 +++++ .../GroupWithPermissionTemplateDaoTest.java | 114 +++++++++++++++++++++ .../groups_with_permissions.xml | 16 +++ ..._permissions_should_be_sorted_by_group_name.xml | 16 +++ .../users_with_permissions.xml | 2 - ...h_permissions_should_be_sorted_by_user_name.xml | 8 +- 9 files changed, 203 insertions(+), 14 deletions(-) create mode 100644 sonar-core/src/test/java/org/sonar/core/permission/GroupWithPermissionTemplateDaoTest.java create mode 100644 sonar-core/src/test/resources/org/sonar/core/permission/GroupWithPermissionTemplateDaoTest/groups_with_permissions.xml create mode 100644 sonar-core/src/test/resources/org/sonar/core/permission/GroupWithPermissionTemplateDaoTest/groups_with_permissions_should_be_sorted_by_group_name.xml (limited to 'sonar-core') diff --git a/sonar-core/src/main/java/org/sonar/core/permission/PermissionDao.java b/sonar-core/src/main/java/org/sonar/core/permission/PermissionDao.java index 0429d8096cc..7bbcaf60ad8 100644 --- a/sonar-core/src/main/java/org/sonar/core/permission/PermissionDao.java +++ b/sonar-core/src/main/java/org/sonar/core/permission/PermissionDao.java @@ -28,7 +28,6 @@ import org.sonar.api.security.DefaultGroups; import org.sonar.core.persistence.MyBatis; import javax.annotation.Nullable; - import java.util.List; import java.util.Map; @@ -53,7 +52,7 @@ public class PermissionDao implements ServerComponent { params.put("componentId", componentId); return session.selectList("org.sonar.core.permission.PermissionMapper.selectUsers", params, new RowBounds(offset, limit)); } finally { - myBatis.closeQuietly(session); + MyBatis.closeQuietly(session); } } @@ -64,7 +63,7 @@ public class PermissionDao implements ServerComponent { /** * @return a non paginated list of groups. - * Membership parameter from query is not taking into account in order to deal more easily deal the 'Anyone' group + * Membership parameter from query is not taking into account in order to deal more easily with the 'Anyone' group */ public List selectGroups(WithPermissionQuery query, @Nullable Long componentId) { SqlSession session = myBatis.openSession(); @@ -75,7 +74,7 @@ public class PermissionDao implements ServerComponent { params.put("anyoneGroup", DefaultGroups.ANYONE); return session.selectList("org.sonar.core.permission.PermissionMapper.selectGroups", params); } finally { - myBatis.closeQuietly(session); + MyBatis.closeQuietly(session); } } diff --git a/sonar-core/src/main/java/org/sonar/core/permission/PermissionTemplateDao.java b/sonar-core/src/main/java/org/sonar/core/permission/PermissionTemplateDao.java index 300d7579fe7..e8d11287bc4 100644 --- a/sonar-core/src/main/java/org/sonar/core/permission/PermissionTemplateDao.java +++ b/sonar-core/src/main/java/org/sonar/core/permission/PermissionTemplateDao.java @@ -25,6 +25,7 @@ import org.apache.commons.lang.time.DateFormatUtils; import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.SqlSession; import org.sonar.api.ServerComponent; +import org.sonar.api.security.DefaultGroups; import org.sonar.api.task.TaskComponent; import org.sonar.core.date.DateProvider; import org.sonar.core.date.DefaultDateProvider; @@ -32,7 +33,6 @@ import org.sonar.core.persistence.MyBatis; import javax.annotation.CheckForNull; import javax.annotation.Nullable; - import java.text.Normalizer; import java.util.Date; import java.util.List; @@ -74,6 +74,23 @@ public class PermissionTemplateDao implements TaskComponent, ServerComponent { return selectUsers(query, templateId, 0, Integer.MAX_VALUE); } + /** + * @return a non paginated list of groups. + * Membership parameter from query is not taking into account in order to deal more easily with the 'Anyone' group + */ + public List selectGroups(WithPermissionQuery query, Long templateId) { + SqlSession session = myBatis.openSession(); + try { + Map params = newHashMap(); + params.put("query", query); + params.put("templateId", templateId); + params.put("anyoneGroup", DefaultGroups.ANYONE); + return session.selectList("org.sonar.core.permission.PermissionTemplateMapper.selectGroups", params); + } finally { + MyBatis.closeQuietly(session); + } + } + @CheckForNull public PermissionTemplateDto selectTemplateByKey(String templateKey) { SqlSession session = myBatis.openSession(); diff --git a/sonar-core/src/main/resources/org/sonar/core/permission/PermissionMapper.xml b/sonar-core/src/main/resources/org/sonar/core/permission/PermissionMapper.xml index bf4a7ec568b..4b95b2be527 100644 --- a/sonar-core/src/main/resources/org/sonar/core/permission/PermissionMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/permission/PermissionMapper.xml @@ -6,7 +6,8 @@ + +