diff options
author | Simon Brandhof <simon.brandhof@gmail.com> | 2012-07-05 16:40:16 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@gmail.com> | 2012-07-05 17:00:17 +0200 |
commit | cba251c929936768308e59365bc44f532bb16756 (patch) | |
tree | 5b6b4afcc4863b6264e41d112677e31b7ea1da8f /sonar-core | |
parent | 5016b01b23344d65768d68ab03419caad3f57c4b (diff) | |
download | sonarqube-cba251c929936768308e59365bc44f532bb16756.tar.gz sonarqube-cba251c929936768308e59365bc44f532bb16756.zip |
SONAR-3618 Support custom default permissions for non-project resources
Diffstat (limited to 'sonar-core')
12 files changed, 27 insertions, 153 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DaoUtils.java b/sonar-core/src/main/java/org/sonar/core/persistence/DaoUtils.java index 67cbc72d58b..fd00b5e92df 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/DaoUtils.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/DaoUtils.java @@ -34,7 +34,6 @@ import org.sonar.core.review.ReviewDao; import org.sonar.core.rule.RuleDao; import org.sonar.core.template.LoadedTemplateDao; import org.sonar.core.user.AuthorDao; -import org.sonar.core.user.RoleDao; import org.sonar.core.user.UserDao; import java.util.List; @@ -60,7 +59,6 @@ public final class DaoUtils { ResourceKeyUpdaterDao.class, ReviewCommentDao.class, ReviewDao.class, - RoleDao.class, RuleDao.class, UserDao.class); } diff --git a/sonar-core/src/main/java/org/sonar/core/user/RoleDao.java b/sonar-core/src/main/java/org/sonar/core/user/RoleDao.java deleted file mode 100644 index 164a72e3913..00000000000 --- a/sonar-core/src/main/java/org/sonar/core/user/RoleDao.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.core.user; - -import org.apache.ibatis.session.SqlSession; -import org.sonar.core.persistence.MyBatis; - -import java.util.Collection; - -/** - * @since 3.2 - */ -public class RoleDao { - private final MyBatis mybatis; - - public RoleDao(MyBatis mybatis) { - this.mybatis = mybatis; - } - - public RoleDao insertGroupRoles(Collection<GroupRoleDto> groupRoles) { - SqlSession session = mybatis.openBatchSession(); - try { - RoleMapper mapper = session.getMapper(RoleMapper.class); - for (GroupRoleDto groupRole : groupRoles) { - mapper.insertGroupRole(groupRole); - } - session.commit(); - } finally { - MyBatis.closeQuietly(session); - } - return this; - } - - public RoleDao insertUserRoles(Collection<UserRoleDto> userRoles) { - SqlSession session = mybatis.openBatchSession(); - try { - RoleMapper mapper = session.getMapper(RoleMapper.class); - for (UserRoleDto userRole : userRoles) { - mapper.insertUserRole(userRole); - } - session.commit(); - } finally { - MyBatis.closeQuietly(session); - } - return this; - } -} diff --git a/sonar-core/src/main/java/org/sonar/core/user/RoleMapper.java b/sonar-core/src/main/java/org/sonar/core/user/RoleMapper.java index bd2b45ff9eb..79e83c766be 100644 --- a/sonar-core/src/main/java/org/sonar/core/user/RoleMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/user/RoleMapper.java @@ -28,4 +28,11 @@ public interface RoleMapper { void insertUserRole(UserRoleDto userRole); + void deleteGroupRolesByResourceId(Long resourceId); + + void deleteUserRolesByResourceId(Long resourceId); + + int countGroupRoles(Long resourceId); + + int countUserRoles(Long resourceId); } diff --git a/sonar-core/src/main/resources/META-INF/persistence.xml b/sonar-core/src/main/resources/META-INF/persistence.xml index 357801c27b9..c8ac4392caf 100644 --- a/sonar-core/src/main/resources/META-INF/persistence.xml +++ b/sonar-core/src/main/resources/META-INF/persistence.xml @@ -21,8 +21,6 @@ <class>org.sonar.api.database.model.ResourceModel</class> <class>org.sonar.api.database.model.SnapshotSource</class> <class>org.sonar.api.database.model.RuleFailureModel</class> - <class>org.sonar.api.security.UserRole</class> - <class>org.sonar.api.security.GroupRole</class> <class>org.sonar.api.rules.Rule</class> <class>org.sonar.api.rules.RuleParam</class> <class>org.sonar.api.resources.ProjectLink</class> diff --git a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql index 2493292440f..804f1f830a0 100644 --- a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql +++ b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql @@ -7,11 +7,6 @@ ALTER TABLE GROUPS ALTER COLUMN ID RESTART WITH 3; INSERT INTO GROUP_ROLES(ID, GROUP_ID, RESOURCE_ID, ROLE) VALUES (1, 1, null, 'admin'); ALTER TABLE GROUP_ROLES ALTER COLUMN ID RESTART WITH 2; -INSERT INTO PROPERTIES(ID, PROP_KEY, RESOURCE_ID, TEXT_VALUE, USER_ID) VALUES (1, 'sonar.role.admin.project.defaultGroups', null, 'sonar-administrators', null); -INSERT INTO PROPERTIES(ID, PROP_KEY, RESOURCE_ID, TEXT_VALUE, USER_ID) VALUES (2, 'sonar.role.user.project.defaultGroups', null, 'sonar-users,Anyone', null); -INSERT INTO PROPERTIES(ID, PROP_KEY, RESOURCE_ID, TEXT_VALUE, USER_ID) VALUES (3, 'sonar.role.codeviewer.project.defaultGroups', null, 'sonar-users,Anyone', null); -ALTER TABLE PROPERTIES ALTER COLUMN ID RESTART WITH 4; - INSERT INTO GROUPS_USERS(USER_ID, GROUP_ID) VALUES (1, 1); INSERT INTO GROUPS_USERS(USER_ID, GROUP_ID) VALUES (1, 2); diff --git a/sonar-core/src/main/resources/org/sonar/core/user/RoleMapper.xml b/sonar-core/src/main/resources/org/sonar/core/user/RoleMapper.xml index 753f13ea520..be2fad12465 100644 --- a/sonar-core/src/main/resources/org/sonar/core/user/RoleMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/user/RoleMapper.xml @@ -12,4 +12,22 @@ INSERT INTO user_roles (user_id, resource_id, role) VALUES (#{userId, jdbcType=INTEGER}, #{resourceId, jdbcType=INTEGER}, #{role, jdbcType=VARCHAR}) </insert> + + <delete id="deleteGroupRolesByResourceId" parameterType="long"> + delete from group_roles where resource_id=#{id} + </delete> + + <delete id="deleteUserRolesByResourceId" parameterType="long"> + delete from user_roles where resource_id=#{id} + </delete> + + <select id="countUserRoles" parameterType="long" resultType="int"> + SELECT count(id) + FROM user_roles WHERE resource_id=#{id} + </select> + + <select id="countGroupRoles" parameterType="long" resultType="int"> + SELECT count(id) + FROM group_roles WHERE resource_id=#{id} + </select> </mapper> diff --git a/sonar-core/src/test/java/org/sonar/core/user/RoleDaoTest.java b/sonar-core/src/test/java/org/sonar/core/user/RoleDaoTest.java deleted file mode 100644 index 939046d9abc..00000000000 --- a/sonar-core/src/test/java/org/sonar/core/user/RoleDaoTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Sonar, open source software quality management tool. - * Copyright (C) 2008-2012 SonarSource - * mailto:contact AT sonarsource DOT com - * - * Sonar is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 3 of the License, or (at your option) any later version. - * - * Sonar is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Sonar; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02 - */ -package org.sonar.core.user; - -import org.junit.Before; -import org.junit.Test; -import org.sonar.core.persistence.DaoTestCase; - -import java.util.Arrays; -import java.util.Collection; - - -public class RoleDaoTest extends DaoTestCase { - - private RoleDao dao; - - @Before - public void setUp() { - dao = new RoleDao(getMyBatis()); - } - - @Test - public void insertGroupRoles() { - setupData("insertGroupRoles"); - - Collection<GroupRoleDto> groupRoles = Arrays.asList( - new GroupRoleDto().setGroupId(100L).setResourceId(200L).setRole("admin"), - - // no group id => Anyone - new GroupRoleDto().setResourceId(200L).setRole("user") - ); - dao.insertGroupRoles(groupRoles); - - checkTables("insertGroupRoles", "group_roles"); - } - - @Test - public void insertUserRoles() { - setupData("insertUserRoles"); - - Collection<UserRoleDto> userRoles = Arrays.asList( - new UserRoleDto().setUserId(100L).setResourceId(200L).setRole("admin"), - new UserRoleDto().setUserId(101L).setResourceId(200L).setRole("user") - ); - dao.insertUserRoles(userRoles); - - checkTables("insertUserRoles", "user_roles"); - } -} diff --git a/sonar-core/src/test/java/org/sonar/core/user/UserDaoTest.java b/sonar-core/src/test/java/org/sonar/core/user/UserDaoTest.java index 6015f5ee196..8fd2516aa29 100644 --- a/sonar-core/src/test/java/org/sonar/core/user/UserDaoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/user/UserDaoTest.java @@ -21,12 +21,12 @@ package org.sonar.core.user; import org.junit.Before; import org.junit.Test; -import org.sonar.core.persistence.DaoTestCase; +import org.sonar.core.persistence.AbstractDaoTestCase; import static org.fest.assertions.Assertions.assertThat; -public class UserDaoTest extends DaoTestCase { +public class UserDaoTest extends AbstractDaoTestCase { private UserDao dao; diff --git a/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertGroupRoles-result.xml b/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertGroupRoles-result.xml deleted file mode 100644 index 72fd8e47bdf..00000000000 --- a/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertGroupRoles-result.xml +++ /dev/null @@ -1,4 +0,0 @@ -<dataset> - <group_roles id="1" group_id="100" resource_id="200" role="admin"/> - <group_roles id="2" group_id="[null]" resource_id="200" role="user"/> -</dataset>
\ No newline at end of file diff --git a/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertGroupRoles.xml b/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertGroupRoles.xml deleted file mode 100644 index a3306c70d7b..00000000000 --- a/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertGroupRoles.xml +++ /dev/null @@ -1,2 +0,0 @@ -<dataset> -</dataset>
\ No newline at end of file diff --git a/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertUserRoles-result.xml b/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertUserRoles-result.xml deleted file mode 100644 index 253a46b3faf..00000000000 --- a/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertUserRoles-result.xml +++ /dev/null @@ -1,4 +0,0 @@ -<dataset> - <user_roles id="1" user_id="100" resource_id="200" role="admin"/> - <user_roles id="2" user_id="101" resource_id="200" role="user"/> -</dataset>
\ No newline at end of file diff --git a/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertUserRoles.xml b/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertUserRoles.xml deleted file mode 100644 index a3306c70d7b..00000000000 --- a/sonar-core/src/test/resources/org/sonar/core/user/RoleDaoTest/insertUserRoles.xml +++ /dev/null @@ -1,2 +0,0 @@ -<dataset> -</dataset>
\ No newline at end of file |