Cleanup usage of InitialRepositoryLocationResolver and RepositoryLocationResolver

This commit is contained in:
René Pfeuffer
2018-11-22 17:06:29 +01:00
parent d329ca56f8
commit 20f5e7be1f
16 changed files with 71 additions and 83 deletions

View File

@@ -69,15 +69,19 @@ public abstract class AbstractSimpleRepositoryHandler<C extends RepositoryConfig
private static final Logger logger = private static final Logger logger =
LoggerFactory.getLogger(AbstractSimpleRepositoryHandler.class); LoggerFactory.getLogger(AbstractSimpleRepositoryHandler.class);
private FileSystem fileSystem; private final FileSystem fileSystem;
private final RepositoryLocationResolver repositoryLocationResolver; private final RepositoryLocationResolver repositoryLocationResolver;
private final InitialRepositoryLocationResolver initialRepositoryLocationResolver;
public AbstractSimpleRepositoryHandler(ConfigurationStoreFactory storeFactory, public AbstractSimpleRepositoryHandler(ConfigurationStoreFactory storeFactory,
FileSystem fileSystem, RepositoryLocationResolver repositoryLocationResolver) { FileSystem fileSystem,
RepositoryLocationResolver repositoryLocationResolver,
InitialRepositoryLocationResolver initialRepositoryLocationResolver) {
super(storeFactory); super(storeFactory);
this.fileSystem = fileSystem; this.fileSystem = fileSystem;
this.repositoryLocationResolver = repositoryLocationResolver; this.repositoryLocationResolver = repositoryLocationResolver;
this.initialRepositoryLocationResolver = initialRepositoryLocationResolver;
} }
@Override @Override
@@ -159,7 +163,7 @@ public abstract class AbstractSimpleRepositoryHandler<C extends RepositoryConfig
@Override @Override
public File getInitialBaseDirectory() { public File getInitialBaseDirectory() {
return repositoryLocationResolver.getInitialBaseDirectory(); return initialRepositoryLocationResolver.getBaseDirectory();
} }
@Override @Override

View File

@@ -22,30 +22,21 @@ import java.io.IOException;
public class InitialRepositoryLocationResolver { public class InitialRepositoryLocationResolver {
public static final String DEFAULT_REPOSITORY_PATH = "repositories"; public static final String DEFAULT_REPOSITORY_PATH = "repositories";
public static final String REPOSITORIES_NATIVE_DIRECTORY = "data";
private SCMContextProvider context;
private FileSystem fileSystem;
private final SCMContextProvider context;
@Inject @Inject
public InitialRepositoryLocationResolver(SCMContextProvider context, FileSystem fileSystem) { public InitialRepositoryLocationResolver(SCMContextProvider context) {
this.context = context; this.context = context;
this.fileSystem = fileSystem;
} }
public File getBaseDirectory() { File getBaseDirectory() {
return new File(context.getBaseDirectory(), DEFAULT_REPOSITORY_PATH); return new File(context.getBaseDirectory(), DEFAULT_REPOSITORY_PATH);
} }
public File createDirectory(Repository repository) { File getDefaultDirectory(Repository repository) {
String initialRepoFolder = getRelativeRepositoryPath(repository); String initialRepoFolder = getRelativeRepositoryPath(repository);
try { return new File(context.getBaseDirectory(), initialRepoFolder);
File directory = new File(context.getBaseDirectory(), initialRepoFolder);
fileSystem.create(directory);
return directory;
} catch (IOException e) {
throw new InternalRepositoryException(repository, "Cannot create repository directory for " + repository.getNamespaceAndName(), e);
}
} }
public String getRelativeRepositoryPath(Repository repository) { public String getRelativeRepositoryPath(Repository repository) {

View File

@@ -4,9 +4,6 @@ import groovy.lang.Singleton;
import javax.inject.Inject; import javax.inject.Inject;
import java.io.File; import java.io.File;
import java.io.IOException;
import static sonia.scm.repository.InitialRepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY;
/** /**
* *
@@ -24,6 +21,7 @@ import static sonia.scm.repository.InitialRepositoryLocationResolver.REPOSITORIE
@Singleton @Singleton
public class RepositoryLocationResolver { public class RepositoryLocationResolver {
private static final String REPOSITORIES_NATIVE_DIRECTORY = "data";
private RepositoryDAO repositoryDAO; private RepositoryDAO repositoryDAO;
private InitialRepositoryLocationResolver initialRepositoryLocationResolver; private InitialRepositoryLocationResolver initialRepositoryLocationResolver;
@@ -33,22 +31,12 @@ public class RepositoryLocationResolver {
this.initialRepositoryLocationResolver = initialRepositoryLocationResolver; this.initialRepositoryLocationResolver = initialRepositoryLocationResolver;
} }
/**
* Get the current repository directory from the dao or create the initial directory if the repository does not exists
* @param repository
* @return the current repository directory from the dao or the initial directory if the repository does not exists
* @throws IOException
*/
public File getRepositoryDirectory(Repository repository){ public File getRepositoryDirectory(Repository repository){
if (repositoryDAO instanceof PathBasedRepositoryDAO) { if (repositoryDAO instanceof PathBasedRepositoryDAO) {
PathBasedRepositoryDAO pathBasedRepositoryDAO = (PathBasedRepositoryDAO) repositoryDAO; PathBasedRepositoryDAO pathBasedRepositoryDAO = (PathBasedRepositoryDAO) repositoryDAO;
return pathBasedRepositoryDAO.getPath(repository).toFile(); return pathBasedRepositoryDAO.getPath(repository).toFile();
} }
return initialRepositoryLocationResolver.createDirectory(repository); return initialRepositoryLocationResolver.getDefaultDirectory(repository);
}
public File getInitialBaseDirectory() {
return initialRepositoryLocationResolver.getBaseDirectory();
} }
public File getNativeDirectory(Repository repository) { public File getNativeDirectory(Repository repository) {

View File

@@ -83,7 +83,7 @@ public final class RepositoryUtil {
"repository path %s is not in the main repository path %s", path, basePath "repository path %s is not in the main repository path %s", path, basePath
); );
String id = IOUtil.trimSeperatorChars(path.substring(basePath.length()).replace(InitialRepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY, "")); String id = IOUtil.trimSeperatorChars(path.substring(basePath.length()).replace(RepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY, ""));
Preconditions.checkArgument( Preconditions.checkArgument(
!id.contains("\\") && !id.contains("/"), !id.contains("\\") && !id.contains("/"),

View File

@@ -8,7 +8,6 @@ import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner; import org.mockito.junit.MockitoJUnitRunner;
import sonia.scm.SCMContextProvider; import sonia.scm.SCMContextProvider;
import sonia.scm.io.DefaultFileSystem;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -31,13 +30,12 @@ public class InitialRepositoryLocationResolverTest {
} }
@Test @Test
public void x() { public void shouldCreateInitialDirectory() {
InitialRepositoryLocationResolver resolver = new InitialRepositoryLocationResolver(context, new DefaultFileSystem()); InitialRepositoryLocationResolver resolver = new InitialRepositoryLocationResolver(context);
Repository repository = new Repository(); Repository repository = new Repository();
repository.setId("ABC"); repository.setId("ABC");
File directory = resolver.createDirectory(repository); File directory = resolver.getDefaultDirectory(repository);
assertThat(directory).isEqualTo(new File(context.getBaseDirectory(), "repositories/ABC")); assertThat(directory).isEqualTo(new File(context.getBaseDirectory(), "repositories/ABC"));
assertThat(context.getBaseDirectory().exists()).isTrue();
} }
} }

View File

@@ -48,7 +48,7 @@ public class XmlRepositoryDAOTest {
@Test @Test
public void addShouldCreateNewRepositoryPathWithRelativePath() { public void addShouldCreateNewRepositoryPathWithRelativePath() {
InitialRepositoryLocationResolver initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(context, null); InitialRepositoryLocationResolver initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(context);
XmlRepositoryDAO dao = new XmlRepositoryDAO(storeFactory, initialRepositoryLocationResolver, context); XmlRepositoryDAO dao = new XmlRepositoryDAO(storeFactory, initialRepositoryLocationResolver, context);
dao.add(new Repository("id", null, null, null)); dao.add(new Repository("id", null, null, null));
@@ -67,7 +67,7 @@ public class XmlRepositoryDAOTest {
RepositoryPath repositoryPath = new RepositoryPath("/path", "id", oldRepository); RepositoryPath repositoryPath = new RepositoryPath("/path", "id", oldRepository);
when(db.getPaths()).thenReturn(asList(repositoryPath)); when(db.getPaths()).thenReturn(asList(repositoryPath));
XmlRepositoryDAO dao = new XmlRepositoryDAO(storeFactory, new InitialRepositoryLocationResolver(context, null), context); XmlRepositoryDAO dao = new XmlRepositoryDAO(storeFactory, new InitialRepositoryLocationResolver(context), context);
Repository newRepository = new Repository("id", "new", null, null); Repository newRepository = new Repository("id", "new", null, null);
dao.modify(newRepository); dao.modify(newRepository);
@@ -82,7 +82,7 @@ public class XmlRepositoryDAOTest {
RepositoryPath repositoryPath = new RepositoryPath("path", "id", existingRepository); RepositoryPath repositoryPath = new RepositoryPath("path", "id", existingRepository);
when(db.getPaths()).thenReturn(asList(repositoryPath)); when(db.getPaths()).thenReturn(asList(repositoryPath));
XmlRepositoryDAO dao = new XmlRepositoryDAO(storeFactory, new InitialRepositoryLocationResolver(context, null), context); XmlRepositoryDAO dao = new XmlRepositoryDAO(storeFactory, new InitialRepositoryLocationResolver(context), context);
Path path = dao.getPath(existingRepository); Path path = dao.getPath(existingRepository);
@@ -95,7 +95,7 @@ public class XmlRepositoryDAOTest {
RepositoryPath repositoryPath = new RepositoryPath("/tmp/path", "id", existingRepository); RepositoryPath repositoryPath = new RepositoryPath("/tmp/path", "id", existingRepository);
when(db.getPaths()).thenReturn(asList(repositoryPath)); when(db.getPaths()).thenReturn(asList(repositoryPath));
XmlRepositoryDAO dao = new XmlRepositoryDAO(storeFactory, new InitialRepositoryLocationResolver(context, null), context); XmlRepositoryDAO dao = new XmlRepositoryDAO(storeFactory, new InitialRepositoryLocationResolver(context), context);
Path path = dao.getPath(existingRepository); Path path = dao.getPath(existingRepository);
@@ -106,7 +106,7 @@ public class XmlRepositoryDAOTest {
public void shouldGetPathForNewRepository() { public void shouldGetPathForNewRepository() {
when(db.getPaths()).thenReturn(emptyList()); when(db.getPaths()).thenReturn(emptyList());
InitialRepositoryLocationResolver initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(context, null); InitialRepositoryLocationResolver initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(context);
XmlRepositoryDAO dao = new XmlRepositoryDAO(storeFactory, initialRepositoryLocationResolver, context); XmlRepositoryDAO dao = new XmlRepositoryDAO(storeFactory, initialRepositoryLocationResolver, context);
Repository newRepository = new Repository("id", "new", null, null); Repository newRepository = new Repository("id", "new", null, null);

View File

@@ -107,9 +107,14 @@ public class GitRepositoryHandler
* @param repositoryLocationResolver * @param repositoryLocationResolver
*/ */
@Inject @Inject
public GitRepositoryHandler(ConfigurationStoreFactory storeFactory, FileSystem fileSystem, Scheduler scheduler, RepositoryLocationResolver repositoryLocationResolver, GitWorkdirFactory workdirFactory) public GitRepositoryHandler(ConfigurationStoreFactory storeFactory,
FileSystem fileSystem,
Scheduler scheduler,
RepositoryLocationResolver repositoryLocationResolver,
InitialRepositoryLocationResolver initialRepositoryLocationResolver,
GitWorkdirFactory workdirFactory)
{ {
super(storeFactory, fileSystem, repositoryLocationResolver); super(storeFactory, fileSystem, repositoryLocationResolver, initialRepositoryLocationResolver);
this.scheduler = scheduler; this.scheduler = scheduler;
this.workdirFactory = workdirFactory; this.workdirFactory = workdirFactory;
} }

View File

@@ -64,6 +64,7 @@ public class GitRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
private GitWorkdirFactory gitWorkdirFactory; private GitWorkdirFactory gitWorkdirFactory;
RepositoryLocationResolver repositoryLocationResolver; RepositoryLocationResolver repositoryLocationResolver;
private InitialRepositoryLocationResolver initialRepositoryLocationResolver;
@Override @Override
@@ -90,10 +91,10 @@ public class GitRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
File directory) { File directory) {
DefaultFileSystem fileSystem = new DefaultFileSystem(); DefaultFileSystem fileSystem = new DefaultFileSystem();
InitialRepositoryLocationResolver initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(contextProvider, fileSystem); initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(contextProvider);
repositoryLocationResolver = new RepositoryLocationResolver(repoDao, initialRepositoryLocationResolver); repositoryLocationResolver = new RepositoryLocationResolver(repoDao, initialRepositoryLocationResolver);
GitRepositoryHandler repositoryHandler = new GitRepositoryHandler(factory, GitRepositoryHandler repositoryHandler = new GitRepositoryHandler(factory,
fileSystem, scheduler, repositoryLocationResolver, gitWorkdirFactory); fileSystem, scheduler, repositoryLocationResolver, initialRepositoryLocationResolver, gitWorkdirFactory);
repositoryHandler.init(contextProvider); repositoryHandler.init(contextProvider);
GitConfig config = new GitConfig(); GitConfig config = new GitConfig();
@@ -107,7 +108,7 @@ public class GitRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
@Test @Test
public void getDirectory() { public void getDirectory() {
GitRepositoryHandler repositoryHandler = new GitRepositoryHandler(factory, GitRepositoryHandler repositoryHandler = new GitRepositoryHandler(factory,
new DefaultFileSystem(), scheduler, repositoryLocationResolver, gitWorkdirFactory); new DefaultFileSystem(), scheduler, repositoryLocationResolver, initialRepositoryLocationResolver, gitWorkdirFactory);
GitConfig config = new GitConfig(); GitConfig config = new GitConfig();
config.setDisabled(false); config.setDisabled(false);
config.setGcExpression("gc exp"); config.setGcExpression("gc exp");
@@ -116,6 +117,6 @@ public class GitRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
initRepository(); initRepository();
File path = repositoryHandler.getDirectory(repository); File path = repositoryHandler.getDirectory(repository);
assertEquals(repoPath.toString() + File.separator + InitialRepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY, path.getAbsolutePath()); assertEquals(repoPath.toString() + File.separator + RepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY, path.getAbsolutePath());
} }
} }

View File

@@ -44,19 +44,13 @@ import sonia.scm.ConfigurationException;
import sonia.scm.SCMContextProvider; import sonia.scm.SCMContextProvider;
import sonia.scm.installer.HgInstaller; import sonia.scm.installer.HgInstaller;
import sonia.scm.installer.HgInstallerFactory; import sonia.scm.installer.HgInstallerFactory;
import sonia.scm.io.DirectoryFileFilter;
import sonia.scm.io.ExtendedCommand; import sonia.scm.io.ExtendedCommand;
import sonia.scm.io.FileSystem; import sonia.scm.io.FileSystem;
import sonia.scm.io.INIConfiguration;
import sonia.scm.io.INIConfigurationReader;
import sonia.scm.io.INIConfigurationWriter;
import sonia.scm.io.INISection;
import sonia.scm.plugin.Extension; import sonia.scm.plugin.Extension;
import sonia.scm.repository.spi.HgRepositoryServiceProvider; import sonia.scm.repository.spi.HgRepositoryServiceProvider;
import sonia.scm.store.ConfigurationStoreFactory; import sonia.scm.store.ConfigurationStoreFactory;
import sonia.scm.util.IOUtil; import sonia.scm.util.IOUtil;
import sonia.scm.util.SystemUtil; import sonia.scm.util.SystemUtil;
import sonia.scm.util.Util;
import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException; import javax.xml.bind.JAXBException;
@@ -117,10 +111,13 @@ public class HgRepositoryHandler
* @param repositoryLocationResolver * @param repositoryLocationResolver
*/ */
@Inject @Inject
public HgRepositoryHandler(ConfigurationStoreFactory storeFactory, FileSystem fileSystem, public HgRepositoryHandler(ConfigurationStoreFactory storeFactory,
Provider<HgContext> hgContextProvider, RepositoryLocationResolver repositoryLocationResolver) FileSystem fileSystem,
Provider<HgContext> hgContextProvider,
RepositoryLocationResolver repositoryLocationResolver,
InitialRepositoryLocationResolver initialRepositoryLocationResolver)
{ {
super(storeFactory, fileSystem, repositoryLocationResolver); super(storeFactory, fileSystem, repositoryLocationResolver, initialRepositoryLocationResolver);
this.hgContextProvider = hgContextProvider; this.hgContextProvider = hgContextProvider;
try try

View File

@@ -60,7 +60,8 @@ public class HgRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
@Mock @Mock
private com.google.inject.Provider<HgContext> provider; private com.google.inject.Provider<HgContext> provider;
RepositoryLocationResolver repositoryLocationResolver; private RepositoryLocationResolver repositoryLocationResolver;
private InitialRepositoryLocationResolver initialRepositoryLocationResolver;
@Override @Override
protected void checkDirectory(File directory) { protected void checkDirectory(File directory) {
@@ -73,11 +74,11 @@ public class HgRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
@Override @Override
protected RepositoryHandler createRepositoryHandler(ConfigurationStoreFactory factory, protected RepositoryHandler createRepositoryHandler(ConfigurationStoreFactory factory,
File directory) { File directory) {
DefaultFileSystem fileSystem = new DefaultFileSystem(); initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(contextProvider);
repositoryLocationResolver = new RepositoryLocationResolver(repoDao, new InitialRepositoryLocationResolver(contextProvider, fileSystem)); repositoryLocationResolver = new RepositoryLocationResolver(repoDao, initialRepositoryLocationResolver);
HgRepositoryHandler handler = new HgRepositoryHandler(factory, HgRepositoryHandler handler = new HgRepositoryHandler(factory,
new DefaultFileSystem(), new DefaultFileSystem(),
new HgContextProvider(), repositoryLocationResolver); new HgContextProvider(), repositoryLocationResolver, initialRepositoryLocationResolver);
handler.init(contextProvider); handler.init(contextProvider);
HgTestUtil.checkForSkip(handler); HgTestUtil.checkForSkip(handler);
@@ -88,7 +89,7 @@ public class HgRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
@Test @Test
public void getDirectory() { public void getDirectory() {
HgRepositoryHandler repositoryHandler = new HgRepositoryHandler(factory, HgRepositoryHandler repositoryHandler = new HgRepositoryHandler(factory,
new DefaultFileSystem(), provider, repositoryLocationResolver); new DefaultFileSystem(), provider, repositoryLocationResolver, initialRepositoryLocationResolver);
HgConfig hgConfig = new HgConfig(); HgConfig hgConfig = new HgConfig();
hgConfig.setHgBinary("hg"); hgConfig.setHgBinary("hg");
@@ -97,6 +98,6 @@ public class HgRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
initRepository(); initRepository();
File path = repositoryHandler.getDirectory(repository); File path = repositoryHandler.getDirectory(repository);
assertEquals(repoPath.toString() + File.separator + InitialRepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY, path.getAbsolutePath()); assertEquals(repoPath.toString() + File.separator + RepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY, path.getAbsolutePath());
} }
} }

View File

@@ -105,10 +105,11 @@ public final class HgTestUtil
FileSystem fileSystem = mock(FileSystem.class); FileSystem fileSystem = mock(FileSystem.class);
PathBasedRepositoryDAO repoDao = mock(PathBasedRepositoryDAO.class); PathBasedRepositoryDAO repoDao = mock(PathBasedRepositoryDAO.class);
RepositoryLocationResolver repositoryLocationResolver = new RepositoryLocationResolver(repoDao, new InitialRepositoryLocationResolver(context,fileSystem)); InitialRepositoryLocationResolver initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(context);
RepositoryLocationResolver repositoryLocationResolver = new RepositoryLocationResolver(repoDao, initialRepositoryLocationResolver);
HgRepositoryHandler handler = HgRepositoryHandler handler =
new HgRepositoryHandler(new InMemoryConfigurationStoreFactory(), fileSystem, new HgRepositoryHandler(new InMemoryConfigurationStoreFactory(), fileSystem,
new HgContextProvider(), repositoryLocationResolver); new HgContextProvider(), repositoryLocationResolver, initialRepositoryLocationResolver);
Path repoDir = directory.toPath(); Path repoDir = directory.toPath();
when(repoDao.getPath(any())).thenReturn(repoDir); when(repoDao.getPath(any())).thenReturn(repoDir);
handler.init(context); handler.init(context);

View File

@@ -86,10 +86,13 @@ public class SvnRepositoryHandler
LoggerFactory.getLogger(SvnRepositoryHandler.class); LoggerFactory.getLogger(SvnRepositoryHandler.class);
@Inject @Inject
public SvnRepositoryHandler(ConfigurationStoreFactory storeFactory, FileSystem fileSystem, public SvnRepositoryHandler(ConfigurationStoreFactory storeFactory,
HookEventFacade eventFacade, RepositoryLocationResolver repositoryLocationResolver) FileSystem fileSystem,
HookEventFacade eventFacade,
RepositoryLocationResolver repositoryLocationResolver,
InitialRepositoryLocationResolver initialRepositoryLocationResolver)
{ {
super(storeFactory, fileSystem, repositoryLocationResolver); super(storeFactory, fileSystem, repositoryLocationResolver, initialRepositoryLocationResolver);
// register logger // register logger
SVNDebugLog.setDefaultLog(new SVNKitLogger()); SVNDebugLog.setDefaultLog(new SVNKitLogger());

View File

@@ -43,7 +43,6 @@ import sonia.scm.store.ConfigurationStore;
import sonia.scm.store.ConfigurationStoreFactory; import sonia.scm.store.ConfigurationStoreFactory;
import java.io.File; import java.io.File;
import java.nio.file.Path;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
@@ -73,7 +72,8 @@ public class SvnRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
private HookEventFacade facade = new HookEventFacade(repositoryManagerProvider, hookContextFactory); private HookEventFacade facade = new HookEventFacade(repositoryManagerProvider, hookContextFactory);
RepositoryLocationResolver repositoryLocationResolver ; private RepositoryLocationResolver repositoryLocationResolver;
private InitialRepositoryLocationResolver initialRepositoryLocationResolver;
@Override @Override
protected void checkDirectory(File directory) { protected void checkDirectory(File directory) {
@@ -91,10 +91,9 @@ public class SvnRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
@Override @Override
protected RepositoryHandler createRepositoryHandler(ConfigurationStoreFactory factory, protected RepositoryHandler createRepositoryHandler(ConfigurationStoreFactory factory,
File directory) { File directory) {
DefaultFileSystem fileSystem = new DefaultFileSystem(); initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(contextProvider);
repositoryLocationResolver = new RepositoryLocationResolver(repoDao, new InitialRepositoryLocationResolver(contextProvider,fileSystem)); repositoryLocationResolver = new RepositoryLocationResolver(repoDao, initialRepositoryLocationResolver);
SvnRepositoryHandler handler = new SvnRepositoryHandler(factory, SvnRepositoryHandler handler = new SvnRepositoryHandler(factory, new DefaultFileSystem(), null, repositoryLocationResolver, initialRepositoryLocationResolver);
new DefaultFileSystem(), null, repositoryLocationResolver);
handler.init(contextProvider); handler.init(contextProvider);
@@ -110,13 +109,13 @@ public class SvnRepositoryHandlerTest extends SimpleRepositoryHandlerTestBase {
public void getDirectory() { public void getDirectory() {
when(factory.getStore(any(), any())).thenReturn(store); when(factory.getStore(any(), any())).thenReturn(store);
SvnRepositoryHandler repositoryHandler = new SvnRepositoryHandler(factory, SvnRepositoryHandler repositoryHandler = new SvnRepositoryHandler(factory,
new DefaultFileSystem(), facade, repositoryLocationResolver); new DefaultFileSystem(), facade, repositoryLocationResolver, initialRepositoryLocationResolver);
SvnConfig svnConfig = new SvnConfig(); SvnConfig svnConfig = new SvnConfig();
repositoryHandler.setConfig(svnConfig); repositoryHandler.setConfig(svnConfig);
initRepository(); initRepository();
File path = repositoryHandler.getDirectory(repository); File path = repositoryHandler.getDirectory(repository);
assertEquals(repoPath.toString()+File.separator+InitialRepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY, path.getAbsolutePath()); assertEquals(repoPath.toString()+File.separator+ RepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY, path.getAbsolutePath());
} }
} }

View File

@@ -59,8 +59,8 @@ public class DummyRepositoryHandler
private final Set<String> existingRepoNames = new HashSet<>(); private final Set<String> existingRepoNames = new HashSet<>();
public DummyRepositoryHandler(ConfigurationStoreFactory storeFactory, RepositoryLocationResolver repositoryLocationResolver) { public DummyRepositoryHandler(ConfigurationStoreFactory storeFactory, RepositoryLocationResolver repositoryLocationResolver, InitialRepositoryLocationResolver initialRepositoryLocationResolver) {
super(storeFactory, new DefaultFileSystem(), repositoryLocationResolver); super(storeFactory, new DefaultFileSystem(), repositoryLocationResolver, initialRepositoryLocationResolver);
} }
@Override @Override

View File

@@ -126,7 +126,7 @@ public abstract class SimpleRepositoryHandlerTestBase extends AbstractTestBase {
File repoDirectory = new File(baseDirectory, repository.getId()); File repoDirectory = new File(baseDirectory, repository.getId());
repoPath = repoDirectory.toPath(); repoPath = repoDirectory.toPath();
when(repoDao.getPath(repository)).thenReturn(repoPath); when(repoDao.getPath(repository)).thenReturn(repoPath);
return new File(repoDirectory, InitialRepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY); return new File(repoDirectory, RepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY);
} }
protected File baseDirectory; protected File baseDirectory;

View File

@@ -434,17 +434,17 @@ public class DefaultRepositoryManagerTest extends ManagerTestBase<Repository> {
DefaultFileSystem fileSystem = new DefaultFileSystem(); DefaultFileSystem fileSystem = new DefaultFileSystem();
Set<RepositoryHandler> handlerSet = new HashSet<>(); Set<RepositoryHandler> handlerSet = new HashSet<>();
ConfigurationStoreFactory factory = new JAXBConfigurationStoreFactory(contextProvider); ConfigurationStoreFactory factory = new JAXBConfigurationStoreFactory(contextProvider);
InitialRepositoryLocationResolver initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(contextProvider, fileSystem); InitialRepositoryLocationResolver initialRepositoryLocationResolver = new InitialRepositoryLocationResolver(contextProvider);
XmlRepositoryDAO repositoryDAO = new XmlRepositoryDAO(factory, initialRepositoryLocationResolver, contextProvider); XmlRepositoryDAO repositoryDAO = new XmlRepositoryDAO(factory, initialRepositoryLocationResolver, contextProvider);
RepositoryLocationResolver repositoryLocationResolver = new RepositoryLocationResolver(repositoryDAO, initialRepositoryLocationResolver); RepositoryLocationResolver repositoryLocationResolver = new RepositoryLocationResolver(repositoryDAO, initialRepositoryLocationResolver);
handlerSet.add(new DummyRepositoryHandler(factory, repositoryLocationResolver)); handlerSet.add(new DummyRepositoryHandler(factory, repositoryLocationResolver, initialRepositoryLocationResolver));
handlerSet.add(new DummyRepositoryHandler(factory, repositoryLocationResolver) { handlerSet.add(new DummyRepositoryHandler(factory, repositoryLocationResolver, initialRepositoryLocationResolver) {
@Override @Override
public RepositoryType getType() { public RepositoryType getType() {
return new RepositoryType("hg", "Mercurial", Sets.newHashSet()); return new RepositoryType("hg", "Mercurial", Sets.newHashSet());
} }
}); });
handlerSet.add(new DummyRepositoryHandler(factory, repositoryLocationResolver) { handlerSet.add(new DummyRepositoryHandler(factory, repositoryLocationResolver, initialRepositoryLocationResolver) {
@Override @Override
public RepositoryType getType() { public RepositoryType getType() {
return new RepositoryType("git", "Git", Sets.newHashSet()); return new RepositoryType("git", "Git", Sets.newHashSet());