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 =
LoggerFactory.getLogger(AbstractSimpleRepositoryHandler.class);
private FileSystem fileSystem;
private final FileSystem fileSystem;
private final RepositoryLocationResolver repositoryLocationResolver;
private final InitialRepositoryLocationResolver initialRepositoryLocationResolver;
public AbstractSimpleRepositoryHandler(ConfigurationStoreFactory storeFactory,
FileSystem fileSystem, RepositoryLocationResolver repositoryLocationResolver) {
FileSystem fileSystem,
RepositoryLocationResolver repositoryLocationResolver,
InitialRepositoryLocationResolver initialRepositoryLocationResolver) {
super(storeFactory);
this.fileSystem = fileSystem;
this.repositoryLocationResolver = repositoryLocationResolver;
this.initialRepositoryLocationResolver = initialRepositoryLocationResolver;
}
@Override
@@ -159,7 +163,7 @@ public abstract class AbstractSimpleRepositoryHandler<C extends RepositoryConfig
@Override
public File getInitialBaseDirectory() {
return repositoryLocationResolver.getInitialBaseDirectory();
return initialRepositoryLocationResolver.getBaseDirectory();
}
@Override

View File

@@ -22,30 +22,21 @@ import java.io.IOException;
public class InitialRepositoryLocationResolver {
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
public InitialRepositoryLocationResolver(SCMContextProvider context, FileSystem fileSystem) {
public InitialRepositoryLocationResolver(SCMContextProvider context) {
this.context = context;
this.fileSystem = fileSystem;
}
public File getBaseDirectory() {
File getBaseDirectory() {
return new File(context.getBaseDirectory(), DEFAULT_REPOSITORY_PATH);
}
public File createDirectory(Repository repository) {
File getDefaultDirectory(Repository repository) {
String initialRepoFolder = getRelativeRepositoryPath(repository);
try {
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);
}
return new File(context.getBaseDirectory(), initialRepoFolder);
}
public String getRelativeRepositoryPath(Repository repository) {

View File

@@ -4,9 +4,6 @@ import groovy.lang.Singleton;
import javax.inject.Inject;
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
public class RepositoryLocationResolver {
private static final String REPOSITORIES_NATIVE_DIRECTORY = "data";
private RepositoryDAO repositoryDAO;
private InitialRepositoryLocationResolver initialRepositoryLocationResolver;
@@ -33,22 +31,12 @@ public class RepositoryLocationResolver {
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){
if (repositoryDAO instanceof PathBasedRepositoryDAO) {
PathBasedRepositoryDAO pathBasedRepositoryDAO = (PathBasedRepositoryDAO) repositoryDAO;
return pathBasedRepositoryDAO.getPath(repository).toFile();
}
return initialRepositoryLocationResolver.createDirectory(repository);
}
public File getInitialBaseDirectory() {
return initialRepositoryLocationResolver.getBaseDirectory();
return initialRepositoryLocationResolver.getDefaultDirectory(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
);
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(
!id.contains("\\") && !id.contains("/"),

View File

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