]> source.dussan.org Git - jgit.git/commitdiff
Expose some DFS APIs as public or protected 79/6979/2
authorShawn O. Pearce <spearce@spearce.org>
Mon, 23 Jul 2012 22:50:52 +0000 (15:50 -0700)
committerShawn O. Pearce <spearce@spearce.org>
Fri, 27 Jul 2012 13:59:32 +0000 (06:59 -0700)
Expose class DfsReader and method DfsPackFile.hasObject() as public.
Applications may want to be able to inquire about some details of
the storage of a repository. Make this possible by exposing some
simple accessor methods.

Expose method DfsObjDatabase.clearCache() as protected, allowing
implementing subclasses to dump the cache if necessary, and force
it to reload on a future request.

Change-Id: Ic592c82d45ace9f2fa5f8d7e4bacfdce96dea969

org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsObjDatabase.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsPackFile.java
org.eclipse.jgit/src/org/eclipse/jgit/storage/dfs/DfsReader.java

index b1290d955e49c484e16b5e3bddce2db11e130e0d..32244c1b0dc17173b5278a6f6d3e38346381fe57 100644 (file)
@@ -423,7 +423,8 @@ public abstract class DfsObjDatabase extends ObjectDatabase {
                return forReuse;
        }
 
-       void clearCache() {
+       /** Clears the cached list of packs, forcing them to be scanned again. */
+       protected void clearCache() {
                packList.set(NO_PACKS);
        }
 
index 419e1e8729800f1dd2964b61b1869bad5e3ca887..daad02a14beabbabf41b6936b17e29981715e6b1 100644 (file)
@@ -272,7 +272,19 @@ public final class DfsPackFile {
                }
        }
 
-       boolean hasObject(DfsReader ctx, AnyObjectId id) throws IOException {
+       /**
+        * Check if an object is stored within this pack.
+        *
+        * @param ctx
+        *            reader context to support reading from the backing store if
+        *            the index is not already loaded in memory.
+        * @param id
+        *            object to be located.
+        * @return true if the object exists in this pack; false if it does not.
+        * @throws IOException
+        *             the pack index is not available, or is corrupt.
+        */
+       public boolean hasObject(DfsReader ctx, AnyObjectId id) throws IOException {
                final long offset = idx(ctx).findOffset(id);
                return 0 < offset && !isCorrupt(offset);
        }
index 3e2a0ad5c6b68c001d34164682c7714485aca24b..6a76258ed3cf97568760086d07ce494d03d2a2c9 100644 (file)
@@ -90,7 +90,13 @@ import org.eclipse.jgit.storage.pack.PackOutputStream;
 import org.eclipse.jgit.storage.pack.PackWriter;
 import org.eclipse.jgit.util.BlockList;
 
-final class DfsReader extends ObjectReader implements ObjectReuseAsIs {
+/**
+ * Reader to access repository content through.
+ * <p>
+ * See the base {@link ObjectReader} documentation for details. Notably, a
+ * reader is not thread safe.
+ */
+public final class DfsReader extends ObjectReader implements ObjectReuseAsIs {
        /** Temporary buffer large enough for at least one raw object id. */
        final byte[] tempId = new byte[OBJECT_ID_LENGTH];