mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-02-01 04:09:08 +01:00
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:
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user