]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-13221 Fix permission template tables
authorDuarte Meneses <duarte.meneses@sonarsource.com>
Tue, 21 Apr 2020 20:23:11 +0000 (15:23 -0500)
committersonartech <sonartech@sonarsource.com>
Mon, 25 May 2020 20:05:20 +0000 (20:05 +0000)
16 files changed:
server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDto.java
server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java
server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java
server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateGroupDto.java
server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateUserDto.java
server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml
server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml
server/sonar-db-dao/src/schema/schema-sq.ddl
server/sonar-db-dao/src/test/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDaoTest.java
server/sonar-db-dao/src/testFixtures/java/org/sonar/db/permission/template/PermissionTemplateTesting.java
server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/DbVersion83.java
server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateAction.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveProjectCreatorFromTemplateActionTest.java
server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/SearchTemplatesActionTest.java

index e2f72395f22c47f38074093349862b17f3f8970d..34466e487482cc6556b6ab7265353a7b4e0e95b5 100644 (file)
@@ -46,7 +46,7 @@ public class PermissionTemplateCharacteristicDao implements Dao {
   }
 
   public PermissionTemplateCharacteristicDto update(DbSession dbSession, PermissionTemplateCharacteristicDto templatePermissionDto) {
-    requireNonNull(templatePermissionDto.getId());
+    requireNonNull(templatePermissionDto.getUuid());
     mapper(dbSession).update(templatePermissionDto);
     return templatePermissionDto;
   }
index 96041a3b1ed30ce36ffd93c4bed5b2725c342aa3..d3ac1eb6320cc5413431ce7146baf4a966825fd7 100644 (file)
@@ -25,19 +25,19 @@ public class PermissionTemplateCharacteristicDto {
 
   private static final int MAX_PERMISSION_KEY_LENGTH = 64;
 
-  private Long id;
+  private String uuid;
   private long templateId;
   private String permission;
   private boolean withProjectCreator;
   private long createdAt;
   private long updatedAt;
 
-  public Long getId() {
-    return id;
+  public String getUuid() {
+    return uuid;
   }
 
-  public PermissionTemplateCharacteristicDto setId(Long id) {
-    this.id = id;
+  public PermissionTemplateCharacteristicDto setUuid(String uuid) {
+    this.uuid = uuid;
     return this;
   }
 
index 8b8cac63f546dbba8fcd7cabe5648823ec632e40..f6dae36b5908264b3ad7bda86f8f06e7b5f497d8 100644 (file)
@@ -24,7 +24,7 @@ import org.apache.ibatis.annotations.Param;
 
 public interface PermissionTemplateCharacteristicMapper {
 
-  PermissionTemplateCharacteristicDto selectById(@Param("id") long id);
+  PermissionTemplateCharacteristicDto selectByUuid(@Param("uuid") String uuid);
 
   List<PermissionTemplateCharacteristicDto> selectByTemplateIds(@Param("templateIds") List<Long> templateId);
 
index 5b24b05407ff85e2c9eaea00fdcc3326abbc492a..31c810c587419de3e723de623d041875f2b3cb42 100644 (file)
@@ -30,6 +30,7 @@ import javax.annotation.Nullable;
 import org.apache.ibatis.session.ResultHandler;
 import org.apache.ibatis.session.RowBounds;
 import org.sonar.api.utils.System2;
+import org.sonar.core.util.Uuids;
 import org.sonar.db.Dao;
 import org.sonar.db.DbSession;
 import org.sonar.db.permission.CountPerProjectPermission;
@@ -160,6 +161,7 @@ public class PermissionTemplateDao implements Dao {
 
   public void insertUserPermission(DbSession session, Long templateId, Integer userId, String permission) {
     PermissionTemplateUserDto permissionTemplateUser = new PermissionTemplateUserDto()
+      .setUuid(Uuids.create())
       .setTemplateId(templateId)
       .setUserId(userId)
       .setPermission(permission)
@@ -189,6 +191,7 @@ public class PermissionTemplateDao implements Dao {
 
   public void insertGroupPermission(DbSession session, long templateId, @Nullable Integer groupId, String permission) {
     PermissionTemplateGroupDto permissionTemplateGroup = new PermissionTemplateGroupDto()
+      .setUuid(Uuids.create())
       .setTemplateId(templateId)
       .setPermission(permission)
       .setGroupId(groupId)
index c5e6db5f410ae7f03aee059ff002f1f28acf9510..50a623f7d78a1a57cadd95162940ba3ed47fde72 100644 (file)
@@ -23,7 +23,7 @@ import java.util.Date;
 import javax.annotation.Nullable;
 
 public class PermissionTemplateGroupDto {
-  private Long id;
+  private String uuid;
   private Long templateId;
   private Integer groupId;
   private String permission;
@@ -31,12 +31,12 @@ public class PermissionTemplateGroupDto {
   private Date createdAt;
   private Date updatedAt;
 
-  public Long getId() {
-    return id;
+  public String getUuid() {
+    return uuid;
   }
 
-  public PermissionTemplateGroupDto setId(Long id) {
-    this.id = id;
+  public PermissionTemplateGroupDto setUuid(String uuid) {
+    this.uuid = uuid;
     return this;
   }
 
index 7d434ac61b5d173f409b5a34ec5453cee55b9ced..1980c0d6ea220160229a54ca385d408355168e4f 100644 (file)
@@ -22,7 +22,7 @@ package org.sonar.db.permission.template;
 import java.util.Date;
 
 public class PermissionTemplateUserDto {
-  private Long id;
+  private String uuid;
   private Long templateId;
   private Integer userId;
   private String permission;
@@ -31,12 +31,12 @@ public class PermissionTemplateUserDto {
   private Date createdAt;
   private Date updatedAt;
 
-  public Long getId() {
-    return id;
+  public String getUuid() {
+    return uuid;
   }
 
-  public PermissionTemplateUserDto setId(Long id) {
-    this.id = id;
+  public PermissionTemplateUserDto setUuid(String uuid) {
+    this.uuid = uuid;
     return this;
   }
 
index 9011bc8062c5eaf98f3a3f7ee4c7af8f57d7b2f6..74a4f86561b4879a3747360fcda30947c581bcc0 100644 (file)
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd">
 <mapper namespace="org.sonar.db.permission.template.PermissionTemplateCharacteristicMapper">
   <sql id="columns">
-    ptc.id,
+    ptc.uuid,
     ptc.template_id as templateId,
     ptc.permission_key as permission,
     ptc.with_project_creator as withProjectCreator,
     ptc.updated_at as updatedAt
   </sql>
 
-  <select id="selectById" parameterType="long" resultType="PermissionTemplateCharacteristic">
+  <select id="selectByUuid" parameterType="String" resultType="PermissionTemplateCharacteristic">
     select
     <include refid="columns" />
     from perm_tpl_characteristics ptc
-    where ptc.id=#{id,jdbcType=BIGINT}
+    where ptc.uuid=#{uuid,jdbcType=VARCHAR}
   </select>
 
   <select id="selectByTemplateIds" parameterType="long" resultType="PermissionTemplateCharacteristic">
     order by ptc.created_at
   </select>
 
-  <insert id="insert" parameterType="PermissionTemplateCharacteristic" keyColumn="id" useGeneratedKeys="true" keyProperty="id">
-    insert into perm_tpl_characteristics(template_id, permission_key, with_project_creator, created_at, updated_at)
-    values(#{templateId, jdbcType=BIGINT}, #{permission, jdbcType=VARCHAR}, #{withProjectCreator, jdbcType=BOOLEAN}, #{createdAt, jdbcType=BIGINT}, #{updatedAt, jdbcType=BIGINT})
+  <insert id="insert" parameterType="PermissionTemplateCharacteristic">
+    insert into perm_tpl_characteristics(uuid, template_id, permission_key, with_project_creator, created_at, updated_at)
+    values(#{uuid, jdbcType=VARCHAR}, #{templateId, jdbcType=BIGINT}, #{permission, jdbcType=VARCHAR},
+    #{withProjectCreator, jdbcType=BOOLEAN}, #{createdAt, jdbcType=BIGINT}, #{updatedAt, jdbcType=BIGINT})
   </insert>
 
   <update id="update" parameterType="PermissionTemplateCharacteristic" useGeneratedKeys="false">
     update perm_tpl_characteristics set
     with_project_creator=#{withProjectCreator, jdbcType=BOOLEAN},
     updated_at=#{updatedAt, jdbcType=BIGINT}
-    where id=#{id}
+    where uuid=#{uuid}
   </update>
 
   <delete id="deleteByTemplateId" parameterType="long">
index a5cd5db918a5001e26b8552d6c6bcf4a7767bcc1..a2d84f79c212087e134b4b2b4e7382cdb604bb09 100644 (file)
   </delete>
 
   <insert id="insertUserPermission" parameterType="PermissionTemplateUser">
-    INSERT INTO perm_templates_users (template_id, user_id, permission_reference, created_at, updated_at)
-    VALUES (#{templateId}, #{userId}, #{permission}, #{createdAt}, #{updatedAt})
+    INSERT INTO perm_templates_users (uuid, template_id, user_id, permission_reference, created_at, updated_at)
+    VALUES (#{uuid}, #{templateId}, #{userId}, #{permission}, #{createdAt}, #{updatedAt})
   </insert>
 
   <insert id="insertGroupPermission" parameterType="PermissionTemplateGroup">
-    INSERT INTO perm_templates_groups (template_id, group_id, permission_reference, created_at, updated_at)
+    INSERT INTO perm_templates_groups (uuid, template_id, group_id, permission_reference, created_at, updated_at)
     VALUES (
+    #{uuid,jdbcType=VARCHAR},
     #{templateId,jdbcType=BIGINT},
     #{groupId,jdbcType=INTEGER},
     #{permission,jdbcType=VARCHAR},
   </select>
 
   <sql id="permissionTemplateUserColumns">
-    ptu.id,
+    ptu.uuid,
     ptu.template_id as templateId,
     ptu.permission_reference AS permission,
     ptu.user_id AS userId,
 
   <select id="selectGroupPermissionsByTemplateIdAndGroupNames" parameterType="Long" resultType="PermissionTemplateGroup">
     SELECT
-      sub.id,
+      sub.uuid,
       sub.templateId,
       sub.permission,
       sub.groupId,
       sub.updatedAt
     FROM  (
       SELECT
-        ptg.id,
+        ptg.uuid,
         ptg.template_id as templateId,
         ptg.permission_reference AS permission,
         ptg.group_id AS groupId,
         g.id=ptg.group_id
       UNION ALL
         SELECT
-          ptg.id,
+          ptg.uuid,
           ptg.template_id as templateId,
           ptg.permission_reference AS permission,
           0 AS groupId,
 
   <select id="selectAllGroupPermissionTemplatesByGroupId" parameterType="Long" resultType="PermissionTemplateGroup">
     SELECT
-      ptg.id,
+      ptg.uuid,
       ptg.template_id as templateId,
       ptg.permission_reference AS permission,
       ptg.group_id AS groupId,
index 20fe8d502b84e6ba9f311fa84a6b575e20d2b95e..0c8f91f99b2e3eab629927bef3d6666356133c88 100644 (file)
@@ -551,34 +551,34 @@ ALTER TABLE "ORGANIZATIONS" ADD CONSTRAINT "PK_ORGANIZATIONS" PRIMARY KEY("UUID"
 CREATE UNIQUE INDEX "ORGANIZATION_KEY" ON "ORGANIZATIONS"("KEE");
 
 CREATE TABLE "PERM_TEMPLATES_GROUPS"(
-    "ID" INTEGER NOT NULL AUTO_INCREMENT (1,1),
     "GROUP_ID" INTEGER,
     "TEMPLATE_ID" INTEGER NOT NULL,
     "PERMISSION_REFERENCE" VARCHAR(64) NOT NULL,
     "CREATED_AT" TIMESTAMP,
-    "UPDATED_AT" TIMESTAMP
+    "UPDATED_AT" TIMESTAMP,
+    "UUID" VARCHAR(40) NOT NULL
 );
-ALTER TABLE "PERM_TEMPLATES_GROUPS" ADD CONSTRAINT "PK_PERM_TEMPLATES_GROUPS" PRIMARY KEY("ID");
+ALTER TABLE "PERM_TEMPLATES_GROUPS" ADD CONSTRAINT "PK_PERM_TEMPLATES_GROUPS" PRIMARY KEY("UUID");
 
 CREATE TABLE "PERM_TEMPLATES_USERS"(
-    "ID" INTEGER NOT NULL AUTO_INCREMENT (1,1),
     "USER_ID" INTEGER NOT NULL,
     "TEMPLATE_ID" INTEGER NOT NULL,
     "PERMISSION_REFERENCE" VARCHAR(64) NOT NULL,
     "CREATED_AT" TIMESTAMP,
-    "UPDATED_AT" TIMESTAMP
+    "UPDATED_AT" TIMESTAMP,
+    "UUID" VARCHAR(40) NOT NULL
 );
-ALTER TABLE "PERM_TEMPLATES_USERS" ADD CONSTRAINT "PK_PERM_TEMPLATES_USERS" PRIMARY KEY("ID");
+ALTER TABLE "PERM_TEMPLATES_USERS" ADD CONSTRAINT "PK_PERM_TEMPLATES_USERS" PRIMARY KEY("UUID");
 
 CREATE TABLE "PERM_TPL_CHARACTERISTICS"(
-    "ID" INTEGER NOT NULL AUTO_INCREMENT (1,1),
     "TEMPLATE_ID" INTEGER NOT NULL,
     "PERMISSION_KEY" VARCHAR(64) NOT NULL,
     "WITH_PROJECT_CREATOR" BOOLEAN DEFAULT FALSE NOT NULL,
     "CREATED_AT" BIGINT NOT NULL,
-    "UPDATED_AT" BIGINT NOT NULL
+    "UPDATED_AT" BIGINT NOT NULL,
+    "UUID" VARCHAR(40) NOT NULL
 );
-ALTER TABLE "PERM_TPL_CHARACTERISTICS" ADD CONSTRAINT "PK_PERM_TPL_CHARACTERISTICS" PRIMARY KEY("ID");
+ALTER TABLE "PERM_TPL_CHARACTERISTICS" ADD CONSTRAINT "PK_PERM_TPL_CHARACTERISTICS" PRIMARY KEY("UUID");
 CREATE UNIQUE INDEX "UNIQ_PERM_TPL_CHARAC" ON "PERM_TPL_CHARACTERISTICS"("TEMPLATE_ID", "PERMISSION_KEY");
 
 CREATE TABLE "PERMISSION_TEMPLATES"(
index b4bdc7c006ee93fe9820276ccc72da145f081fe7..89a501267cc9d41347c2c01770a60e2f8ce981f3 100644 (file)
@@ -45,24 +45,28 @@ public class PermissionTemplateCharacteristicDaoTest {
   @Test
   public void selectByTemplateId_filter_by_template_id() {
     PermissionTemplateCharacteristicDto templatePermission1 = underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid1")
       .setPermission(UserRole.ADMIN)
       .setTemplateId(1L)
       .setWithProjectCreator(true)
       .setCreatedAt(1_000_000_000L)
       .setUpdatedAt(2_000_000_000L));
     PermissionTemplateCharacteristicDto templatePermission2 = underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid2")
       .setPermission(UserRole.USER)
       .setTemplateId(2L)
       .setWithProjectCreator(false)
       .setCreatedAt(1_000_000_000L)
       .setUpdatedAt(2_000_000_000L));
     PermissionTemplateCharacteristicDto templatePermission3 = underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid3")
       .setPermission(UserRole.USER)
       .setTemplateId(3L)
       .setWithProjectCreator(false)
       .setCreatedAt(1_000_000_001L)
       .setUpdatedAt(2_000_000_000L));
     PermissionTemplateCharacteristicDto templatePermissionForAnotherTemplate = underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid4")
       .setPermission(UserRole.ADMIN)
       .setTemplateId(42L)
       .setWithProjectCreator(true)
@@ -72,9 +76,9 @@ public class PermissionTemplateCharacteristicDaoTest {
     List<PermissionTemplateCharacteristicDto> result = underTest.selectByTemplateIds(dbSession, newArrayList(1L, 2L, 3L));
     assertThat(result)
       .hasSize(3)
-      .extracting("id")
-      .doesNotContain(templatePermissionForAnotherTemplate.getId())
-      .containsExactly(templatePermission1.getId(), templatePermission2.getId(), templatePermission3.getId());
+      .extracting("uuid")
+      .doesNotContain(templatePermissionForAnotherTemplate.getUuid())
+      .containsExactly(templatePermission1.getUuid(), templatePermission2.getUuid(), templatePermission3.getUuid());
     assertThat(result.get(0))
       .isEqualToComparingFieldByField(templatePermission1);
   }
@@ -89,18 +93,21 @@ public class PermissionTemplateCharacteristicDaoTest {
   @Test
   public void selectByPermissionAndTemplateId() {
     PermissionTemplateCharacteristicDto templatePermission1 = underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid1")
       .setPermission(UserRole.ADMIN)
       .setTemplateId(1L)
       .setWithProjectCreator(true)
       .setCreatedAt(1_000_000_000L)
       .setUpdatedAt(2_000_000_000L));
     underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid2")
       .setPermission(UserRole.USER)
       .setTemplateId(1L)
       .setWithProjectCreator(false)
       .setCreatedAt(1_000_000_000L)
       .setUpdatedAt(2_000_000_000L));
     underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid3")
       .setPermission(UserRole.ADMIN)
       .setTemplateId(42L)
       .setWithProjectCreator(true)
@@ -116,20 +123,22 @@ public class PermissionTemplateCharacteristicDaoTest {
   @Test
   public void insert() {
     PermissionTemplateCharacteristicDto expectedResult = underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid")
       .setPermission(UserRole.USER)
       .setTemplateId(1L)
       .setWithProjectCreator(true)
       .setCreatedAt(123_456_789L)
       .setUpdatedAt(2_000_000_000L));
 
-    PermissionTemplateCharacteristicDto result = dbSession.getMapper(PermissionTemplateCharacteristicMapper.class).selectById(expectedResult.getId());
-    assertThat(result.getId()).isNotNull();
+    PermissionTemplateCharacteristicDto result = dbSession.getMapper(PermissionTemplateCharacteristicMapper.class).selectByUuid(expectedResult.getUuid());
+    assertThat(result.getUuid()).isEqualTo("uuid");
     assertThat(result).isEqualToComparingFieldByField(expectedResult);
   }
 
   @Test
   public void update_only_change_with_project_creator_and_updated_at() {
     PermissionTemplateCharacteristicDto insertedDto = underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid")
       .setPermission(UserRole.USER)
       .setTemplateId(1L)
       .setWithProjectCreator(true)
@@ -137,7 +146,7 @@ public class PermissionTemplateCharacteristicDaoTest {
       .setUpdatedAt(2_000_000_000L));
 
     underTest.update(dbSession, new PermissionTemplateCharacteristicDto()
-      .setId(insertedDto.getId())
+      .setUuid("uuid")
       .setPermission("PERMISSION_ARE_NOT_UPDATABLE")
       .setTemplateId(42L)
       .setCreatedAt(42L)
@@ -145,8 +154,8 @@ public class PermissionTemplateCharacteristicDaoTest {
       .setUpdatedAt(3_000_000_000L));
 
     PermissionTemplateCharacteristicDto result = underTest.selectByPermissionAndTemplateId(dbSession, insertedDto.getPermission(), insertedDto.getTemplateId()).get();
-    assertThat(result).extracting("id", "permission", "templateId", "createdAt")
-      .containsExactly(insertedDto.getId(), insertedDto.getPermission(), insertedDto.getTemplateId(), insertedDto.getCreatedAt());
+    assertThat(result).extracting("uuid", "permission", "templateId", "createdAt")
+      .containsExactly(insertedDto.getUuid(), insertedDto.getPermission(), insertedDto.getTemplateId(), insertedDto.getCreatedAt());
     assertThat(result).extracting("withProjectCreator", "updatedAt")
       .containsExactly(false, 3_000_000_000L);
   }
@@ -156,6 +165,7 @@ public class PermissionTemplateCharacteristicDaoTest {
     expectedException.expect(IllegalArgumentException.class);
 
     underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid")
       .setPermission(UserRole.USER)
       .setTemplateId(1L)
       .setWithProjectCreator(true)
@@ -167,6 +177,7 @@ public class PermissionTemplateCharacteristicDaoTest {
     expectedException.expect(IllegalArgumentException.class);
 
     underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid")
       .setPermission(UserRole.USER)
       .setTemplateId(1L)
       .setWithProjectCreator(true)
@@ -174,7 +185,7 @@ public class PermissionTemplateCharacteristicDaoTest {
   }
 
   @Test
-  public void fail_update_if_id_is_null() {
+  public void fail_update_if_uuid_is_null() {
     expectedException.expect(NullPointerException.class);
 
     underTest.update(dbSession, new PermissionTemplateCharacteristicDto()
@@ -188,12 +199,14 @@ public class PermissionTemplateCharacteristicDaoTest {
   @Test
   public void delete_by_permission_template_id() {
     underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid1")
       .setPermission(UserRole.USER)
       .setTemplateId(1L)
       .setWithProjectCreator(true)
       .setCreatedAt(123_456_789L)
       .setUpdatedAt(2_000_000_000L));
     underTest.insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid("uuid2")
       .setPermission(UserRole.USER)
       .setTemplateId(2L)
       .setWithProjectCreator(true)
index 06fbd234f658c11e060d22d2e65d113d479a727d..2807bba7eb3e6b1f6f51c44e3155aacc9c19903c 100644 (file)
@@ -47,6 +47,7 @@ public class PermissionTemplateTesting {
 
   public static PermissionTemplateGroupDto newPermissionTemplateGroupDto() {
     return new PermissionTemplateGroupDto()
+      .setUuid(Uuids.createFast())
       .setPermission(PermissionsTestHelper.ALL_PERMISSIONS.toArray(new String[0])[RandomUtils.nextInt(PermissionsTestHelper.ALL_PERMISSIONS.size())])
       .setCreatedAt(new Date())
       .setUpdatedAt(new Date());
@@ -54,6 +55,7 @@ public class PermissionTemplateTesting {
 
   public static PermissionTemplateCharacteristicDto newPermissionTemplateCharacteristicDto() {
     return new PermissionTemplateCharacteristicDto()
+      .setUuid(Uuids.createFast())
       .setPermission(PermissionsTestHelper.ALL_PERMISSIONS.toArray(new String[0])[RandomUtils.nextInt(PermissionsTestHelper.ALL_PERMISSIONS.size())])
       .setWithProjectCreator(RandomUtils.nextBoolean())
       .setCreatedAt(System.currentTimeMillis())
index ea62d5bc50846029713fb4015c767544f6c9bd15..a251361c1197c2a7df6c88751048797af637f3a1 100644 (file)
@@ -79,6 +79,24 @@ import org.sonar.server.platform.db.migration.version.v83.notifications.DropIdCo
 import org.sonar.server.platform.db.migration.version.v83.notifications.DropPrimaryKeyOnIdColumnOfNotificationTable;
 import org.sonar.server.platform.db.migration.version.v83.notifications.MakeNotificationUuidAndCreatedAtColumnsNotNullable;
 import org.sonar.server.platform.db.migration.version.v83.notifications.PopulateNotificationUuidAndCreatedAt;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesgroups.AddPrimaryKeyOnUuidColumnOfPermTemplatesGroupsTable;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesgroups.AddUuidColumnToPermTemplatesGroupsTable;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesgroups.DropIdColumnOfPermTemplatesGroupsTable;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesgroups.DropPrimaryKeyOnIdColumnOfPermTemplatesGroupsTable;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesgroups.MakePermTemplatesGroupsUuidColumnNotNullable;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesgroups.PopulatePermTemplatesGroupsUuid;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesusers.AddPrimaryKeyOnUuidColumnOfPermTemplatesUsersTable;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesusers.AddUuidColumnToPermTemplatesUsersTable;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesusers.DropIdColumnOfPermTemplatesUsersTable;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesusers.DropPrimaryKeyOnIdColumnOfPermTemplatesUsersTable;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesusers.MakePermTemplatesUsersUuidColumnNotNullable;
+import org.sonar.server.platform.db.migration.version.v83.permtemplatesusers.PopulatePermTemplatesUsersUuid;
+import org.sonar.server.platform.db.migration.version.v83.permtplcharacteristics.AddPrimaryKeyOnUuidColumnOfPermTplCharacteristicsTable;
+import org.sonar.server.platform.db.migration.version.v83.permtplcharacteristics.AddUuidColumnToPermTplCharacteristicsTable;
+import org.sonar.server.platform.db.migration.version.v83.permtplcharacteristics.DropIdColumnOfPermTplCharacteristicsTable;
+import org.sonar.server.platform.db.migration.version.v83.permtplcharacteristics.DropPrimaryKeyOnIdColumnOfPermTplCharacteristicsTable;
+import org.sonar.server.platform.db.migration.version.v83.permtplcharacteristics.MakePermTplCharacteristicsUuidColumnNotNullable;
+import org.sonar.server.platform.db.migration.version.v83.permtplcharacteristics.PopulatePermTplCharacteristicsUuid;
 import org.sonar.server.platform.db.migration.version.v83.projectmeasures.AddPrimaryKeyOnUuidColumnOfProjectMeasuresTable;
 import org.sonar.server.platform.db.migration.version.v83.projectmeasures.AddUuidColumnToProjectMeasures;
 import org.sonar.server.platform.db.migration.version.v83.projectmeasures.DropIdColumnOfProjectMeasuresTable;
@@ -286,6 +304,31 @@ public class DbVersion83 implements DbVersion {
       .add(3473, "Drop primary key on 'ID' column of 'QUALITY_GATE_CONDITIONS' table", DropPrimaryKeyOnIdColumnOfQualityGateConditionsTable.class)
       .add(3474, "Add primary key on 'UUID' column of 'QUALITY_GATE_CONDITIONS' table", AddPrimaryKeyOnUuidColumnOfQualityGateConditionsTable.class)
       .add(3475, "Drop column 'ID' of 'QUALITY_GATE_CONDITIONS' table", DropIdColumnOfQualityGateConditionsTable.class)
+
+      // Migration of PERM_TEMPLATES_GROUPS table
+      .add(3476, "Add 'UUID' column on 'PERM_TEMPLATES_GROUPS' table", AddUuidColumnToPermTemplatesGroupsTable.class)
+      .add(3477, "Populate 'uuid' for 'PERM_TEMPLATES_GROUPS'", PopulatePermTemplatesGroupsUuid.class)
+      .add(3478, "Make 'uuid' column not nullable for 'PERM_TEMPLATES_GROUPS'", MakePermTemplatesGroupsUuidColumnNotNullable.class)
+      .add(3479, "Drop primary key on 'ID' column of 'PERM_TEMPLATES_GROUPS' table", DropPrimaryKeyOnIdColumnOfPermTemplatesGroupsTable.class)
+      .add(3480, "Add primary key on 'UUID' column of 'PERM_TEMPLATES_GROUPS' table", AddPrimaryKeyOnUuidColumnOfPermTemplatesGroupsTable.class)
+      .add(3481, "Drop column 'ID' of 'PERM_TEMPLATES_GROUPS' table", DropIdColumnOfPermTemplatesGroupsTable.class)
+
+      // Migration of PERM_TPL_CHARACTERISTICS table
+      .add(3482, "Add 'UUID' column on 'PERM_TPL_CHARACTERISTICS' table", AddUuidColumnToPermTplCharacteristicsTable.class)
+      .add(3483, "Populate 'uuid' for 'PERM_TPL_CHARACTERISTICS'", PopulatePermTplCharacteristicsUuid.class)
+      .add(3484, "Make 'uuid' column not nullable for 'PERM_TPL_CHARACTERISTICS'", MakePermTplCharacteristicsUuidColumnNotNullable.class)
+      .add(3485, "Drop primary key on 'ID' column of 'PERM_TPL_CHARACTERISTICS' table", DropPrimaryKeyOnIdColumnOfPermTplCharacteristicsTable.class)
+      .add(3486, "Add primary key on 'UUID' column of 'PERM_TPL_CHARACTERISTICS' table", AddPrimaryKeyOnUuidColumnOfPermTplCharacteristicsTable.class)
+      .add(3487, "Drop column 'ID' of 'PERM_TPL_CHARACTERISTICS' table", DropIdColumnOfPermTplCharacteristicsTable.class)
+
+      // Migration of PERM_TEMPLATES_USERS table
+      .add(3488, "Add 'UUID' column on 'PERM_TEMPLATES_USERS' table", AddUuidColumnToPermTemplatesUsersTable.class)
+      .add(3489, "Populate 'uuid' for 'PERM_TEMPLATES_USERS'", PopulatePermTemplatesUsersUuid.class)
+      .add(3490, "Make 'uuid' column not nullable for 'PERM_TEMPLATES_USERS'", MakePermTemplatesUsersUuidColumnNotNullable.class)
+      .add(3491, "Drop primary key on 'ID' column of 'PERM_TEMPLATES_USERS' table", DropPrimaryKeyOnIdColumnOfPermTemplatesUsersTable.class)
+      .add(3492, "Add primary key on 'UUID' column of 'PERM_TEMPLATES_USERS' table", AddPrimaryKeyOnUuidColumnOfPermTemplatesUsersTable.class)
+      .add(3493, "Drop column 'ID' of 'PERM_TEMPLATES_USERS' table", DropIdColumnOfPermTemplatesUsersTable.class)
+
     ;
   }
 }
index d4d2f668b903792c8713d0ca706f08000d69bccc..33e6fb2abc0b23ed5a551364dfa586107d5109ca 100644 (file)
@@ -26,6 +26,7 @@ import org.sonar.api.server.ws.Request;
 import org.sonar.api.server.ws.Response;
 import org.sonar.api.server.ws.WebService;
 import org.sonar.api.utils.System2;
+import org.sonar.core.util.Uuids;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.permission.template.PermissionTemplateCharacteristicDto;
@@ -111,6 +112,7 @@ public class AddProjectCreatorToTemplateAction implements PermissionsWsAction {
   private void addTemplatePermission(DbSession dbSession, AddProjectCreatorToTemplateRequest request, PermissionTemplateDto template) {
     long now = system.now();
     dbClient.permissionTemplateCharacteristicDao().insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid(Uuids.create())
       .setPermission(request.getPermission())
       .setTemplateId(template.getId())
       .setWithProjectCreator(true)
index 17097e79d44390baf579ac4ad9673a216f9159dd..92e714a339736ae840d1981a47c3893f1dd8f69d 100644 (file)
@@ -26,6 +26,7 @@ import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.resources.ResourceTypes;
 import org.sonar.api.utils.System2;
 import org.sonar.api.web.UserRole;
+import org.sonar.core.util.Uuids;
 import org.sonar.db.component.ResourceTypesRule;
 import org.sonar.db.permission.template.PermissionTemplateCharacteristicDto;
 import org.sonar.db.permission.template.PermissionTemplateDto;
@@ -83,6 +84,7 @@ public class AddProjectCreatorToTemplateActionTest extends BasePermissionWsTest<
     loginAsAdmin(db.getDefaultOrganization());
     PermissionTemplateCharacteristicDto characteristic = db.getDbClient().permissionTemplateCharacteristicDao().insert(db.getSession(),
       new PermissionTemplateCharacteristicDto()
+        .setUuid(Uuids.createFast())
         .setTemplateId(template.getId())
         .setPermission(UserRole.USER)
         .setWithProjectCreator(false)
index ee90676f34e78304edd5c0075e52ed83ac6f979d..e031b1038735e4097f88cb518a8a8922161da04d 100644 (file)
@@ -27,6 +27,7 @@ import org.sonar.api.resources.ResourceTypes;
 import org.sonar.api.utils.System2;
 import org.sonar.api.web.UserRole;
 import org.sonar.core.permission.GlobalPermissions;
+import org.sonar.core.util.Uuids;
 import org.sonar.db.component.ResourceTypesRule;
 import org.sonar.db.permission.template.PermissionTemplateCharacteristicDto;
 import org.sonar.db.permission.template.PermissionTemplateDto;
@@ -71,6 +72,7 @@ public class RemoveProjectCreatorFromTemplateActionTest extends BasePermissionWs
   public void update_template_permission() {
     PermissionTemplateCharacteristicDto characteristic = db.getDbClient().permissionTemplateCharacteristicDao().insert(db.getSession(),
       new PermissionTemplateCharacteristicDto()
+        .setUuid(Uuids.createFast())
         .setTemplateId(template.getId())
         .setPermission(UserRole.USER)
         .setWithProjectCreator(false)
index abba6d7fc6fd72234d49f6b469a491920e8e0fe2..46c3e40d1c167e900f9da89b8725c571dd8fe7b7 100644 (file)
@@ -25,6 +25,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.sonar.api.resources.Qualifiers;
 import org.sonar.api.web.UserRole;
+import org.sonar.core.util.Uuids;
 import org.sonar.db.DbClient;
 import org.sonar.db.DbSession;
 import org.sonar.db.component.ResourceTypesRule;
@@ -381,6 +382,7 @@ public class SearchTemplatesActionTest extends BasePermissionWsTest<SearchTempla
 
   private void addPermissionTemplateWithProjectCreator(long templateId, String permission) {
     dbClient.permissionTemplateCharacteristicDao().insert(dbSession, new PermissionTemplateCharacteristicDto()
+      .setUuid(Uuids.createFast())
       .setWithProjectCreator(true)
       .setTemplateId(templateId)
       .setPermission(permission)