Let dao create repository base directory before native creation

This commit is contained in:
René Pfeuffer
2018-11-23 15:04:59 +01:00
parent 1e655e9c97
commit 3d671caada
16 changed files with 75 additions and 146 deletions

View File

@@ -39,7 +39,6 @@ import com.google.inject.Singleton;
import org.apache.shiro.concurrent.SubjectAwareExecutorService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.AlreadyExistsException;
import sonia.scm.ConfigurationException;
import sonia.scm.HandlerEventType;
import sonia.scm.ManagerDaoAdapter;
@@ -138,17 +137,18 @@ public class DefaultRepositoryManager extends AbstractRepositoryManager {
return managerDaoAdapter.create(
repository,
RepositoryPermissions::create,
newRepository -> fireEvent(HandlerEventType.BEFORE_CREATE, newRepository),
newRepository -> {
fireEvent(HandlerEventType.CREATE, newRepository);
if (initRepository) {
try {
getHandler(newRepository).create(newRepository);
} catch (AlreadyExistsException e) {
throw new InternalRepositoryException(repository, "directory for repository does already exist", e);
} catch (InternalRepositoryException e) {
delete(repository);
throw e;
}
}
fireEvent(HandlerEventType.BEFORE_CREATE, newRepository);
},
newRepository -> fireEvent(HandlerEventType.CREATE, newRepository),
newRepository -> repositoryDAO.contains(newRepository.getNamespaceAndName())
);
}