diff options
author | Jean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com> | 2013-07-12 18:18:08 +0200 |
---|---|---|
committer | Jean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com> | 2013-07-12 18:18:08 +0200 |
commit | e0a6d2b9487e560dc62cec0ef872144e80fc3752 (patch) | |
tree | cc8345e7491be1143404d3e63a1f49cf412b2619 | |
parent | 2dc9ca437d7bade2a56cd2e0ec7559aee6c58ecb (diff) | |
download | sonarqube-e0a6d2b9487e560dc62cec0ef872144e80fc3752.tar.gz sonarqube-e0a6d2b9487e560dc62cec0ef872144e80fc3752.zip |
SONAR-4453 Fixed migration to support the newly added logical key in permission_templates
9 files changed, 27 insertions, 27 deletions
diff --git a/sonar-core/src/main/java/org/sonar/core/permission/ComponentPermissionFacade.java b/sonar-core/src/main/java/org/sonar/core/permission/ComponentPermissionFacade.java index e1dcb52b8d8..b455aa61679 100644 --- a/sonar-core/src/main/java/org/sonar/core/permission/ComponentPermissionFacade.java +++ b/sonar-core/src/main/java/org/sonar/core/permission/ComponentPermissionFacade.java @@ -120,23 +120,23 @@ public class ComponentPermissionFacade implements TaskComponent, ServerComponent } } - public PermissionTemplateDto getPermissionTemplate(Long templateId) { - PermissionTemplateDto permissionTemplateDto = permissionDao.selectTemplateById(templateId); + public PermissionTemplateDto getPermissionTemplate(String templateKey) { + PermissionTemplateDto permissionTemplateDto = permissionDao.selectTemplateByKey(templateKey); if(permissionTemplateDto == null) { - throw new IllegalArgumentException("Could not retrieve permission template with id " + templateId); + throw new IllegalArgumentException("Could not retrieve permission template with key " + templateKey); } PermissionTemplateDto templateWithPermissions = permissionDao.selectPermissionTemplate(permissionTemplateDto.getName()); if(templateWithPermissions == null) { - throw new IllegalArgumentException("Could not retrieve permissions for template with id " + templateId); + throw new IllegalArgumentException("Could not retrieve permissions for template with key " + templateKey); } return templateWithPermissions; } - public void applyPermissionTemplate(Long templateId, Long resourceId) { + public void applyPermissionTemplate(String templateKey, Long resourceId) { SqlSession session = myBatis.openSession(); try { removeAllPermissions(resourceId, session); - PermissionTemplateDto permissionTemplate = getPermissionTemplate(templateId); + PermissionTemplateDto permissionTemplate = getPermissionTemplate(templateKey); List<PermissionTemplateUserDto> usersPermissions = permissionTemplate.getUsersPermissions(); if(usersPermissions != null) { for (PermissionTemplateUserDto userPermission : usersPermissions) { 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 43555999195..5c60d63fbd6 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 @@ -60,11 +60,11 @@ public class PermissionDao implements TaskComponent, ServerComponent { } @CheckForNull - public PermissionTemplateDto selectTemplateById(Long templateId) { + public PermissionTemplateDto selectTemplateByKey(String templateKey) { SqlSession session = myBatis.openSession(); try { PermissionTemplateMapper mapper = session.getMapper(PermissionTemplateMapper.class); - return mapper.selectById(templateId); + return mapper.selectByKey(templateKey); } finally { MyBatis.closeQuietly(session); } diff --git a/sonar-core/src/main/java/org/sonar/core/permission/PermissionTemplateMapper.java b/sonar-core/src/main/java/org/sonar/core/permission/PermissionTemplateMapper.java index f14df167170..68073023046 100644 --- a/sonar-core/src/main/java/org/sonar/core/permission/PermissionTemplateMapper.java +++ b/sonar-core/src/main/java/org/sonar/core/permission/PermissionTemplateMapper.java @@ -37,7 +37,7 @@ public interface PermissionTemplateMapper { PermissionTemplateDto selectByName(String templateName); - PermissionTemplateDto selectById(Long templateId); + PermissionTemplateDto selectByKey(String templateKey); PermissionTemplateDto selectTemplateUsersPermissions(String templateName); diff --git a/sonar-core/src/main/java/org/sonar/core/resource/DefaultResourcePermissions.java b/sonar-core/src/main/java/org/sonar/core/resource/DefaultResourcePermissions.java index d5dcbc4fe03..3e5fb4ec294 100644 --- a/sonar-core/src/main/java/org/sonar/core/resource/DefaultResourcePermissions.java +++ b/sonar-core/src/main/java/org/sonar/core/resource/DefaultResourcePermissions.java @@ -134,17 +134,15 @@ public class DefaultResourcePermissions implements ResourcePermissions { } private PermissionTemplateDto getPermissionTemplate(String qualifier) { - String qualifierTemplateId = settings.getString("sonar.permission.template." + qualifier + ".default"); - if(!StringUtils.isBlank(qualifierTemplateId)) { - Long templateId = Long.parseLong(qualifierTemplateId); - return permissionFacade.getPermissionTemplate(templateId); + String qualifierTemplateKey = settings.getString("sonar.permission.template." + qualifier + ".default"); + if(!StringUtils.isBlank(qualifierTemplateKey)) { + return permissionFacade.getPermissionTemplate(qualifierTemplateKey); } - String defaultTemplateId = settings.getString("sonar.permission.template.default"); - if(StringUtils.isBlank(defaultTemplateId)) { + String defaultTemplateKey = settings.getString("sonar.permission.template.default"); + if(StringUtils.isBlank(defaultTemplateKey)) { throw new IllegalStateException("At least one default permission template should be defined"); } - Long templateId = Long.parseLong(defaultTemplateId); - return permissionFacade.getPermissionTemplate(templateId); + return permissionFacade.getPermissionTemplate(defaultTemplateKey); } } diff --git a/sonar-core/src/main/resources/org/sonar/core/permission/PermissionTemplateMapper.xml b/sonar-core/src/main/resources/org/sonar/core/permission/PermissionTemplateMapper.xml index 525f2c8ee74..0ca7a418f63 100644 --- a/sonar-core/src/main/resources/org/sonar/core/permission/PermissionTemplateMapper.xml +++ b/sonar-core/src/main/resources/org/sonar/core/permission/PermissionTemplateMapper.xml @@ -61,10 +61,10 @@ </choose> </delete> - <select id="selectById" parameterType="Long" resultType="PermissionTemplate"> - SELECT id, name, description, created_at AS createdAt, updated_at AS updatedAt + <select id="selectByKey" parameterType="String" resultType="PermissionTemplate"> + SELECT id, name, kee, description, created_at AS createdAt, updated_at AS updatedAt FROM permission_templates - WHERE id = #{templateId} + WHERE kee = #{kee} </select> <select id="selectByName" parameterType="String" resultType="PermissionTemplate"> diff --git a/sonar-core/src/test/java/org/sonar/core/permission/ComponentPermissionFacadeTest.java b/sonar-core/src/test/java/org/sonar/core/permission/ComponentPermissionFacadeTest.java index 7259c8b7ff2..a3d67f787db 100644 --- a/sonar-core/src/test/java/org/sonar/core/permission/ComponentPermissionFacadeTest.java +++ b/sonar-core/src/test/java/org/sonar/core/permission/ComponentPermissionFacadeTest.java @@ -45,7 +45,7 @@ public class ComponentPermissionFacadeTest extends AbstractDaoTestCase { public void should_apply_permission_template() throws Exception { setupData("should_apply_permission_template"); - permissionFacade.applyPermissionTemplate(1L, 123L); + permissionFacade.applyPermissionTemplate("default_20130101_010203", 123L); checkTable("should_apply_permission_template", "group_roles", "group_id", "resource_id", "role"); checkTable("should_apply_permission_template", "user_roles", "group_id", "resource_id", "role"); diff --git a/sonar-core/src/test/java/org/sonar/core/permission/PermissionDaoTest.java b/sonar-core/src/test/java/org/sonar/core/permission/PermissionDaoTest.java index 9cf31e25f27..b607e086584 100644 --- a/sonar-core/src/test/java/org/sonar/core/permission/PermissionDaoTest.java +++ b/sonar-core/src/test/java/org/sonar/core/permission/PermissionDaoTest.java @@ -112,7 +112,7 @@ public class PermissionDaoTest extends AbstractDaoTestCase { public void should_select_permission_template_by_id() throws Exception { setupData("selectPermissionTemplate"); - PermissionTemplateDto permissionTemplate = permissionDao.selectTemplateById(1L); + PermissionTemplateDto permissionTemplate = permissionDao.selectTemplateByKey("my_template_20130102_030405"); assertThat(permissionTemplate).isNotNull(); assertThat(permissionTemplate.getId()).isEqualTo(1L); diff --git a/sonar-core/src/test/java/org/sonar/core/resource/DefaultResourcePermissionsTest.java b/sonar-core/src/test/java/org/sonar/core/resource/DefaultResourcePermissionsTest.java index c39e89527c1..b4790dc53a0 100644 --- a/sonar-core/src/test/java/org/sonar/core/resource/DefaultResourcePermissionsTest.java +++ b/sonar-core/src/test/java/org/sonar/core/resource/DefaultResourcePermissionsTest.java @@ -108,7 +108,7 @@ public class DefaultResourcePermissionsTest extends AbstractDaoTestCase { public void grantDefaultRoles_qualifier_independent() { setupData("grantDefaultRoles"); - settings.setProperty("sonar.permission.template.default", "1"); + settings.setProperty("sonar.permission.template.default", "default_template_20130101_010203"); permissions.grantDefaultRoles(project); @@ -119,8 +119,8 @@ public class DefaultResourcePermissionsTest extends AbstractDaoTestCase { public void grantDefaultRoles_qualifier_specific() { setupData("grantDefaultRolesProject"); - settings.setProperty("sonar.permission.template.default", "1"); - settings.setProperty("sonar.permission.template.TRK.default", "2"); + settings.setProperty("sonar.permission.template.default", "default_20130101_010203"); + settings.setProperty("sonar.permission.template.TRK.default", "default_for_trk_20130101_010203"); permissions.grantDefaultRoles(project); @@ -131,7 +131,7 @@ public class DefaultResourcePermissionsTest extends AbstractDaoTestCase { public void grantDefaultRoles_unknown_group() { setupData("grantDefaultRoles_unknown_group"); - settings.setProperty("sonar.permission.template.TRK.default", "1"); + settings.setProperty("sonar.permission.template.TRK.default", "default_template_20130101_010203"); permissions.grantDefaultRoles(project); checkTables("grantDefaultRoles_unknown_group", "group_roles"); @@ -141,7 +141,7 @@ public class DefaultResourcePermissionsTest extends AbstractDaoTestCase { public void grantDefaultRoles_users() { setupData("grantDefaultRoles_users"); - settings.setProperty("sonar.permission.template.TRK.default", "1"); + settings.setProperty("sonar.permission.template.TRK.default", "default_for_trk_20130101_010203"); permissions.grantDefaultRoles(project); checkTables("grantDefaultRoles_users", "user_roles"); diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/418_migrate_default_permissions.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/418_migrate_default_permissions.rb index 469f9f4291f..0ea2f6203ef 100644 --- a/sonar-server/src/main/webapp/WEB-INF/db/migrate/418_migrate_default_permissions.rb +++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/418_migrate_default_permissions.rb @@ -74,6 +74,7 @@ class MigrateDefaultPermissions < ActiveRecord::Migration default_template = PermissionTemplate.create( :name => 'Default template', + :kee => 'default_template', :description => 'This permission template will be used as default when no other permission configuration is available') sonar_admins_group = Group.find_by_name('sonar-administrators') @@ -130,6 +131,7 @@ class MigrateDefaultPermissions < ActiveRecord::Migration qualifier_template = PermissionTemplate.create( :name => "Default template for #{ROOT_QUALIFIERS[qualifier]}", + :kee => "default_template_for_#{ROOT_QUALIFIERS[qualifier].downcase}", :description => "This template has been automatically created using the previously configured default permissions for #{ROOT_QUALIFIERS[qualifier]}") properties.each do |property| |