]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4453 Fixed migration to support the newly added logical key in permission_templates
authorJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>
Fri, 12 Jul 2013 16:18:08 +0000 (18:18 +0200)
committerJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>
Fri, 12 Jul 2013 16:18:08 +0000 (18:18 +0200)
sonar-core/src/main/java/org/sonar/core/permission/ComponentPermissionFacade.java
sonar-core/src/main/java/org/sonar/core/permission/PermissionDao.java
sonar-core/src/main/java/org/sonar/core/permission/PermissionTemplateMapper.java
sonar-core/src/main/java/org/sonar/core/resource/DefaultResourcePermissions.java
sonar-core/src/main/resources/org/sonar/core/permission/PermissionTemplateMapper.xml
sonar-core/src/test/java/org/sonar/core/permission/ComponentPermissionFacadeTest.java
sonar-core/src/test/java/org/sonar/core/permission/PermissionDaoTest.java
sonar-core/src/test/java/org/sonar/core/resource/DefaultResourcePermissionsTest.java
sonar-server/src/main/webapp/WEB-INF/db/migrate/418_migrate_default_permissions.rb

index e1dcb52b8d8421ccc99606e53dd445f87bc22693..b455aa61679a474368a4da31b1f44acebe0d2216 100644 (file)
@@ -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) {
index 43555999195ab76dfe56bb29dceefa57521f1feb..5c60d63fbd603b89758d6c92a1f57ec8a7fc534c 100644 (file)
@@ -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);
     }
index f14df1671703244b65a396d6dbf41dde234ea6c3..68073023046691d42a86065a1ffb6168171b3844 100644 (file)
@@ -37,7 +37,7 @@ public interface PermissionTemplateMapper {
 
   PermissionTemplateDto selectByName(String templateName);
 
-  PermissionTemplateDto selectById(Long templateId);
+  PermissionTemplateDto selectByKey(String templateKey);
 
   PermissionTemplateDto selectTemplateUsersPermissions(String templateName);
 
index d5dcbc4fe03035d967168c36b3eaca2092e943cb..3e5fb4ec2942f9666267ebc292404a2cb3ca4580 100644 (file)
@@ -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);
   }
 }
index 525f2c8ee74672de65d7740d209242ec55ea7a31..0ca7a418f637a0e4df129d2728b4af545d3e597c 100644 (file)
     </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">
index 7259c8b7ff23539d8e93c1cec98e26d51ad4389a..a3d67f787db8ab4a69dc1003227f1da732cdd238 100644 (file)
@@ -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");
index 9cf31e25f273f41585c099ba018997cfa38a5858..b607e086584c9ac7c60199fe4fb431500220d642 100644 (file)
@@ -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);
index c39e89527c151952fc89397eb641901824b64f84..b4790dc53a04d3febaa8fd2a895257f3f787d893 100644 (file)
@@ -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");
index 469f9f4291f6930f3aaed7aa9f2eb57e175a1189..0ea2f6203efa1c72ed5690a9456d9a053abcb20e 100644 (file)
@@ -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|