Browse Source

Add insert(TreeFormatter) to ObjectInserter

This makes usage of a TreeFormatter more similar to a CommitBuilder or
a TagBuilder: populate the formatter and pass to the ObjectInserter.

Change-Id: I5a45ef3a35cc73f4905a34bc6f6228510df8eb2c
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Reviewed-by: Chris Aniszczyk <caniszczyk@gmail.com>
stable-0.10
Shawn O. Pearce 14 years ago
parent
commit
8d4c95a645
  1. 2
      org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java
  2. 16
      org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectInserter.java
  3. 4
      org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java
  4. 2
      org.eclipse.jgit/src/org/eclipse/jgit/notes/FanoutBucket.java
  5. 2
      org.eclipse.jgit/src/org/eclipse/jgit/notes/LeafBucket.java

2
org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java vendored

@ -338,7 +338,7 @@ public class DirCacheTree {
entryIdx++; entryIdx++;
} }
id = fmt.insert(ow); id = ow.insert(fmt);
} }
return id; return id;
} }

16
org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectInserter.java

@ -176,6 +176,22 @@ public abstract class ObjectInserter {
return ObjectId.fromRaw(md.digest()); return ObjectId.fromRaw(md.digest());
} }
/**
* Insert a single tree into the store, returning its unique name.
*
* @param formatter
* the formatter containing the proposed tree's data.
* @return the name of the tree object.
* @throws IOException
* the object could not be stored.
*/
public final ObjectId insert(TreeFormatter formatter) throws IOException {
// Delegate to the formatter, as then it can pass the raw internal
// buffer back to this inserter, avoiding unnecessary data copying.
//
return formatter.insertTo(this);
}
/** /**
* Insert a single commit into the store, returning its unique name. * Insert a single commit into the store, returning its unique name.
* *

4
org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java

@ -279,7 +279,7 @@ public class TreeFormatter {
* @throws IOException * @throws IOException
* the tree could not be stored. * the tree could not be stored.
*/ */
public ObjectId insert(ObjectInserter ins) throws IOException { public ObjectId insertTo(ObjectInserter ins) throws IOException {
if (buf != null) if (buf != null)
return ins.insert(OBJ_TREE, buf, 0, ptr); return ins.insert(OBJ_TREE, buf, 0, ptr);
@ -293,7 +293,7 @@ public class TreeFormatter {
* This method is not efficient, as it needs to create a copy of the * This method is not efficient, as it needs to create a copy of the
* internal buffer in order to supply an array of the correct size to the * internal buffer in order to supply an array of the correct size to the
* caller. If the buffer is just to pass to an ObjectInserter, consider * caller. If the buffer is just to pass to an ObjectInserter, consider
* using {@link #insert(ObjectInserter)} instead. * using {@link ObjectInserter#insert(TreeFormatter)} instead.
* *
* @return a copy of this formatter's buffer. * @return a copy of this formatter's buffer.
*/ */

2
org.eclipse.jgit/src/org/eclipse/jgit/notes/FanoutBucket.java

@ -254,7 +254,7 @@ class FanoutBucket extends InMemoryNoteBucket {
for (; e != null; e = e.next) for (; e != null; e = e.next)
e.format(fmt); e.format(fmt);
return fmt.insert(inserter); return inserter.insert(fmt);
} }
private int treeSize() { private int treeSize() {

2
org.eclipse.jgit/src/org/eclipse/jgit/notes/LeafBucket.java

@ -190,7 +190,7 @@ class LeafBucket extends InMemoryNoteBucket {
for (; e != null; e = e.next) for (; e != null; e = e.next)
e.format(fmt); e.format(fmt);
return fmt.insert(inserter); return inserter.insert(fmt);
} }
private int treeSize(final int nameLen) { private int treeSize(final int nameLen) {

Loading…
Cancel
Save