Browse Source

Merge changes If98b0b97,I7c9c09b4

* changes:
  Add convenience factory method for most used builder pattern
  Don't use internal type FileRepository in public API
stable-3.0
Shawn Pearce 12 years ago committed by Gerrit Code Review @ Eclipse.org
parent
commit
9aee4e0a26
  1. 10
      org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/JGitTestUtil.java
  2. 7
      org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileRepositoryBuilderTest.java
  3. 14
      org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RepositorySetupWorkDirTest.java
  4. 23
      org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java
  5. 20
      org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepositoryBuilder.java

10
org.eclipse.jgit.junit/src/org/eclipse/jgit/junit/JGitTestUtil.java

@ -54,7 +54,7 @@ import java.lang.reflect.Method;
import java.net.URISyntaxException;
import java.net.URL;
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.util.FileUtils;
import org.eclipse.jgit.util.IO;
import org.eclipse.jgit.util.RawParseUtils;
@ -135,14 +135,14 @@ public abstract class JGitTestUtil {
return JGitTestUtil.class.getClassLoader();
}
public static File writeTrashFile(final FileRepository db,
public static File writeTrashFile(final Repository db,
final String name, final String data) throws IOException {
File path = new File(db.getWorkTree(), name);
write(path, data);
return path;
}
public static File writeTrashFile(final FileRepository db,
public static File writeTrashFile(final Repository db,
final String subdir,
final String name, final String data) throws IOException {
File path = new File(db.getWorkTree() + "/" + subdir, name);
@ -190,13 +190,13 @@ public abstract class JGitTestUtil {
return new String(body, 0, body.length, "UTF-8");
}
public static String read(final FileRepository db, final String name)
public static String read(final Repository db, final String name)
throws IOException {
File file = new File(db.getWorkTree(), name);
return read(file);
}
public static void deleteTrashFile(final FileRepository db,
public static void deleteTrashFile(final Repository db,
final String name) throws IOException {
File path = new File(db.getWorkTree(), name);
FileUtils.delete(path);

7
org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/FileRepositoryBuilderTest.java

@ -55,6 +55,7 @@ import java.io.IOException;
import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase;
import org.eclipse.jgit.lib.ConfigConstants;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
import org.eclipse.jgit.util.FileUtils;
@ -126,7 +127,7 @@ public class FileRepositoryBuilderTest extends LocalDiskRepositoryTestCase {
builder.setWorkTree(dir);
builder.setMustExist(true);
FileRepository repo2 = builder.build();
Repository repo2 = builder.build();
assertEquals(repo1.getDirectory(), repo2.getDirectory());
assertEquals(dir, repo2.getWorkTree());
@ -145,7 +146,7 @@ public class FileRepositoryBuilderTest extends LocalDiskRepositoryTestCase {
FileRepositoryBuilder builder = new FileRepositoryBuilder();
builder.setWorkTree(dir);
builder.setMustExist(true);
FileRepository repo2 = builder.build();
Repository repo2 = builder.build();
assertEquals(repo1.getDirectory(), repo2.getDirectory());
assertEquals(dir, repo2.getWorkTree());
@ -165,7 +166,7 @@ public class FileRepositoryBuilderTest extends LocalDiskRepositoryTestCase {
builder.findGitDir(dir);
assertEquals(repo1.getDirectory(), builder.getGitDir());
builder.setMustExist(true);
FileRepository repo2 = builder.build();
Repository repo2 = builder.build();
assertEquals(repo1.getDirectory(), repo2.getDirectory());
assertEquals(dir, repo2.getWorkTree());

14
org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/RepositorySetupWorkDirTest.java

@ -97,7 +97,8 @@ public class RepositorySetupWorkDirTest extends LocalDiskRepositoryTestCase {
@Test
public void testNotBare_CreateRepositoryFromWorkDirOnly() throws Exception {
File workdir = getFile("workdir", "repo");
FileRepository repo = new FileRepositoryBuilder().setWorkTree(workdir).build();
Repository repo = new FileRepositoryBuilder().setWorkTree(workdir)
.build();
assertFalse(repo.isBare());
assertWorkdirPath(repo, "workdir", "repo");
assertGitdirPath(repo, "workdir", "repo", Constants.DOT_GIT);
@ -107,7 +108,8 @@ public class RepositorySetupWorkDirTest extends LocalDiskRepositoryTestCase {
public void testWorkdirIsDotGit_CreateRepositoryFromWorkDirOnly()
throws Exception {
File workdir = getFile("workdir", "repo");
FileRepository repo = new FileRepositoryBuilder().setWorkTree(workdir).build();
Repository repo = new FileRepositoryBuilder().setWorkTree(workdir)
.build();
assertGitdirPath(repo, "workdir", "repo", Constants.DOT_GIT);
}
@ -117,7 +119,7 @@ public class RepositorySetupWorkDirTest extends LocalDiskRepositoryTestCase {
File gitDir = getFile("workdir", "repoWithConfig");
File workTree = getFile("workdir", "treeRoot");
setWorkTree(gitDir, workTree);
FileRepository repo = new FileRepositoryBuilder().setGitDir(gitDir).build();
Repository repo = new FileRepositoryBuilder().setGitDir(gitDir).build();
assertFalse(repo.isBare());
assertWorkdirPath(repo, "workdir", "treeRoot");
assertGitdirPath(repo, "workdir", "repoWithConfig");
@ -128,7 +130,7 @@ public class RepositorySetupWorkDirTest extends LocalDiskRepositoryTestCase {
throws Exception {
File gitDir = getFile("workdir", "repoWithConfig");
setBare(gitDir, true);
FileRepository repo = new FileRepositoryBuilder().setGitDir(gitDir).build();
Repository repo = new FileRepositoryBuilder().setGitDir(gitDir).build();
assertTrue(repo.isBare());
}
@ -137,7 +139,7 @@ public class RepositorySetupWorkDirTest extends LocalDiskRepositoryTestCase {
throws Exception {
File gitDir = getFile("workdir", "repoWithBareConfigTrue", "child");
setBare(gitDir, false);
FileRepository repo = new FileRepositoryBuilder().setGitDir(gitDir).build();
Repository repo = new FileRepositoryBuilder().setGitDir(gitDir).build();
assertWorkdirPath(repo, "workdir", "repoWithBareConfigTrue");
}
@ -146,7 +148,7 @@ public class RepositorySetupWorkDirTest extends LocalDiskRepositoryTestCase {
throws Exception {
File gitDir = getFile("workdir", "repoWithBareConfigFalse", "child");
setBare(gitDir, false);
FileRepository repo = new FileRepositoryBuilder().setGitDir(gitDir).build();
Repository repo = new FileRepositoryBuilder().setGitDir(gitDir).build();
assertFalse(repo.isBare());
assertWorkdirPath(repo, "workdir", "repoWithBareConfigFalse");
assertGitdirPath(repo, "workdir", "repoWithBareConfigFalse", "child");

23
org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java

@ -140,8 +140,8 @@ public class T0003_BasicTest extends SampleDataRepositoryTestCase {
repo1initial.close();
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = new FileRepositoryBuilder().setGitDir(theDir)
.build();
FileRepository r = (FileRepository) new FileRepositoryBuilder()
.setGitDir(theDir).build();
assertEqualsPath(theDir, r.getDirectory());
assertEqualsPath(repo1Parent, r.getWorkTree());
assertEqualsPath(new File(theDir, "index"), r.getIndexFile());
@ -165,8 +165,9 @@ public class T0003_BasicTest extends SampleDataRepositoryTestCase {
repo1initial.close();
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = new FileRepositoryBuilder().setGitDir(theDir)
.setWorkTree(repo1Parent.getParentFile()).build();
FileRepository r = (FileRepository) new FileRepositoryBuilder()
.setGitDir(theDir).setWorkTree(repo1Parent.getParentFile())
.build();
assertEqualsPath(theDir, r.getDirectory());
assertEqualsPath(repo1Parent.getParentFile(), r.getWorkTree());
assertEqualsPath(new File(theDir, "index"), r.getIndexFile());
@ -189,8 +190,8 @@ public class T0003_BasicTest extends SampleDataRepositoryTestCase {
repo1initial.close();
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = new FileRepositoryBuilder().setWorkTree(repo1Parent)
.build();
FileRepository r = (FileRepository) new FileRepositoryBuilder()
.setWorkTree(repo1Parent).build();
assertEqualsPath(theDir, r.getDirectory());
assertEqualsPath(repo1Parent, r.getWorkTree());
assertEqualsPath(new File(theDir, "index"), r.getIndexFile());
@ -218,8 +219,8 @@ public class T0003_BasicTest extends SampleDataRepositoryTestCase {
repo1initial.close();
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = new FileRepositoryBuilder().setGitDir(theDir)
.build();
FileRepository r = (FileRepository) new FileRepositoryBuilder()
.setGitDir(theDir).build();
assertEqualsPath(theDir, r.getDirectory());
assertEqualsPath(workdir, r.getWorkTree());
assertEqualsPath(new File(theDir, "index"), r.getIndexFile());
@ -247,8 +248,8 @@ public class T0003_BasicTest extends SampleDataRepositoryTestCase {
repo1initial.close();
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = new FileRepositoryBuilder().setGitDir(theDir)
.build();
FileRepository r = (FileRepository) new FileRepositoryBuilder()
.setGitDir(theDir).build();
assertEqualsPath(theDir, r.getDirectory());
assertEqualsPath(workdir, r.getWorkTree());
assertEqualsPath(new File(theDir, "index"), r.getIndexFile());
@ -275,7 +276,7 @@ public class T0003_BasicTest extends SampleDataRepositoryTestCase {
repo1initial.close();
File theDir = new File(repo1Parent, Constants.DOT_GIT);
FileRepository r = new FileRepositoryBuilder() //
FileRepository r = (FileRepository) new FileRepositoryBuilder() //
.setGitDir(theDir).setObjectDirectory(objDir) //
.addAlternateObjectDirectory(altObjDir) //
.setIndexFile(indexFile) //

20
org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileRepositoryBuilder.java

@ -49,6 +49,7 @@ import java.io.IOException;
import org.eclipse.jgit.errors.RepositoryNotFoundException;
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.lib.BaseRepositoryBuilder;
import org.eclipse.jgit.lib.Repository;
/**
* Constructs a {@link FileRepository}.
@ -70,7 +71,7 @@ import org.eclipse.jgit.lib.BaseRepositoryBuilder;
* </pre>
*/
public class FileRepositoryBuilder extends
BaseRepositoryBuilder<FileRepositoryBuilder, FileRepository> {
BaseRepositoryBuilder<FileRepositoryBuilder, Repository> {
/**
* Create a repository matching the configuration in this builder.
* <p>
@ -86,10 +87,25 @@ public class FileRepositoryBuilder extends
* the builder's parameters.
*/
@Override
public FileRepository build() throws IOException {
public Repository build() throws IOException {
FileRepository repo = new FileRepository(setup());
if (isMustExist() && !repo.getObjectDatabase().exists())
throw new RepositoryNotFoundException(getGitDir());
return repo;
}
/**
* Convenience factory method to construct a {@link FileRepository}.
*
* @param gitDir
* {@code GIT_DIR}, the repository meta directory.
* @return a repository matching this configuration.
* @throws IOException
* the repository could not be accessed to configure the rest of
* the builder's parameters.
*/
public static Repository create(File gitDir) throws IOException {
return new FileRepositoryBuilder().setGitDir(gitDir).readEnvironment()
.build();
}
}

Loading…
Cancel
Save