From: Duarte Meneses Date: Tue, 21 Apr 2020 20:23:11 +0000 (-0500) Subject: SONAR-13221 Fix permission template tables X-Git-Tag: 8.4.0.35506~174 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=ffd176a905d758ebcbf120a60e7bec1a96cdd559;p=sonarqube.git SONAR-13221 Fix permission template tables --- diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDao.java index e2f72395f22..34466e48748 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDao.java @@ -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; } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDto.java index 96041a3b1ed..d3ac1eb6320 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDto.java @@ -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; } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java index 8b8cac63f54..f6dae36b590 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.java @@ -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 selectByTemplateIds(@Param("templateIds") List templateId); diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java index 5b24b05407f..31c810c5874 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateDao.java @@ -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) diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateGroupDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateGroupDto.java index c5e6db5f410..50a623f7d78 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateGroupDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateGroupDto.java @@ -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; } diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateUserDto.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateUserDto.java index 7d434ac61b5..1980c0d6ea2 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateUserDto.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/template/PermissionTemplateUserDto.java @@ -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; } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml index 9011bc8062c..74a4f86561b 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateCharacteristicMapper.xml @@ -2,7 +2,7 @@ - ptc.id, + ptc.uuid, ptc.template_id as templateId, ptc.permission_key as permission, ptc.with_project_creator as withProjectCreator, @@ -10,11 +10,11 @@ ptc.updated_at as updatedAt - select from perm_tpl_characteristics ptc - where ptc.id=#{id,jdbcType=BIGINT} + where ptc.uuid=#{uuid,jdbcType=VARCHAR} - - 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 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}) update perm_tpl_characteristics set with_project_creator=#{withProjectCreator, jdbcType=BOOLEAN}, updated_at=#{updatedAt, jdbcType=BIGINT} - where id=#{id} + where uuid=#{uuid} diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml index a5cd5db918a..a2d84f79c21 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/template/PermissionTemplateMapper.xml @@ -103,13 +103,14 @@ - 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 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}, @@ -247,7 +248,7 @@ - ptu.id, + ptu.uuid, ptu.template_id as templateId, ptu.permission_reference AS permission, ptu.user_id AS userId, @@ -274,7 +275,7 @@ SELECT - ptg.id, + ptg.uuid, ptg.template_id as templateId, ptg.permission_reference AS permission, ptg.group_id AS groupId, diff --git a/server/sonar-db-dao/src/schema/schema-sq.ddl b/server/sonar-db-dao/src/schema/schema-sq.ddl index 20fe8d502b8..0c8f91f99b2 100644 --- a/server/sonar-db-dao/src/schema/schema-sq.ddl +++ b/server/sonar-db-dao/src/schema/schema-sq.ddl @@ -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"( diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDaoTest.java index b4bdc7c006e..89a501267cc 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/permission/template/PermissionTemplateCharacteristicDaoTest.java @@ -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 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) diff --git a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/permission/template/PermissionTemplateTesting.java b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/permission/template/PermissionTemplateTesting.java index 06fbd234f65..2807bba7eb3 100644 --- a/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/permission/template/PermissionTemplateTesting.java +++ b/server/sonar-db-dao/src/testFixtures/java/org/sonar/db/permission/template/PermissionTemplateTesting.java @@ -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()) diff --git a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/DbVersion83.java b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/DbVersion83.java index ea62d5bc508..a251361c119 100644 --- a/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/DbVersion83.java +++ b/server/sonar-db-migration/src/main/java/org/sonar/server/platform/db/migration/version/v83/DbVersion83.java @@ -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) + ; } } diff --git a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateAction.java b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateAction.java index d4d2f668b90..33e6fb2abc0 100644 --- a/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateAction.java +++ b/server/sonar-webserver-webapi/src/main/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateAction.java @@ -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) diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateActionTest.java index 17097e79d44..92e714a3397 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/AddProjectCreatorToTemplateActionTest.java @@ -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) diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveProjectCreatorFromTemplateActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveProjectCreatorFromTemplateActionTest.java index ee90676f34e..e031b103873 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveProjectCreatorFromTemplateActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/RemoveProjectCreatorFromTemplateActionTest.java @@ -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) diff --git a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/SearchTemplatesActionTest.java b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/SearchTemplatesActionTest.java index abba6d7fc6f..46c3e40d1c1 100644 --- a/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/SearchTemplatesActionTest.java +++ b/server/sonar-webserver-webapi/src/test/java/org/sonar/server/permission/ws/template/SearchTemplatesActionTest.java @@ -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