From c881a3eca751fcb6a49bf7fb6c0f729a2f512439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 1 Jul 2019 15:30:03 +0200 Subject: [PATCH] Store original repository name in migration plan --- .../sonia/scm/update/MigrationWizardServlet.java | 13 ++++++++++--- .../update/repository/MigrationStrategyDao.java | 4 ++-- .../repository/RepositoryMigrationPlan.java | 12 +++++++++--- .../scm/update/MigrationWizardServletTest.java | 16 +++++++++++++++- .../repository/MigrationStrategyDaoTest.java | 11 +++++++---- .../XmlRepositoryV1UpdateStepTest.java | 2 +- 6 files changed, 44 insertions(+), 14 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/update/MigrationWizardServlet.java b/scm-webapp/src/main/java/sonia/scm/update/MigrationWizardServlet.java index 2386b0dbd7..445a99feb7 100644 --- a/scm-webapp/src/main/java/sonia/scm/update/MigrationWizardServlet.java +++ b/scm-webapp/src/main/java/sonia/scm/update/MigrationWizardServlet.java @@ -100,13 +100,14 @@ class MigrationWizardServlet extends HttpServlet { } repositoryLineEntries.stream() - .map(RepositoryLineEntry::getId) .forEach( - id -> { + entry-> { + String id = entry.getId(); + String originalName = entry.getOriginalName(); String strategy = req.getParameter("strategy-" + id); String namespace = req.getParameter("namespace-" + id); String name = req.getParameter("name-" + id); - migrationStrategyDao.set(id, MigrationStrategy.valueOf(strategy), namespace, name); + migrationStrategyDao.set(id, originalName, MigrationStrategy.valueOf(strategy), namespace, name); } ); @@ -150,6 +151,7 @@ class MigrationWizardServlet extends HttpServlet { private static class RepositoryLineEntry { private final String id; + private final String originalName; private final String type; private final String path; private MigrationStrategy selectedStrategy; @@ -160,6 +162,7 @@ class MigrationWizardServlet extends HttpServlet { public RepositoryLineEntry(V1Repository repository) { this.id = repository.getId(); + this.originalName = repository.getName(); this.type = repository.getType(); this.path = repository.getType() + "/" + repository.getName(); this.selectedStrategy = MigrationStrategy.COPY; @@ -189,6 +192,10 @@ class MigrationWizardServlet extends HttpServlet { return id; } + public String getOriginalName() { + return originalName; + } + public String getType() { return type; } diff --git a/scm-webapp/src/main/java/sonia/scm/update/repository/MigrationStrategyDao.java b/scm-webapp/src/main/java/sonia/scm/update/repository/MigrationStrategyDao.java index 5670ce458a..bdc8f97359 100644 --- a/scm-webapp/src/main/java/sonia/scm/update/repository/MigrationStrategyDao.java +++ b/scm-webapp/src/main/java/sonia/scm/update/repository/MigrationStrategyDao.java @@ -23,8 +23,8 @@ public class MigrationStrategyDao { return plan.get(id); } - public void set(String repositoryId, MigrationStrategy strategy, String newNamespace, String newName) { - plan.set(repositoryId, strategy, newNamespace, newName); + public void set(String repositoryId, String originalName, MigrationStrategy strategy, String newNamespace, String newName) { + plan.set(repositoryId, originalName, strategy, newNamespace, newName); store.set(plan); } } diff --git a/scm-webapp/src/main/java/sonia/scm/update/repository/RepositoryMigrationPlan.java b/scm-webapp/src/main/java/sonia/scm/update/repository/RepositoryMigrationPlan.java index 3c4bf36342..5f523ee76a 100644 --- a/scm-webapp/src/main/java/sonia/scm/update/repository/RepositoryMigrationPlan.java +++ b/scm-webapp/src/main/java/sonia/scm/update/repository/RepositoryMigrationPlan.java @@ -29,14 +29,14 @@ class RepositoryMigrationPlan { .findFirst(); } - public void set(String repositoryId, MigrationStrategy strategy, String newNamespace, String newName) { + public void set(String repositoryId, String originalName, MigrationStrategy strategy, String newNamespace, String newName) { Optional entry = get(repositoryId); if (entry.isPresent()) { entry.get().setStrategy(strategy); entry.get().setNewNamespace(newNamespace); entry.get().setNewName(newName); } else { - entries.add(new RepositoryMigrationEntry(repositoryId, strategy, newNamespace, newName)); + entries.add(new RepositoryMigrationEntry(repositoryId, originalName, strategy, newNamespace, newName)); } } @@ -45,6 +45,7 @@ class RepositoryMigrationPlan { static class RepositoryMigrationEntry { private String repositoryId; + private String originalName; private MigrationStrategy dataMigrationStrategy; private String newNamespace; private String newName; @@ -52,13 +53,18 @@ class RepositoryMigrationPlan { RepositoryMigrationEntry() { } - RepositoryMigrationEntry(String repositoryId, MigrationStrategy dataMigrationStrategy, String newNamespace, String newName) { + RepositoryMigrationEntry(String repositoryId, String originalName, MigrationStrategy dataMigrationStrategy, String newNamespace, String newName) { this.repositoryId = repositoryId; + this.originalName = originalName; this.dataMigrationStrategy = dataMigrationStrategy; this.newNamespace = newNamespace; this.newName = newName; } + public String getOriginalName() { + return originalName; + } + public MigrationStrategy getDataMigrationStrategy() { return dataMigrationStrategy; } diff --git a/scm-webapp/src/test/java/sonia/scm/update/MigrationWizardServletTest.java b/scm-webapp/src/test/java/sonia/scm/update/MigrationWizardServletTest.java index fed4a3b6c8..325dc2eb1c 100644 --- a/scm-webapp/src/test/java/sonia/scm/update/MigrationWizardServletTest.java +++ b/scm-webapp/src/test/java/sonia/scm/update/MigrationWizardServletTest.java @@ -131,6 +131,20 @@ class MigrationWizardServletTest { .contains("id"); } + @Test + void shouldKeepOriginalName() { + when(updateStep.getRepositoriesWithoutMigrationStrategies()).thenReturn( + Collections.singletonList(new V1Repository("id", "git", "name")) + ); + + servlet.doGet(request, response); + + assertThat(renderedModel.get("repositories")) + .asList() + .extracting("originalName") + .contains("name"); + } + @Test void shouldNotBeInvalidAtFirstRequest() { when(updateStep.getRepositoriesWithoutMigrationStrategies()).thenReturn( @@ -219,6 +233,6 @@ class MigrationWizardServletTest { servlet.doPost(request, response); - verify(migrationStrategyDao).set("id", MigrationStrategy.COPY, "namespace", "name"); + verify(migrationStrategyDao).set("id", "name", MigrationStrategy.COPY, "namespace", "name"); } } diff --git a/scm-webapp/src/test/java/sonia/scm/update/repository/MigrationStrategyDaoTest.java b/scm-webapp/src/test/java/sonia/scm/update/repository/MigrationStrategyDaoTest.java index 5829f5b98f..d3b487e916 100644 --- a/scm-webapp/src/test/java/sonia/scm/update/repository/MigrationStrategyDaoTest.java +++ b/scm-webapp/src/test/java/sonia/scm/update/repository/MigrationStrategyDaoTest.java @@ -47,7 +47,7 @@ class MigrationStrategyDaoTest { void shouldReturnNewValue() { MigrationStrategyDao dao = new MigrationStrategyDao(storeFactory); - dao.set("id", INLINE, "space", "name"); + dao.set("id", "originalName", INLINE, "space", "name"); Optional entry = dao.get("id"); @@ -65,14 +65,14 @@ class MigrationStrategyDaoTest { @Nested class WithExistingDatabase { @BeforeEach - void initExistingDatabase() throws JAXBException { + void initExistingDatabase() { MigrationStrategyDao dao = new MigrationStrategyDao(storeFactory); - dao.set("id", INLINE, "space", "name"); + dao.set("id", "originalName", INLINE, "space", "name"); } @Test - void shouldFindExistingValue() throws JAXBException { + void shouldFindExistingValue() { MigrationStrategyDao dao = new MigrationStrategyDao(storeFactory); Optional entry = dao.get("id"); @@ -86,6 +86,9 @@ class MigrationStrategyDaoTest { Assertions.assertThat(entry) .map(RepositoryMigrationPlan.RepositoryMigrationEntry::getNewName) .contains("name"); + Assertions.assertThat(entry) + .map(RepositoryMigrationPlan.RepositoryMigrationEntry::getOriginalName) + .contains("originalName"); } } } diff --git a/scm-webapp/src/test/java/sonia/scm/update/repository/XmlRepositoryV1UpdateStepTest.java b/scm-webapp/src/test/java/sonia/scm/update/repository/XmlRepositoryV1UpdateStepTest.java index 2145164062..f4abb32698 100644 --- a/scm-webapp/src/test/java/sonia/scm/update/repository/XmlRepositoryV1UpdateStepTest.java +++ b/scm-webapp/src/test/java/sonia/scm/update/repository/XmlRepositoryV1UpdateStepTest.java @@ -91,7 +91,7 @@ class XmlRepositoryV1UpdateStepTest { void createMigrationPlan() { Answer planAnswer = invocation -> { String id = invocation.getArgument(0).toString(); - return of(new RepositoryMigrationPlan.RepositoryMigrationEntry(id, MOVE, "namespace-" + id, "name-" + id)); + return of(new RepositoryMigrationPlan.RepositoryMigrationEntry(id, "originalName", MOVE, "namespace-" + id, "name-" + id)); }; lenient().when(migrationStrategyDao.get("3b91caa5-59c3-448f-920b-769aaa56b761")).thenAnswer(planAnswer);