Refactor directories in RepositoryPath and dao

This commit is contained in:
René Pfeuffer
2018-11-22 12:29:26 +01:00
parent 2694a165cc
commit 00e3cbec57
9 changed files with 218 additions and 74 deletions

View File

@@ -19,7 +19,7 @@ import java.io.IOException;
* @author Mohamed Karray
* @since 2.0.0
*/
public final class InitialRepositoryLocationResolver {
public class InitialRepositoryLocationResolver {
private static final String DEFAULT_REPOSITORY_PATH = "repositories";
public static final String REPOSITORIES_NATIVE_DIRECTORY = "data";
@@ -38,24 +38,21 @@ public final class InitialRepositoryLocationResolver {
}
public File createDirectory(Repository repository) {
File initialRepoFolder = getDirectory(getDefaultRepositoryPath(), repository);
String initialRepoFolder = getRelativeRepositoryPath(repository);
try {
fileSystem.create(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);
throw new InternalRepositoryException(repository, "Cannot create repository directory for " + repository.getNamespaceAndName(), e);
}
return initialRepoFolder;
}
public File getDirectory(String defaultRepositoryRelativePath, Repository repository) {
return new File(context.getBaseDirectory(), defaultRepositoryRelativePath + File.separator + repository.getId());
public String getRelativeRepositoryPath(Repository repository) {
return getDefaultRepositoryPath() + File.separator + repository.getId();
}
public String getDefaultRepositoryPath() {
return DEFAULT_REPOSITORY_PATH ;
}
public String getRelativePath(String absolutePath) {
return absolutePath.replaceFirst(context.getBaseDirectory().getAbsolutePath()+"/", "");
return DEFAULT_REPOSITORY_PATH;
}
}

View File

@@ -0,0 +1,43 @@
package sonia.scm.repository;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
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;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
public class InitialRepositoryLocationResolverTest {
@Mock
private SCMContextProvider context;
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Before
public void init() throws IOException {
when(context.getBaseDirectory()).thenReturn(temporaryFolder.newFolder());
}
@Test
public void x() {
InitialRepositoryLocationResolver resolver = new InitialRepositoryLocationResolver(context, new DefaultFileSystem());
Repository repository = new Repository();
repository.setId("ABC");
File directory = resolver.createDirectory(repository);
assertThat(directory).isEqualTo(new File(context.getBaseDirectory(), "repositories/ABC"));
assertThat(context.getBaseDirectory().exists()).isTrue();
}
}