From: Shawn O. Pearce Date: Mon, 18 Aug 2008 23:53:20 GMT Subject: [JGIT PATCH 12/14] Allow application code to set ObjectIds in DirCacheEntry Message-ID: <1219103602-32222-13-git-send-email-spearce@spearce.org> In-Reply-To: <1219103602-32222-12-git-send-email-spearce@spearce.org> We support setting the ObjectId both from AnyObjectId (as we copy it) and from a raw byte[] (as we are really copying into a raw byte[]). The latter form is the most efficient as it probably permits callers to avoid unnecessary conversion to some form of AnyObjectId. Signed-off-by: Shawn O. Pearce --- .../org/spearce/jgit/dircache/DirCacheEntry.java | 26 ++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-) diff --git a/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCacheEntry.java b/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCacheEntry.java index 011bc16..a83cc78 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCacheEntry.java +++ b/org.spearce.jgit/src/org/spearce/jgit/dircache/DirCacheEntry.java @@ -43,6 +43,7 @@ import java.nio.ByteBuffer; import java.util.Arrays; +import org.spearce.jgit.lib.AnyObjectId; import org.spearce.jgit.lib.Constants; import org.spearce.jgit.lib.FileMode; import org.spearce.jgit.lib.ObjectId; @@ -346,6 +347,31 @@ public ObjectId getObjectId() { } /** + * Set the ObjectId for the entry. + * + * @param id + * new object identifier for the entry. May be + * {@link ObjectId#zeroId()} to remove the current identifier. + */ + public void setObjectId(final AnyObjectId id) { + id.copyRawTo(idBuffer(), idOffset()); + } + + /** + * Set the ObjectId for the entry from the raw binary representation. + * + * @param bs + * the raw byte buffer to read from. At least 20 bytes after p + * must be available within this byte array. + * @param p + * position to read the first byte of data from. + */ + public void setObjectIdFromRaw(final byte[] bs, final int p) { + final int n = Constants.OBJECT_ID_LENGTH; + System.arraycopy(bs, p, idBuffer(), idOffset(), n); + } + + /** * Get the entry's complete path. *

* This method is not very efficient and is primarily meant for debugging -- 1.6.0.87.g2858d