aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>2013-07-12 18:18:08 +0200
committerJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>2013-07-12 18:18:08 +0200
commite0a6d2b9487e560dc62cec0ef872144e80fc3752 (patch)
treecc8345e7491be1143404d3e63a1f49cf412b2619
parent2dc9ca437d7bade2a56cd2e0ec7559aee6c58ecb (diff)
downloadsonarqube-e0a6d2b9487e560dc62cec0ef872144e80fc3752.tar.gz
sonarqube-e0a6d2b9487e560dc62cec0ef872144e80fc3752.zip
SONAR-4453 Fixed migration to support the newly added logical key in permission_templates
-rw-r--r--sonar-core/src/main/java/org/sonar/core/permission/ComponentPermissionFacade.java12
-rw-r--r--sonar-core/src/main/java/org/sonar/core/permission/PermissionDao.java4
-rw-r--r--sonar-core/src/main/java/org/sonar/core/permission/PermissionTemplateMapper.java2
-rw-r--r--sonar-core/src/main/java/org/sonar/core/resource/DefaultResourcePermissions.java14
-rw-r--r--sonar-core/src/main/resources/org/sonar/core/permission/PermissionTemplateMapper.xml6
-rw-r--r--sonar-core/src/test/java/org/sonar/core/permission/ComponentPermissionFacadeTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/permission/PermissionDaoTest.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/core/resource/DefaultResourcePermissionsTest.java10
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/db/migrate/418_migrate_default_permissions.rb2
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|