From 3f9a5ce13fd5e3cd49016db037e38417517aec36 Mon Sep 17 00:00:00 2001 From: Jonathan Nieder Date: Fri, 4 Jan 2019 17:19:00 -0800 Subject: [PATCH] Deprecate Repository#hasObject Its implementation contains } catch (IOException e) { // Legacy API, assume error means "no" return false; } Better to use ObjectDatabase#has, which throws IOException to report errors. Change-Id: I7de02f7ceb8f57b2a8ebdb16d2aa4376775ff933 Signed-off-by: Jonathan Nieder --- .../http/test/DumbClientDumbServerTest.java | 8 +- .../http/test/DumbClientSmartServerTest.java | 8 +- .../jgit/http/test/HookMessageTest.java | 2 +- .../test/SmartClientSmartServerSslTest.java | 12 +- .../http/test/SmartClientSmartServerTest.java | 42 +++--- .../storage/file/GcBranchPrunedTest.java | 8 +- .../file/GcPruneNonReferencedTest.java | 12 +- .../jgit/internal/storage/file/GcTagTest.java | 6 +- .../storage/file/ObjectDirectoryTest.java | 8 +- .../jgit/transport/PackParserTest.java | 2 +- .../ReceivePackAdvertiseRefsHookTest.java | 2 +- .../jgit/transport/UploadPackTest.java | 134 +++++++++--------- .../org/eclipse/jgit/api/FetchCommand.java | 3 +- .../src/org/eclipse/jgit/lib/Repository.java | 2 + .../transport/BasePackPushConnection.java | 2 +- .../jgit/transport/BaseReceivePack.java | 2 +- .../eclipse/jgit/transport/FetchProcess.java | 16 ++- .../jgit/transport/WalkFetchConnection.java | 8 +- 18 files changed, 146 insertions(+), 131 deletions(-) diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientDumbServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientDumbServerTest.java index ab6dc35f7..422be56dd 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientDumbServerTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientDumbServerTest.java @@ -194,13 +194,13 @@ public class DumbClientDumbServerTest extends HttpTestCase { @Test public void testInitialClone_Loose() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, remoteURI)) { t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); @@ -216,13 +216,13 @@ public class DumbClientDumbServerTest extends HttpTestCase { new TestRepository<>(remoteRepository).packAndPrune(); Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, remoteURI)) { t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientSmartServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientSmartServerTest.java index 4ff81c547..5fdc10e73 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientSmartServerTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/DumbClientSmartServerTest.java @@ -193,14 +193,14 @@ public class DumbClientSmartServerTest extends HttpTestCase { @Test public void testInitialClone_Small() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, remoteURI)) { ((TransportHttp) t).setUseSmartHttp(false); t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); @@ -218,14 +218,14 @@ public class DumbClientSmartServerTest extends HttpTestCase { new TestRepository<>(remoteRepository).packAndPrune(); Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, remoteURI)) { ((TransportHttp) t).setUseSmartHttp(false); t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java index 7795658ea..5a5ff1a8a 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/HookMessageTest.java @@ -163,7 +163,7 @@ public class HookMessageTest extends HttpTestCase { .singleton(update)); } - assertTrue(remoteRepository.hasObject(Q_txt)); + assertTrue(remoteRepository.getObjectDatabase().has(Q_txt)); assertNotNull("has " + dstName, remoteRepository.exactRef(dstName)); assertEquals(Q, remoteRepository.exactRef(dstName).getObjectId()); fsck(remoteRepository, Q); diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerSslTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerSslTest.java index 7deb0d85a..30501dfd5 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerSslTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerSslTest.java @@ -275,13 +275,13 @@ public class SmartClientSmartServerSslTest extends HttpTestCase { @Test public void testInitialClone_ViaHttps() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, secureURI)) { t.setCredentialsProvider(testCredentials); t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); @@ -292,14 +292,14 @@ public class SmartClientSmartServerSslTest extends HttpTestCase { @Test public void testInitialClone_RedirectToHttps() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); URIish cloneFrom = extendPath(remoteURI, "/https"); try (Transport t = Transport.open(dst, cloneFrom)) { t.setCredentialsProvider(testCredentials); t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); @@ -310,7 +310,7 @@ public class SmartClientSmartServerSslTest extends HttpTestCase { @Test public void testInitialClone_RedirectBackToHttp() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); URIish cloneFrom = extendPath(secureURI, "/back"); try (Transport t = Transport.open(dst, cloneFrom)) { @@ -325,7 +325,7 @@ public class SmartClientSmartServerSslTest extends HttpTestCase { @Test public void testInitialClone_SslFailure() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, secureURI)) { // Set a credentials provider that doesn't handle questions diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java index d1c7737d4..7ff7e5c4c 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java @@ -455,13 +455,13 @@ public class SmartClientSmartServerTest extends HttpTestCase { @Test public void testInitialClone_Small() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, remoteURI)) { t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); @@ -495,7 +495,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { private void initialClone_Redirect(int nofRedirects, int code) throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); URIish cloneFrom = redirectURI; if (code != 301 || nofRedirects > 1) { @@ -506,7 +506,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); @@ -584,7 +584,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { userConfig.setInt("http", null, "maxRedirects", 3); userConfig.save(); Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); URIish cloneFrom = extendPath(redirectURI, "/response/4/302"); String remoteUri = cloneFrom.toString(); @@ -606,7 +606,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { @Test public void testInitialClone_RedirectLoop() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); URIish cloneFrom = extendPath(redirectURI, "/loop"); try (Transport t = Transport.open(dst, cloneFrom)) { @@ -624,14 +624,14 @@ public class SmartClientSmartServerTest extends HttpTestCase { userConfig.setString("http", null, "followRedirects", "true"); userConfig.save(); Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); URIish cloneFrom = extendPath(remoteURI, "/post"); try (Transport t = Transport.open(dst, cloneFrom)) { t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); @@ -669,7 +669,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { @Test public void testInitialClone_RedirectOnPostForbidden() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); URIish cloneFrom = extendPath(remoteURI, "/post"); try (Transport t = Transport.open(dst, cloneFrom)) { @@ -688,7 +688,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { userConfig.save(); Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, redirectURI)) { t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); @@ -702,14 +702,14 @@ public class SmartClientSmartServerTest extends HttpTestCase { @Test public void testInitialClone_WithAuthentication() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, authURI)) { t.setCredentialsProvider(testCredentials); t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); @@ -748,7 +748,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { public void testInitialClone_WithAuthenticationNoCredentials() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, authURI)) { t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); @@ -770,7 +770,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { public void testInitialClone_WithAuthenticationWrongCredentials() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, authURI)) { t.setCredentialsProvider(new UsernamePasswordCredentialsProvider( @@ -796,7 +796,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { public void testInitialClone_WithAuthenticationAfterRedirect() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); URIish cloneFrom = extendPath(redirectURI, "/target/auth"); CredentialsProvider uriSpecificCredentialsProvider = new UsernamePasswordCredentialsProvider( @@ -820,7 +820,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); @@ -865,14 +865,14 @@ public class SmartClientSmartServerTest extends HttpTestCase { public void testInitialClone_WithAuthenticationOnPostOnly() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, authOnPostURI)) { t.setCredentialsProvider(testCredentials); t.fetch(NullProgressMonitor.INSTANCE, mirror(master)); } - assertTrue(dst.hasObject(A_txt)); + assertTrue(dst.getObjectDatabase().has(A_txt)); assertEquals(B, dst.exactRef(master).getObjectId()); fsck(dst, B); @@ -1042,7 +1042,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { @Test public void testInitialClone_BrokenServer() throws Exception { Repository dst = createBareRepository(); - assertFalse(dst.hasObject(A_txt)); + assertFalse(dst.getObjectDatabase().has(A_txt)); try (Transport t = Transport.open(dst, brokenURI)) { try { @@ -1201,7 +1201,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { t.push(NullProgressMonitor.INSTANCE, Collections.singleton(u)); } - assertTrue(remoteRepository.hasObject(Q_txt)); + assertTrue(remoteRepository.getObjectDatabase().has(Q_txt)); assertNotNull("has " + dstName, remoteRepository.exactRef(dstName)); assertEquals(Q, remoteRepository.exactRef(dstName).getObjectId()); fsck(remoteRepository, Q); @@ -1275,7 +1275,7 @@ public class SmartClientSmartServerTest extends HttpTestCase { t.push(NullProgressMonitor.INSTANCE, Collections.singleton(u)); } - assertTrue(remoteRepository.hasObject(Q_bin)); + assertTrue(remoteRepository.getObjectDatabase().has(Q_bin)); assertNotNull("has " + dstName, remoteRepository.exactRef(dstName)); assertEquals(Q, remoteRepository.exactRef(dstName).getObjectId()); fsck(remoteRepository, Q); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcBranchPrunedTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcBranchPrunedTest.java index c7ee9256d..8f29b3b9d 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcBranchPrunedTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcBranchPrunedTest.java @@ -66,11 +66,11 @@ public class GcBranchPrunedTest extends GcTestCase { fsTick(); gc.prune(Collections. emptySet()); do { - assertTrue(repo.hasObject(tip)); + assertTrue(repo.getObjectDatabase().has(tip)); tr.parseBody(tip); RevTree t = tip.getTree(); - assertTrue(repo.hasObject(t)); - assertTrue(repo.hasObject(tr.get(t, "a"))); + assertTrue(repo.getObjectDatabase().has(t)); + assertTrue(repo.getObjectDatabase().has(tr.get(t, "a"))); tip = tip.getParentCount() > 0 ? tip.getParent(0) : null; } while (tip != null); } @@ -114,6 +114,6 @@ public class GcBranchPrunedTest extends GcTestCase { gc.setExpireAgeMillis(0); fsTick(); gc.prune(Collections. emptySet()); - assertTrue(repo.hasObject(b2Tip)); + assertTrue(repo.getObjectDatabase().has(b2Tip)); } } diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPruneNonReferencedTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPruneNonReferencedTest.java index 5b1a4178a..44fb21dad 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPruneNonReferencedTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcPruneNonReferencedTest.java @@ -63,7 +63,7 @@ public class GcPruneNonReferencedTest extends GcTestCase { RevBlob a = tr.blob("a"); gc.setExpire(new Date(lastModified(a))); gc.prune(Collections. emptySet()); - assertTrue(repo.hasObject(a)); + assertTrue(repo.getObjectDatabase().has(a)); } @Test @@ -72,7 +72,7 @@ public class GcPruneNonReferencedTest extends GcTestCase { gc.setExpireAgeMillis(0); fsTick(); gc.prune(Collections. emptySet()); - assertFalse(repo.hasObject(a)); + assertFalse(repo.getObjectDatabase().has(a)); } @Test @@ -82,8 +82,8 @@ public class GcPruneNonReferencedTest extends GcTestCase { gc.setExpireAgeMillis(0); fsTick(); gc.prune(Collections. emptySet()); - assertFalse(repo.hasObject(t)); - assertFalse(repo.hasObject(a)); + assertFalse(repo.getObjectDatabase().has(t)); + assertFalse(repo.getObjectDatabase().has(a)); } @Test @@ -95,8 +95,8 @@ public class GcPruneNonReferencedTest extends GcTestCase { RevBlob b = tr.blob("b"); gc.prune(Collections. emptySet()); - assertFalse(repo.hasObject(a)); - assertTrue(repo.hasObject(b)); + assertFalse(repo.getObjectDatabase().has(a)); + assertTrue(repo.getObjectDatabase().has(b)); } @Test diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcTagTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcTagTest.java index 4afbeff3e..cf7a4319c 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcTagTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/GcTagTest.java @@ -60,7 +60,7 @@ public class GcTagTest extends GcTestCase { gc.setExpireAgeMillis(0); fsTick(); gc.prune(Collections. emptySet()); - assertTrue(repo.hasObject(a)); + assertTrue(repo.getObjectDatabase().has(a)); } @Test @@ -72,7 +72,7 @@ public class GcTagTest extends GcTestCase { gc.setExpireAgeMillis(0); fsTick(); gc.prune(Collections. emptySet()); - assertTrue(repo.hasObject(t)); - assertTrue(repo.hasObject(a)); + assertTrue(repo.getObjectDatabase().has(t)); + assertTrue(repo.getObjectDatabase().has(a)); } } diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ObjectDirectoryTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ObjectDirectoryTest.java index 3ca689ac0..a3a302d81 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ObjectDirectoryTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/ObjectDirectoryTest.java @@ -126,7 +126,7 @@ public class ObjectDirectoryTest extends RepositoryTestCase { // scanning of the packs directory ObjectId id = commitFile("file.txt", "test", "master").getId(); gc.gc(); - assertFalse(receivingDB.hasObject(unknownID)); + assertFalse(receivingDB.getObjectDatabase().has(unknownID)); assertTrue(receivingDB.getObjectDatabase().hasPackedObject(id)); // preparations @@ -150,7 +150,7 @@ public class ObjectDirectoryTest extends RepositoryTestCase { // JGit will not rescan the packs folder later on and fails to see // the pack file created during gc. assertTrue(tmpFile.createNewFile()); - assertFalse(receivingDB.hasObject(unknownID)); + assertFalse(receivingDB.getObjectDatabase().has(unknownID)); // trigger a gc. This will create packfiles which have likely the // same mtime than the packfolder @@ -177,8 +177,8 @@ public class ObjectDirectoryTest extends RepositoryTestCase { Assume.assumeTrue(tmpFile.lastModified() == ret[0].lastModified()); // all objects are in a new packfile but we will not detect it - assertFalse(receivingDB.hasObject(unknownID)); - assertTrue(receivingDB.hasObject(id2)); + assertFalse(receivingDB.getObjectDatabase().has(unknownID)); + assertTrue(receivingDB.getObjectDatabase().has(id2)); } } diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PackParserTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PackParserTest.java index b6d061143..0f98fac70 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PackParserTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/PackParserTest.java @@ -163,7 +163,7 @@ public class PackParserTest extends RepositoryTestCase { public void testPackWithDuplicateBlob() throws Exception { final byte[] data = Constants.encode("0123456789abcdefg"); TestRepository d = new TestRepository<>(db); - assertTrue(db.hasObject(d.blob(data))); + assertTrue(db.getObjectDatabase().has(d.blob(data))); TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(1024); packHeader(pack, 1); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackAdvertiseRefsHookTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackAdvertiseRefsHookTest.java index dfa50b6bb..fa8856d33 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackAdvertiseRefsHookTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/ReceivePackAdvertiseRefsHookTest.java @@ -236,7 +236,7 @@ public class ReceivePackAdvertiseRefsHookTest extends LocalDiskRepositoryTestCas // Verify the only storage of b is our packed delta above. // ObjectDirectory od = (ObjectDirectory) src.getObjectDatabase(); - assertTrue("has b", src.hasObject(b)); + assertTrue("has b", od.has(b)); assertFalse("b not loose", od.fileFor(b).exists()); // Now use b but in a different commit than what is hidden. diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java index 8acbcce36..a0635b725 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/transport/UploadPackTest.java @@ -128,13 +128,13 @@ public class UploadPackTest { }, null); uri = testProtocol.register(ctx, server); - assertFalse(client.hasObject(commit0.toObjectId())); + assertFalse(client.getObjectDatabase().has(commit0.toObjectId())); // Fetch of the parent of the shallow commit try (Transport tn = testProtocol.open(uri, client, "server")) { tn.fetch(NullProgressMonitor.INSTANCE, Collections.singletonList(new RefSpec(commit0.name()))); - assertTrue(client.hasObject(commit0.toObjectId())); + assertTrue(client.getObjectDatabase().has(commit0.toObjectId())); } } @@ -147,7 +147,7 @@ public class UploadPackTest { testProtocol = generateReachableCommitUploadPackProtocol(); uri = testProtocol.register(ctx, server); - assertFalse(client.hasObject(blob.toObjectId())); + assertFalse(client.getObjectDatabase().has(blob.toObjectId())); try (Transport tn = testProtocol.open(uri, client, "server")) { thrown.expect(TransportException.class); @@ -168,12 +168,12 @@ public class UploadPackTest { testProtocol = generateReachableCommitUploadPackProtocol(); uri = testProtocol.register(ctx, server); - assertFalse(client.hasObject(blob.toObjectId())); + assertFalse(client.getObjectDatabase().has(blob.toObjectId())); try (Transport tn = testProtocol.open(uri, client, "server")) { tn.fetch(NullProgressMonitor.INSTANCE, Collections.singletonList(new RefSpec(blob.name()))); - assertTrue(client.hasObject(blob.toObjectId())); + assertTrue(client.getObjectDatabase().has(blob.toObjectId())); } } @@ -186,7 +186,7 @@ public class UploadPackTest { testProtocol = generateReachableCommitUploadPackProtocol(); uri = testProtocol.register(ctx, server); - assertFalse(client.hasObject(blob.toObjectId())); + assertFalse(client.getObjectDatabase().has(blob.toObjectId())); try (Transport tn = testProtocol.open(uri, client, "server")) { thrown.expect(TransportException.class); @@ -227,9 +227,9 @@ public class UploadPackTest { tn.setFilterBlobLimit(0); tn.fetch(NullProgressMonitor.INSTANCE, Collections.singletonList(new RefSpec(commit.name()))); - assertTrue(client.hasObject(tree.toObjectId())); - assertFalse(client.hasObject(blob1.toObjectId())); - assertFalse(client.hasObject(blob2.toObjectId())); + assertTrue(client.getObjectDatabase().has(tree.toObjectId())); + assertFalse(client.getObjectDatabase().has(blob1.toObjectId())); + assertFalse(client.getObjectDatabase().has(blob2.toObjectId())); } } @@ -265,9 +265,9 @@ public class UploadPackTest { tn.fetch(NullProgressMonitor.INSTANCE, Arrays.asList( new RefSpec(commit.name()), new RefSpec(blob1.name()))); - assertTrue(client.hasObject(tree.toObjectId())); - assertTrue(client.hasObject(blob1.toObjectId())); - assertFalse(client.hasObject(blob2.toObjectId())); + assertTrue(client.getObjectDatabase().has(tree.toObjectId())); + assertTrue(client.getObjectDatabase().has(blob1.toObjectId())); + assertFalse(client.getObjectDatabase().has(blob2.toObjectId())); } } @@ -301,8 +301,8 @@ public class UploadPackTest { tn.setFilterBlobLimit(5); tn.fetch(NullProgressMonitor.INSTANCE, Collections.singletonList(new RefSpec(commit.name()))); - assertFalse(client.hasObject(longBlob.toObjectId())); - assertTrue(client.hasObject(shortBlob.toObjectId())); + assertFalse(client.getObjectDatabase().has(longBlob.toObjectId())); + assertTrue(client.getObjectDatabase().has(shortBlob.toObjectId())); } } @@ -342,8 +342,8 @@ public class UploadPackTest { tn.fetch(NullProgressMonitor.INSTANCE, Arrays.asList( new RefSpec(commit.name()), new RefSpec(blob1.name()))); - assertTrue(client.hasObject(blob1.toObjectId())); - assertFalse(client.hasObject(blob2.toObjectId())); + assertTrue(client.getObjectDatabase().has(blob1.toObjectId())); + assertFalse(client.getObjectDatabase().has(blob2.toObjectId())); } } @@ -381,8 +381,8 @@ public class UploadPackTest { tn.setFilterBlobLimit(5); tn.fetch(NullProgressMonitor.INSTANCE, Collections.singletonList(new RefSpec(commit.name()))); - assertFalse(client.hasObject(longBlob.toObjectId())); - assertTrue(client.hasObject(shortBlob.toObjectId())); + assertFalse(client.getObjectDatabase().has(longBlob.toObjectId())); + assertTrue(client.getObjectDatabase().has(shortBlob.toObjectId())); } } @@ -965,10 +965,10 @@ public class UploadPackTest { assertThat(pckIn.readString(), theInstance(PacketLineIn.DELIM)); assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertFalse(client.hasObject(fooParent.toObjectId())); - assertTrue(client.hasObject(fooChild.toObjectId())); - assertFalse(client.hasObject(barParent.toObjectId())); - assertTrue(client.hasObject(barChild.toObjectId())); + assertFalse(client.getObjectDatabase().has(fooParent.toObjectId())); + assertTrue(client.getObjectDatabase().has(fooChild.toObjectId())); + assertFalse(client.getObjectDatabase().has(barParent.toObjectId())); + assertTrue(client.getObjectDatabase().has(barChild.toObjectId())); } @Test @@ -992,10 +992,10 @@ public class UploadPackTest { assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertFalse(client.hasObject(fooParent.toObjectId())); - assertTrue(client.hasObject(fooChild.toObjectId())); - assertTrue(client.hasObject(barParent.toObjectId())); - assertTrue(client.hasObject(barChild.toObjectId())); + assertFalse(client.getObjectDatabase().has(fooParent.toObjectId())); + assertTrue(client.getObjectDatabase().has(fooChild.toObjectId())); + assertTrue(client.getObjectDatabase().has(barParent.toObjectId())); + assertTrue(client.getObjectDatabase().has(barChild.toObjectId())); } @Test @@ -1078,7 +1078,7 @@ public class UploadPackTest { PacketLineIn pckIn = new PacketLineIn(recvStream); assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertFalse(client.hasObject(tag.toObjectId())); + assertFalse(client.getObjectDatabase().has(tag.toObjectId())); // With tag. recvStream = uploadPackV2( @@ -1091,7 +1091,7 @@ public class UploadPackTest { pckIn = new PacketLineIn(recvStream); assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertTrue(client.hasObject(tag.toObjectId())); + assertTrue(client.getObjectDatabase().has(tag.toObjectId())); } @Test @@ -1149,8 +1149,8 @@ public class UploadPackTest { PacketLineIn pckIn = new PacketLineIn(recvStream); assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertTrue(client.hasObject(barChild.toObjectId())); - assertFalse(client.hasObject(commonParent.toObjectId())); + assertTrue(client.getObjectDatabase().has(barChild.toObjectId())); + assertFalse(client.getObjectDatabase().has(commonParent.toObjectId())); // With shallow, the server knows that we don't have // commonParent, so it sends it. @@ -1165,7 +1165,7 @@ public class UploadPackTest { pckIn = new PacketLineIn(recvStream); assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertTrue(client.hasObject(commonParent.toObjectId())); + assertTrue(client.getObjectDatabase().has(commonParent.toObjectId())); } @Test @@ -1188,8 +1188,8 @@ public class UploadPackTest { assertThat(pckIn.readString(), theInstance(PacketLineIn.DELIM)); assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertTrue(client.hasObject(child.toObjectId())); - assertFalse(client.hasObject(parent.toObjectId())); + assertTrue(client.getObjectDatabase().has(child.toObjectId())); + assertFalse(client.getObjectDatabase().has(parent.toObjectId())); // Without that, the parent is sent too. recvStream = uploadPackV2( @@ -1201,7 +1201,7 @@ public class UploadPackTest { pckIn = new PacketLineIn(recvStream); assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertTrue(client.hasObject(parent.toObjectId())); + assertTrue(client.getObjectDatabase().has(parent.toObjectId())); } @Test @@ -1268,15 +1268,15 @@ public class UploadPackTest { // The server does not send this because it is committed // earlier than the given deepen-since time. - assertFalse(client.hasObject(tooOld.toObjectId())); + assertFalse(client.getObjectDatabase().has(tooOld.toObjectId())); // The server does not send this because the client claims to // have it. - assertFalse(client.hasObject(boundary.toObjectId())); + assertFalse(client.getObjectDatabase().has(boundary.toObjectId())); // The server sends both these commits. - assertTrue(client.hasObject(beyondBoundary.toObjectId())); - assertTrue(client.hasObject(merge.toObjectId())); + assertTrue(client.getObjectDatabase().has(beyondBoundary.toObjectId())); + assertTrue(client.getObjectDatabase().has(merge.toObjectId())); } @Test @@ -1316,9 +1316,9 @@ public class UploadPackTest { parsePack(recvStream); // Only the children are sent. - assertFalse(client.hasObject(base.toObjectId())); - assertTrue(client.hasObject(child1.toObjectId())); - assertTrue(client.hasObject(child2.toObjectId())); + assertFalse(client.getObjectDatabase().has(base.toObjectId())); + assertTrue(client.getObjectDatabase().has(child1.toObjectId())); + assertTrue(client.getObjectDatabase().has(child2.toObjectId())); } @Test @@ -1384,16 +1384,16 @@ public class UploadPackTest { // The server does not send these because they are excluded by // deepen-not. - assertFalse(client.hasObject(side.toObjectId())); - assertFalse(client.hasObject(one.toObjectId())); + assertFalse(client.getObjectDatabase().has(side.toObjectId())); + assertFalse(client.getObjectDatabase().has(one.toObjectId())); // The server does not send this because the client claims to // have it. - assertFalse(client.hasObject(three.toObjectId())); + assertFalse(client.getObjectDatabase().has(three.toObjectId())); // The server sends both these commits. - assertTrue(client.hasObject(merge.toObjectId())); - assertTrue(client.hasObject(two.toObjectId())); + assertTrue(client.getObjectDatabase().has(merge.toObjectId())); + assertTrue(client.getObjectDatabase().has(two.toObjectId())); } @Test @@ -1441,10 +1441,10 @@ public class UploadPackTest { assertThat(pckIn.readString(), theInstance(PacketLineIn.DELIM)); assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertFalse(client.hasObject(one.toObjectId())); - assertFalse(client.hasObject(two.toObjectId())); - assertTrue(client.hasObject(three.toObjectId())); - assertTrue(client.hasObject(four.toObjectId())); + assertFalse(client.getObjectDatabase().has(one.toObjectId())); + assertFalse(client.getObjectDatabase().has(two.toObjectId())); + assertTrue(client.getObjectDatabase().has(three.toObjectId())); + assertTrue(client.getObjectDatabase().has(four.toObjectId())); } @Test @@ -1485,9 +1485,9 @@ public class UploadPackTest { parsePack(recvStream); // Only the children are sent. - assertFalse(client.hasObject(base.toObjectId())); - assertTrue(client.hasObject(child1.toObjectId())); - assertTrue(client.hasObject(child2.toObjectId())); + assertFalse(client.getObjectDatabase().has(base.toObjectId())); + assertTrue(client.getObjectDatabase().has(child1.toObjectId())); + assertTrue(client.getObjectDatabase().has(child2.toObjectId())); } @Test @@ -1538,8 +1538,8 @@ public class UploadPackTest { assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertFalse(client.hasObject(big.toObjectId())); - assertTrue(client.hasObject(small.toObjectId())); + assertFalse(client.getObjectDatabase().has(big.toObjectId())); + assertTrue(client.getObjectDatabase().has(small.toObjectId())); } @Test @@ -1610,9 +1610,9 @@ public class UploadPackTest { assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertTrue(client.hasObject(one.toObjectId())); - assertTrue(client.hasObject(two.toObjectId())); - assertFalse(client.hasObject(three.toObjectId())); + assertTrue(client.getObjectDatabase().has(one.toObjectId())); + assertTrue(client.getObjectDatabase().has(two.toObjectId())); + assertFalse(client.getObjectDatabase().has(three.toObjectId())); } @Test @@ -1666,9 +1666,9 @@ public class UploadPackTest { assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertTrue(client.hasObject(one.toObjectId())); - assertTrue(client.hasObject(two.toObjectId())); - assertFalse(client.hasObject(three.toObjectId())); + assertTrue(client.getObjectDatabase().has(one.toObjectId())); + assertTrue(client.getObjectDatabase().has(two.toObjectId())); + assertFalse(client.getObjectDatabase().has(three.toObjectId())); } @Test @@ -1699,7 +1699,7 @@ public class UploadPackTest { // ... but the client does not need the object itself. assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertFalse(client.hasObject(one.toObjectId())); + assertFalse(client.getObjectDatabase().has(one.toObjectId())); } @Test @@ -1728,8 +1728,8 @@ public class UploadPackTest { assertThat(pckIn.readString(), theInstance(PacketLineIn.DELIM)); assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertTrue(client.hasObject(child.toObjectId())); - assertFalse(client.hasObject(parent.toObjectId())); + assertTrue(client.getObjectDatabase().has(child.toObjectId())); + assertFalse(client.getObjectDatabase().has(parent.toObjectId())); } @Test @@ -1765,9 +1765,9 @@ public class UploadPackTest { assertThat(pckIn.readString(), is("packfile")); parsePack(recvStream); - assertTrue(client.hasObject(one.toObjectId())); - assertTrue(client.hasObject(two.toObjectId())); - assertTrue(client.hasObject(three.toObjectId())); + assertTrue(client.getObjectDatabase().has(one.toObjectId())); + assertTrue(client.getObjectDatabase().has(two.toObjectId())); + assertTrue(client.getObjectDatabase().has(three.toObjectId())); } @Test diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/FetchCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/FetchCommand.java index 73e93a1c9..2c9c5f20c 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/FetchCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/FetchCommand.java @@ -193,7 +193,8 @@ public class FetchCommand extends TransportCommand { // updated to an object that is not currently present in the // submodule. if ((recurseMode == FetchRecurseSubmodulesMode.ON_DEMAND - && !submoduleRepo.hasObject(walk.getObjectId())) + && !submoduleRepo.getObjectDatabase() + .has(walk.getObjectId())) || recurseMode == FetchRecurseSubmodulesMode.YES) { FetchCommand f = new FetchCommand(submoduleRepo) .setProgressMonitor(monitor) 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 ce51c14c2..c57669960 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Repository.java @@ -319,7 +319,9 @@ public abstract class Repository implements AutoCloseable { * a {@link org.eclipse.jgit.lib.AnyObjectId} object. * @return true if the specified object is stored in this repo or any of the * known shared repositories. + * @deprecated use {@code getObjectDatabase().has(objectId)} */ + @Deprecated public boolean hasObject(AnyObjectId objectId) { try { return getObjectDatabase().has(objectId); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java index 69624ff7a..847e90198 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java @@ -338,7 +338,7 @@ public abstract class BasePackPushConnection extends BasePackConnection implemen for (Ref r : getRefs()) { // only add objects that we actually have ObjectId oid = r.getObjectId(); - if (local.hasObject(oid)) + if (local.getObjectDatabase().has(oid)) remoteObjects.add(oid); } remoteObjects.addAll(additionalHaves); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java index ddf6dcc9d..6f17620d9 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/BaseReceivePack.java @@ -1588,7 +1588,7 @@ public abstract class BaseReceivePack { throw new MissingObjectException(o, o.getType()); } - if (o instanceof RevBlob && !db.hasObject(o)) + if (o instanceof RevBlob && !db.getObjectDatabase().has(o)) throw new MissingObjectException(o, Constants.TYPE_BLOB); } checking.endTask(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java index 211707e9a..681ae125c 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/FetchProcess.java @@ -181,7 +181,7 @@ class FetchProcess { ObjectId id = r.getPeeledObjectId(); if (id == null) id = r.getObjectId(); - if (transport.local.hasObject(id)) + if (localHasObject(id)) wantTag(r); } @@ -393,6 +393,18 @@ class FetchProcess { } } + private boolean localHasObject(ObjectId id) throws TransportException { + try { + return transport.local.getObjectDatabase().has(id); + } catch (IOException err) { + throw new TransportException( + MessageFormat.format( + JGitText.get().readingObjectsFromLocalRepositoryFailed, + err.getMessage()), + err); + } + } + private Collection expandAutoFollowTags() throws TransportException { final Collection additionalTags = new ArrayList<>(); final Map haveRefs = localRefs(); @@ -410,7 +422,7 @@ class FetchProcess { if (obj == null) obj = r.getObjectId(); - if (askFor.containsKey(obj) || transport.local.hasObject(obj)) + if (askFor.containsKey(obj) || localHasObject(obj)) wantTag(r); else additionalTags.add(r); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkFetchConnection.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkFetchConnection.java index 930791444..2bb58144b 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkFetchConnection.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/WalkFetchConnection.java @@ -555,10 +555,10 @@ class WalkFetchConnection extends BaseFetchConnection { continue; } finally { // If the pack was good its in the local repository - // and Repository.hasObject(id) will succeed in the - // future, so we do not need this data anymore. If - // it failed the index and pack are unusable and we - // shouldn't consult them again. + // and Repository.getObjectDatabase().has(id) will + // succeed in the future, so we do not need this + // data any more. If it failed the index and pack + // are unusable and we shouldn't consult them again. // try { if (pack.tmpIdx != null)