]> source.dussan.org Git - jgit.git/commitdiff
Do not use the deprecated Tree class internally 51/4551/3
authorRobin Rosenberg <robin.rosenberg@dewire.com>
Tue, 8 Nov 2011 21:07:59 +0000 (22:07 +0100)
committerChristian Halstrick <christian.halstrick@sap.com>
Wed, 9 Nov 2011 08:30:54 +0000 (09:30 +0100)
Replace it with DirCache, like we did to remove GitIndex.

Change-Id: Ia354770cee5c68f19945279b34aef6de54697435

org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java

index 3001880d2defb2171f577e14b8ac8db4a198752f..929753ab14c151a722e53fda41f11ac1ba6e9231 100644 (file)
@@ -63,6 +63,7 @@ import org.eclipse.jgit.dircache.DirCache;
 import org.eclipse.jgit.dircache.DirCacheCheckout;
 import org.eclipse.jgit.dircache.DirCacheEditor;
 import org.eclipse.jgit.dircache.DirCacheEntry;
+import org.eclipse.jgit.dircache.DirCacheEditor.PathEdit;
 import org.eclipse.jgit.errors.CheckoutConflictException;
 import org.eclipse.jgit.errors.CorruptObjectException;
 import org.eclipse.jgit.errors.NoWorkTreeException;
@@ -73,15 +74,15 @@ import org.junit.Test;
 
 public class DirCacheCheckoutTest extends RepositoryTestCase {
        private DirCacheCheckout dco;
-       protected Tree theHead;
-       protected Tree theMerge;
+       protected ObjectId theHead;
+       protected ObjectId theMerge;
        private DirCache dirCache;
 
-       private void prescanTwoTrees(Tree head, Tree merge)
+       private void prescanTwoTrees(ObjectId head, ObjectId merge)
                        throws IllegalStateException, IOException {
                DirCache dc = db.lockDirCache();
                try {
-                       dco = new DirCacheCheckout(db, head.getId(), dc, merge.getId());
+                       dco = new DirCacheCheckout(db, head, dc, merge);
                        dco.preScanTwoTrees();
                } finally {
                        dc.unlock();
@@ -91,7 +92,7 @@ public class DirCacheCheckoutTest extends RepositoryTestCase {
        private void checkout() throws IOException {
                DirCache dc = db.lockDirCache();
                try {
-                       dco = new DirCacheCheckout(db, theHead.getId(), dc, theMerge.getId());
+                       dco = new DirCacheCheckout(db, theHead, dc, theMerge);
                        dco.checkout();
                } finally {
                        dc.unlock();
@@ -239,10 +240,11 @@ public class DirCacheCheckoutTest extends RepositoryTestCase {
 
        @Test
        public void testRules1thru3_NoIndexEntry() throws IOException {
-               Tree head = new Tree(db);
-               head = buildTree(mk("foo"));
-               ObjectId objectId = head.findBlobMember("foo").getId();
-               Tree merge = new Tree(db);
+               ObjectId head = buildTree(mk("foo"));
+               TreeWalk tw = TreeWalk.forPath(db, "foo", head);
+               ObjectId objectId = tw.getObjectId(0);
+               ObjectId merge = db.newObjectInserter().insert(Constants.OBJ_TREE,
+                               new byte[0]);
 
                prescanTwoTrees(head, merge);
 
@@ -253,7 +255,8 @@ public class DirCacheCheckoutTest extends RepositoryTestCase {
                assertEquals(objectId, getUpdated().get("foo"));
 
                merge = buildTree(mkmap("foo", "a"));
-               ObjectId anotherId = merge.findBlobMember("foo").getId();
+               tw = TreeWalk.forPath(db, "foo", merge);
+               ObjectId anotherId = tw.getObjectId(0);
 
                prescanTwoTrees(head, merge);
 
@@ -291,28 +294,41 @@ public class DirCacheCheckoutTest extends RepositoryTestCase {
 
        }
 
-       private Tree buildTree(HashMap<String, String> headEntries) throws IOException {
-               Tree tree = new Tree(db);
-               if (headEntries == null)
-                       return tree;
-               FileTreeEntry fileEntry;
-               Tree parent;
-               ObjectInserter oi = db.newObjectInserter();
-               try {
+       static final class AddEdit extends PathEdit {
+
+               private final ObjectId data;
+
+               private final long length;
+
+               public AddEdit(String entryPath, ObjectId data, long length) {
+                       super(entryPath);
+                       this.data = data;
+                       this.length = length;
+               }
+
+               @Override
+               public void apply(DirCacheEntry ent) {
+                       ent.setFileMode(FileMode.REGULAR_FILE);
+                       ent.setLength(length);
+                       ent.setObjectId(data);
+               }
+
+       }
+
+       private ObjectId buildTree(HashMap<String, String> headEntries)
+                       throws IOException {
+               DirCache lockDirCache = DirCache.newInCore();
+               // assertTrue(lockDirCache.lock());
+               DirCacheEditor editor = lockDirCache.editor();
+               if (headEntries != null) {
                        for (java.util.Map.Entry<String, String> e : headEntries.entrySet()) {
-                               fileEntry = tree.addFile(e.getKey());
-                               fileEntry.setId(genSha1(e.getValue()));
-                               parent = fileEntry.getParent();
-                               while (parent != null) {
-                                       parent.setId(oi.insert(Constants.OBJ_TREE, parent.format()));
-                                       parent = parent.getParent();
-                               }
+                               AddEdit addEdit = new AddEdit(e.getKey(),
+                                               genSha1(e.getValue()), e.getValue().length());
+                               editor.add(addEdit);
                        }
-                       oi.flush();
-               } finally {
-                       oi.release();
                }
-               return tree;
+               editor.finish();
+               return lockDirCache.writeTree(db.newObjectInserter());
        }
 
        ObjectId genSha1(String data) {
@@ -463,8 +479,8 @@ public class DirCacheCheckoutTest extends RepositoryTestCase {
         */
        @Test
        public void testDirectoryFileSimple() throws IOException {
-               Tree treeDF = buildTree(mkmap("DF", "DF"));
-               Tree treeDFDF = buildTree(mkmap("DF/DF", "DF/DF"));
+               ObjectId treeDF = buildTree(mkmap("DF", "DF"));
+               ObjectId treeDFDF = buildTree(mkmap("DF/DF", "DF/DF"));
                buildIndex(mkmap("DF", "DF"));
 
                prescanTwoTrees(treeDF, treeDFDF);