summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2010-06-28 10:42:43 -0700
committerShawn O. Pearce <spearce@spearce.org>2010-06-28 11:47:28 -0700
commit1ad2feb7b3d48d8bfedfdd03ee6ca4f599041476 (patch)
treed3c172ac4f3ca04585dd57d60ddf17db90b66064
parent9ba7bd4df452a1d005fbf770141076e901ad61d6 (diff)
downloadjgit-1ad2feb7b3d48d8bfedfdd03ee6ca4f599041476.tar.gz
jgit-1ad2feb7b3d48d8bfedfdd03ee6ca4f599041476.zip
Remove Repository.openObject(ObjectReader, AnyObjectId)
Going through ObjectReader.openObject(AnyObjectId) is faster, but also produces cleaner application level code. The error checking is done inside of the openObject method, which means it can be removed from the application code. Change-Id: Ia927b448d128005e1640362281585023582b1a3a Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rw-r--r--org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogGenerator.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java21
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java9
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java4
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/IndexPack.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java15
7 files changed, 12 insertions, 56 deletions
diff --git a/org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogGenerator.java b/org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogGenerator.java
index f40c3896a0..0d98f24369 100644
--- a/org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogGenerator.java
+++ b/org.eclipse.jgit.iplog/src/org/eclipse/jgit/iplog/IpLogGenerator.java
@@ -78,15 +78,13 @@ import org.eclipse.jgit.diff.EditList;
import org.eclipse.jgit.diff.MyersDiff;
import org.eclipse.jgit.diff.RawText;
import org.eclipse.jgit.errors.ConfigInvalidException;
-import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.iplog.Committer.ActiveRange;
import org.eclipse.jgit.lib.BlobBasedConfig;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.MutableObjectId;
-import org.eclipse.jgit.lib.ObjectLoader;
+import org.eclipse.jgit.lib.ObjectReader;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.lib.ObjectReader;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevTree;
import org.eclipse.jgit.revwalk.RevWalk;
@@ -418,10 +416,7 @@ public class IpLogGenerator {
private byte[] openBlob(int side) throws IOException {
tw.getObjectId(idbuf, side);
- ObjectLoader ldr = db.openObject(curs, idbuf);
- if (ldr == null)
- throw new MissingObjectException(idbuf.copy(), Constants.OBJ_BLOB);
- return ldr.getCachedBytes();
+ return curs.openObject(idbuf, Constants.OBJ_BLOB).getCachedBytes();
}
/**
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java
index 65f75094ea..bab349e6fb 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java
@@ -239,27 +239,6 @@ public abstract class Repository {
}
/**
- * @param curs
- * temporary working space associated with the calling thread.
- * @param id
- * SHA-1 of an object.
- *
- * @return a {@link ObjectLoader} for accessing the data of the named
- * object, or null if the object does not exist.
- * @throws IOException
- * @deprecated Use {code newObjectReader().open(id)}.
- */
- @Deprecated
- public ObjectLoader openObject(ObjectReader curs, AnyObjectId id)
- throws IOException {
- try {
- return curs.openObject(id);
- } catch (MissingObjectException notFound) {
- return null;
- }
- }
-
- /**
* @param id
* SHA'1 of a blob
* @return an {@link ObjectLoader} for accessing the data of a named blob
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java
index 5dde43b271..9fa79e15e3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevObject.java
@@ -51,7 +51,6 @@ import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.lib.AnyObjectId;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.ObjectLoader;
/** Base object type accessed during revision walking. */
public abstract class RevObject extends ObjectId {
@@ -78,13 +77,7 @@ public abstract class RevObject extends ObjectId {
final byte[] loadCanonical(final RevWalk walk) throws IOException,
MissingObjectException, IncorrectObjectTypeException,
CorruptObjectException {
- final ObjectLoader ldr = walk.db.openObject(walk.curs, this);
- if (ldr == null)
- throw new MissingObjectException(this, getType());
- final byte[] data = ldr.getCachedBytes();
- if (getType() != ldr.getType())
- throw new IncorrectObjectTypeException(this, getType());
- return data;
+ return walk.curs.openObject(this, getType()).getCachedBytes();
}
/**
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java
index 1224182960..2c849beb57 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java
@@ -720,9 +720,7 @@ public class RevWalk implements Iterable<RevCommit> {
throws MissingObjectException, IOException {
RevObject r = objects.get(id);
if (r == null) {
- final ObjectLoader ldr = db.openObject(curs, id);
- if (ldr == null)
- throw new MissingObjectException(id.toObjectId(), "unknown");
+ final ObjectLoader ldr = curs.openObject(id);
final byte[] data = ldr.getCachedBytes();
final int type = ldr.getType();
switch (type) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java
index cf6e382652..08ea9625ec 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/pack/PackWriter.java
@@ -730,7 +730,7 @@ public class PackWriter {
private void writeWholeObjectDeflate(final ObjectToPack otp)
throws IOException {
- final ObjectLoader loader = db.openObject(reader, otp);
+ final ObjectLoader loader = reader.openObject(otp, otp.getType());
final byte[] data = loader.getCachedBytes();
out.writeHeader(otp, data.length);
deflater.reset();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/IndexPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/IndexPack.java
index be82a2f5d0..494c077e02 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/IndexPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/IndexPack.java
@@ -593,8 +593,10 @@ public class IndexPack {
continue;
if (needBaseObjectIds)
baseObjectIds.add(baseId);
- final ObjectLoader ldr = repo.openObject(readCurs, baseId);
- if (ldr == null) {
+ final ObjectLoader ldr;
+ try {
+ ldr = readCurs.openObject(baseId);
+ } catch (MissingObjectException notFound) {
missing.add(baseId);
continue;
}
@@ -856,7 +858,7 @@ public class IndexPack {
try {
final ObjectLoader ldr = readCurs.openObject(id, type);
final byte[] existingData = ldr.getCachedBytes();
- if (ldr.getType() != type || !Arrays.equals(data, existingData)) {
+ if (!Arrays.equals(data, existingData)) {
throw new IOException(MessageFormat.format(JGitText.get().collisionOn, id.name()));
}
} catch (MissingObjectException notLocal) {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java
index b7f980ccaa..6ceb839bde 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/CanonicalTreeParser.java
@@ -54,9 +54,8 @@ import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.FileMode;
import org.eclipse.jgit.lib.MutableObjectId;
import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.ObjectLoader;
-import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.ObjectReader;
+import org.eclipse.jgit.lib.Repository;
/** Parses raw Git trees from the canonical semi-text/semi-binary format. */
public class CanonicalTreeParser extends AbstractTreeIterator {
@@ -199,17 +198,7 @@ public class CanonicalTreeParser extends AbstractTreeIterator {
public void reset(final Repository repo, final AnyObjectId id,
final ObjectReader curs)
throws IncorrectObjectTypeException, IOException {
- final ObjectLoader ldr = repo.openObject(curs, id);
- if (ldr == null) {
- final ObjectId me = id.toObjectId();
- throw new MissingObjectException(me, Constants.TYPE_TREE);
- }
- final byte[] subtreeData = ldr.getCachedBytes();
- if (ldr.getType() != Constants.OBJ_TREE) {
- final ObjectId me = id.toObjectId();
- throw new IncorrectObjectTypeException(me, Constants.TYPE_TREE);
- }
- reset(subtreeData);
+ reset(curs.openObject(id, Constants.OBJ_TREE).getCachedBytes());
}
@Override