Redirect protocol requests for migrated repositories

- Make old repository name and id available to plugins (MigrationDAO)
- Build Map with paths of migrated repositories to new location
- Implement redirect (RepositoryLegacyProtocolRedirectFilter)
This commit is contained in:
René Pfeuffer
2019-07-02 10:46:26 +02:00
parent c881a3eca7
commit f631dc1724
14 changed files with 353 additions and 55 deletions

View File

@@ -10,7 +10,7 @@ import org.slf4j.LoggerFactory;
import sonia.scm.lifecycle.RestartEvent;
import sonia.scm.event.ScmEventBus;
import sonia.scm.update.repository.MigrationStrategy;
import sonia.scm.update.repository.MigrationStrategyDao;
import sonia.scm.update.repository.DefaultMigrationStrategyDAO;
import sonia.scm.update.repository.V1Repository;
import sonia.scm.update.repository.XmlRepositoryV1UpdateStep;
import sonia.scm.util.ValidationUtil;
@@ -37,10 +37,10 @@ class MigrationWizardServlet extends HttpServlet {
private static final Logger LOG = LoggerFactory.getLogger(MigrationWizardServlet.class);
private final XmlRepositoryV1UpdateStep repositoryV1UpdateStep;
private final MigrationStrategyDao migrationStrategyDao;
private final DefaultMigrationStrategyDAO migrationStrategyDao;
@Inject
MigrationWizardServlet(XmlRepositoryV1UpdateStep repositoryV1UpdateStep, MigrationStrategyDao migrationStrategyDao) {
MigrationWizardServlet(XmlRepositoryV1UpdateStep repositoryV1UpdateStep, DefaultMigrationStrategyDAO migrationStrategyDao) {
this.repositoryV1UpdateStep = repositoryV1UpdateStep;
this.migrationStrategyDao = migrationStrategyDao;
}
@@ -103,11 +103,12 @@ class MigrationWizardServlet extends HttpServlet {
.forEach(
entry-> {
String id = entry.getId();
String protocol = entry.getType();
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, originalName, MigrationStrategy.valueOf(strategy), namespace, name);
migrationStrategyDao.set(id, protocol, originalName, MigrationStrategy.valueOf(strategy), namespace, name);
}
);