From 5d3c140d97e3716cd9e24281983fcaac15006986 Mon Sep 17 00:00:00 2001 From: Julien Lancelot Date: Wed, 28 Mar 2018 17:42:43 +0200 Subject: [PATCH] SONAR-10455 Fix bulk update of project having branches containing "/" --- .../sonar/db/component/ComponentKeyUpdaterDao.java | 4 ++-- .../db/component/ComponentKeyUpdaterDaoTest.java | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentKeyUpdaterDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentKeyUpdaterDao.java index c3a73736926..a83a1849105 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentKeyUpdaterDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/component/ComponentKeyUpdaterDao.java @@ -110,8 +110,9 @@ public class ComponentKeyUpdaterDao implements Dao { ComponentKeyUpdaterMapper mapper = session.getMapper(ComponentKeyUpdaterMapper.class); // must SELECT first everything Set modules = collectAllModules(projectUuid, stringToReplace, mapper); + checkNewNameOfAllModules(modules, stringToReplace, replacementString, mapper); - // add branches + // add branches (no check should be done as branch keys cannot be changed by the user) Map branchBaseKeys = new HashMap<>(); session.getMapper(BranchMapper.class).selectByProjectUuid(projectUuid) .stream() @@ -122,7 +123,6 @@ public class ComponentKeyUpdaterDao implements Dao { branchModules.forEach(module -> branchBaseKeys.put(module.getKey(), branchBaseKey(module.getKey()))); }); - checkNewNameOfAllModules(modules, stringToReplace, replacementString, mapper); Map> allResourcesByModuleMap = Maps.newHashMap(); for (ResourceDto module : modules) { allResourcesByModuleMap.put(module, mapper.selectProjectResources(module.getUuid())); diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentKeyUpdaterDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentKeyUpdaterDaoTest.java index 3166d3aab8b..2e39482e656 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentKeyUpdaterDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/component/ComponentKeyUpdaterDaoTest.java @@ -161,6 +161,18 @@ public class ComponentKeyUpdaterDaoTest { .forEach(map -> map.values().forEach(k -> assertThat(k.toString()).startsWith(newProjectKey))); } + @Test + public void bulk_updateKey_on_branch_containing_slash() { + ComponentDto project = db.components().insertMainBranch(); + ComponentDto branch = db.components().insertProjectBranch(project, b -> b.setKey("branch/with/slash")); + String newKey = "newKey"; + + underTest.bulkUpdateKey(dbSession, project.uuid(), project.getKey(), newKey); + + assertThat(dbClient.componentDao().selectAllComponentsFromProjectKey(dbSession, newKey)).hasSize(1); + assertThat(dbClient.componentDao().selectAllComponentsFromProjectKey(dbSession, ComponentDto.generateBranchKey(newKey, branch.getBranch()))).hasSize(1); + } + @Test public void bulk_updateKey_updates_pull_requests_too() { ComponentDto project = db.components().insertMainBranch(); -- 2.39.5