Fix creation of root repository folder

The root folder has to be created with FileSystem, not only the data
directory
This commit is contained in:
René Pfeuffer
2018-11-23 13:58:39 +01:00
parent aa596af880
commit 1e655e9c97
4 changed files with 15 additions and 24 deletions

View File

@@ -86,22 +86,23 @@ public abstract class AbstractSimpleRepositoryHandler<C extends RepositoryConfig
@Override
public Repository create(Repository repository) {
File directory = initialRepositoryLocationResolver.getDefaultNativeDirectory(repository);
if (directory != null && directory.exists()) {
File repositoryRootDirectory = initialRepositoryLocationResolver.getDefaultDirectory(repository);
if (repositoryRootDirectory != null && repositoryRootDirectory.exists()) {
throw new AlreadyExistsException(repository);
}
try {
fileSystem.create(directory);
create(repository, directory);
postCreate(repository, directory);
fileSystem.create(repositoryRootDirectory);
File nativeDirectory = new File(repositoryRootDirectory, RepositoryLocationResolver.REPOSITORIES_NATIVE_DIRECTORY);
create(repository, nativeDirectory);
postCreate(repository, nativeDirectory);
return repository;
} catch (Exception ex) {
if (directory != null && directory.exists()) {
logger.warn("delete repository directory {}, because of failed repository creation", directory);
if (repositoryRootDirectory != null && repositoryRootDirectory.exists()) {
logger.warn("delete repository directory {}, because of failed repository creation", repositoryRootDirectory);
try {
fileSystem.destroy(directory);
fileSystem.destroy(repositoryRootDirectory);
} catch (IOException e) {
logger.error("Could not destroy directory", e);
logger.error("Could not destroy directory: " + repositoryRootDirectory, e);
}
}
@@ -113,17 +114,12 @@ public abstract class AbstractSimpleRepositoryHandler<C extends RepositoryConfig
@Override
public String createResourcePath(Repository repository) {
StringBuilder path = new StringBuilder("/");
path.append(getType().getName()).append("/").append(repository.getId());
return path.toString();
return "/" + getType().getName() + "/" + repository.getId();
}
@Override
public void delete(Repository repository) {
File directory = null;
directory = repositoryLocationResolver.getRepositoryDirectory(repository);
File directory = repositoryLocationResolver.getRepositoryDirectory(repository);
try {
if (directory.exists()) {
fileSystem.destroy(directory);

View File

@@ -35,11 +35,6 @@ public class InitialRepositoryLocationResolver {
return new File(context.getBaseDirectory(), initialRepoFolder);
}
File getDefaultNativeDirectory(Repository repository) {
String initialRepoFolder = getRelativeRepositoryPath(repository);
return new File(context.getBaseDirectory(), initialRepoFolder + "/data");
}
public String getRelativeRepositoryPath(Repository repository) {
return DEFAULT_REPOSITORY_PATH + File.separator + repository.getId();
}

View File

@@ -31,7 +31,7 @@ public class RepositoryLocationResolver {
this.initialRepositoryLocationResolver = initialRepositoryLocationResolver;
}
public File getRepositoryDirectory(Repository repository){
File getRepositoryDirectory(Repository repository){
if (repositoryDAO instanceof PathBasedRepositoryDAO) {
PathBasedRepositoryDAO pathBasedRepositoryDAO = (PathBasedRepositoryDAO) repositoryDAO;
return pathBasedRepositoryDAO.getPath(repository).toFile();
@@ -39,7 +39,7 @@ public class RepositoryLocationResolver {
return initialRepositoryLocationResolver.getDefaultDirectory(repository);
}
public File getNativeDirectory(Repository repository) {
File getNativeDirectory(Repository repository) {
return new File (getRepositoryDirectory(repository), REPOSITORIES_NATIVE_DIRECTORY);
}
}

View File

@@ -30,7 +30,7 @@ public class InitialRepositoryLocationResolverTest {
}
@Test
public void shouldCreateInitialDirectory() {
public void shouldComputeInitialDirectory() {
InitialRepositoryLocationResolver resolver = new InitialRepositoryLocationResolver(context);
Repository repository = new Repository();
repository.setId("ABC");