From d60cb2a3f5b6d6221107c8824356bdeab66f38b0 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Wed, 29 Jun 2011 09:54:07 -0700 Subject: [PATCH] Make lookup methods on PackIndex public There isn't a good reason to hide all of these as package-private. Make them public so applications can inspect pack files. Change-Id: Ia418daf65d63e9e015b8dafdf3d06a1ed91d190b --- .../eclipse/jgit/storage/file/PackIndex.java | 32 +++++++++++++------ .../jgit/storage/file/PackIndexV1.java | 19 ++++++----- .../jgit/storage/file/PackIndexV2.java | 17 +++++----- 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndex.java index a5a4e75a3..9b43b39ea 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndex.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndex.java @@ -183,7 +183,7 @@ public boolean hasObject(final AnyObjectId id) { * @return number of objects in this index, and likewise in the associated * pack that this index was generated from. */ - abstract long getObjectCount(); + public abstract long getObjectCount(); /** * Obtain the total number of objects needing 64 bit offsets. @@ -191,7 +191,7 @@ public boolean hasObject(final AnyObjectId id) { * @return number of objects in this index using a 64 bit offset; that is an * object positioned after the 2 GB position within the file. */ - abstract long getOffset64Count(); + public abstract long getOffset64Count(); /** * Get ObjectId for the n-th object entry returned by {@link #iterator()}. @@ -212,7 +212,7 @@ public boolean hasObject(final AnyObjectId id) { * {@link MutableEntry} is 0, the second is 1, etc. * @return the ObjectId for the corresponding entry. */ - abstract ObjectId getObjectId(long nthPosition); + public abstract ObjectId getObjectId(long nthPosition); /** * Get ObjectId for the n-th object entry returned by {@link #iterator()}. @@ -234,7 +234,7 @@ public boolean hasObject(final AnyObjectId id) { * etc. Positions past 2**31-1 are negative, but still valid. * @return the ObjectId for the corresponding entry. */ - final ObjectId getObjectId(final int nthPosition) { + public final ObjectId getObjectId(final int nthPosition) { if (nthPosition >= 0) return getObjectId((long) nthPosition); final int u31 = nthPosition >>> 1; @@ -251,7 +251,7 @@ final ObjectId getObjectId(final int nthPosition) { * object does not exist in this index and is thus not stored in the * associated pack. */ - abstract long findOffset(AnyObjectId objId); + public abstract long findOffset(AnyObjectId objId); /** * Retrieve stored CRC32 checksum of the requested object raw-data @@ -265,17 +265,31 @@ final ObjectId getObjectId(final int nthPosition) { * @throws UnsupportedOperationException * when this index doesn't support CRC32 checksum */ - abstract long findCRC32(AnyObjectId objId) throws MissingObjectException, - UnsupportedOperationException; + public abstract long findCRC32(AnyObjectId objId) + throws MissingObjectException, UnsupportedOperationException; /** * Check whether this index supports (has) CRC32 checksums for objects. * * @return true if CRC32 is stored, false otherwise */ - abstract boolean hasCRC32Support(); + public abstract boolean hasCRC32Support(); - abstract void resolve(Set matches, AbbreviatedObjectId id, + /** + * Find objects matching the prefix abbreviation. + * + * @param matches + * set to add any located ObjectIds to. This is an output + * parameter. + * @param id + * prefix to search for. + * @param matchLimit + * maximum number of results to return. At most this many + * ObjectIds should be added to matches before returning. + * @throws IOException + * the index cannot be read. + */ + public abstract void resolve(Set matches, AbbreviatedObjectId id, int matchLimit) throws IOException; /** diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndexV1.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndexV1.java index 1c682f17d..4071fb84d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndexV1.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndexV1.java @@ -98,12 +98,13 @@ class PackIndexV1 extends PackIndex { IO.readFully(fd, packChecksum, 0, packChecksum.length); } - long getObjectCount() { + @Override + public long getObjectCount() { return objectCnt; } @Override - long getOffset64Count() { + public long getOffset64Count() { long n64 = 0; for (final MutableEntry e : this) { if (e.getOffset() >= Integer.MAX_VALUE) @@ -113,7 +114,7 @@ long getOffset64Count() { } @Override - ObjectId getObjectId(final long nthPosition) { + public ObjectId getObjectId(final long nthPosition) { int levelOne = Arrays.binarySearch(idxHeader, nthPosition + 1); long base; if (levelOne >= 0) { @@ -135,7 +136,8 @@ ObjectId getObjectId(final long nthPosition) { return ObjectId.fromRaw(idxdata[levelOne], dataIdx); } - long findOffset(final AnyObjectId objId) { + @Override + public long findOffset(final AnyObjectId objId) { final int levelOne = objId.getFirstByte(); byte[] data = idxdata[levelOne]; if (data == null) @@ -161,22 +163,23 @@ else if (cmp == 0) { } @Override - long findCRC32(AnyObjectId objId) { + public long findCRC32(AnyObjectId objId) { throw new UnsupportedOperationException(); } @Override - boolean hasCRC32Support() { + public boolean hasCRC32Support() { return false; } + @Override public Iterator iterator() { return new IndexV1Iterator(); } @Override - void resolve(Set matches, AbbreviatedObjectId id, int matchLimit) - throws IOException { + public void resolve(Set matches, AbbreviatedObjectId id, + int matchLimit) throws IOException { byte[] data = idxdata[id.getFirstByte()]; if (data == null) return; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndexV2.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndexV2.java index abc876766..44a4044ac 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndexV2.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackIndexV2.java @@ -161,17 +161,17 @@ class PackIndexV2 extends PackIndex { } @Override - long getObjectCount() { + public long getObjectCount() { return objectCnt; } @Override - long getOffset64Count() { + public long getOffset64Count() { return offset64.length / 8; } @Override - ObjectId getObjectId(final long nthPosition) { + public ObjectId getObjectId(final long nthPosition) { int levelOne = Arrays.binarySearch(fanoutTable, nthPosition + 1); long base; if (levelOne >= 0) { @@ -194,7 +194,7 @@ ObjectId getObjectId(final long nthPosition) { } @Override - long findOffset(final AnyObjectId objId) { + public long findOffset(final AnyObjectId objId) { final int levelOne = objId.getFirstByte(); final int levelTwo = binarySearchLevelTwo(objId, levelOne); if (levelTwo == -1) @@ -206,7 +206,7 @@ long findOffset(final AnyObjectId objId) { } @Override - long findCRC32(AnyObjectId objId) throws MissingObjectException { + public long findCRC32(AnyObjectId objId) throws MissingObjectException { final int levelOne = objId.getFirstByte(); final int levelTwo = binarySearchLevelTwo(objId, levelOne); if (levelTwo == -1) @@ -215,17 +215,18 @@ long findCRC32(AnyObjectId objId) throws MissingObjectException { } @Override - boolean hasCRC32Support() { + public boolean hasCRC32Support() { return true; } + @Override public Iterator iterator() { return new EntriesIteratorV2(); } @Override - void resolve(Set matches, AbbreviatedObjectId id, int matchLimit) - throws IOException { + public void resolve(Set matches, AbbreviatedObjectId id, + int matchLimit) throws IOException { int[] data = names[id.getFirstByte()]; int max = offset32[id.getFirstByte()].length >>> 2; int high = max;