Reimplement in Java

This commit is contained in:
Paul Campbell 2018-05-12 15:57:09 +01:00
parent 9d4ea21111
commit e29f08c4f9
5 changed files with 66 additions and 42 deletions

19
pom.xml
View file

@ -9,12 +9,11 @@
<version>0.1.0-SNAPSHOT</version> <version>0.1.0-SNAPSHOT</version>
<properties> <properties>
<scala-library.version>2.12.6</scala-library.version> <java.version>8</java.version>
<scala-maven-plugin.version>3.3.2</scala-maven-plugin.version> <lombok.version>1.16.20</lombok.version>
<jgit.version>4.11.0.201803080745-r</jgit.version>
<junit.version>5.2.0</junit.version> <junit.version>5.2.0</junit.version>
<assertj.version>3.9.1</assertj.version> <assertj.version>3.9.1</assertj.version>
<jgit.version>4.11.0.201803080745-r</jgit.version>
<java.version>8</java.version>
</properties> </properties>
<dependencies> <dependencies>
@ -30,9 +29,10 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.scala-lang</groupId> <groupId>org.projectlombok</groupId>
<artifactId>scala-library</artifactId> <artifactId>lombok</artifactId>
<version>${scala-library.version}</version> <version>${lombok.version}</version>
<optional>true</optional>
</dependency> </dependency>
<dependency> <dependency>
@ -66,11 +66,6 @@
</dependencyManagement> </dependencyManagement>
<build> <build>
<plugins> <plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>${scala-maven-plugin.version}</version>
</plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>

View file

@ -0,0 +1,19 @@
package net.kemitix.gitdb;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.Repository;
import java.nio.file.Path;
public interface GitDB {
static GitDB local(Path dbDir) throws GitAPIException {
return new GitDBLocal(dbDir);
}
void close();
Repository getRepository();
Path getGitDir();
}

View file

@ -0,0 +1,32 @@
package net.kemitix.gitdb;
import lombok.Getter;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.Repository;
import java.nio.file.Path;
class GitDBLocal implements GitDB {
@Getter
private final Repository repository;
@Getter
private final Path gitDir;
GitDBLocal(final Path gitDir) throws GitAPIException {
this.gitDir = gitDir;
this.repository = Git
.init()
.setBare(true)
.setGitDir(gitDir.toFile())
.call()
.getRepository();
}
@Override
public void close() {
repository.close();
}
}

View file

@ -1,27 +0,0 @@
package net.kemitix.gitdb
import java.nio.file.Path
import org.eclipse.jgit.lib.Repository
import org.eclipse.jgit.storage.file.FileRepositoryBuilder
import scala.beans.BeanProperty
class GitDB (val dir: Path) {
@BeanProperty
val repository: Repository = {
val fileRepositoryBuilder = new FileRepositoryBuilder
fileRepositoryBuilder.setGitDir(dir.toFile)
fileRepositoryBuilder.build()
}
def close: Unit = repository.close()
}
object GitDB {
def init(dir: Path): GitDB = {
new GitDB(dir)
}
}

View file

@ -1,5 +1,6 @@
package net.kemitix.gitdb; package net.kemitix.gitdb;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.Repository;
import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -15,21 +16,25 @@ import static org.assertj.core.api.Assertions.assertThat;
class GitDBTest { class GitDBTest {
private final Path dbDir = Files.createTempDirectory("gitdb"); private final Path dbDir = Files.createTempDirectory("gitdb");
private final GitDB gitDB = GitDB.init(dbDir); private final GitDB gitDB = GitDB.local(dbDir);
GitDBTest() throws IOException { GitDBTest() throws IOException, GitAPIException {
} }
@Test @Test
void shouldInitialiseGitDB() { void shouldInitialiseGitDB() {
//then //then
assertThat(gitDB).isNotNull(); assertThat(gitDB).isNotNull();
assertThat(gitDB.dir()).isDirectory() assertThat(gitDB.getGitDir()).isDirectory()
.isEqualTo(dbDir); .isEqualTo(dbDir);
final Repository repository = gitDB.getRepository(); final Repository repository = gitDB.getRepository();
assertThat(repository.isBare()).isTrue(); assertThat(repository.isBare()).isTrue();
assertThat(repository.getObjectDatabase().exists()).isTrue();
assertThat(repository.getRefDatabase()).isNotNull();
} }
@AfterEach @AfterEach
void tearDown() throws IOException { void tearDown() throws IOException {
gitDB.close(); gitDB.close();