From 2ee6d95e5b24af2e462044053346df5bf1c440e9 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Fri, 17 Sep 2010 09:11:26 -0700 Subject: [PATCH] Fix UnsupportedOperationException while fixing thin pack If a thin pack has a large delta we need to be able to open its cached copy from the loose object directory through the CachedObjectDatabase handle. Unfortunately that did not support the openObject2 method, which the LargePackedDeltaObject used directly to bypass looking at the pack files. Bug: 324868 Change-Id: I1d5886a6c3254c6dea2852d50b8614c31a93e615 Signed-off-by: Shawn O. Pearce --- .../jgit/storage/file/CachedObjectDirectory.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/CachedObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/CachedObjectDirectory.java index a5762b61e..9bad71d8d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/CachedObjectDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/CachedObjectDirectory.java @@ -187,15 +187,15 @@ ObjectLoader openObject1(WindowCursor curs, AnyObjectId objectId) @Override boolean hasObject2(String objectId) { - // This method should never be invoked. - throw new UnsupportedOperationException(); + return unpackedObjects.contains(ObjectId.fromString(objectId)); } @Override ObjectLoader openObject2(WindowCursor curs, String objectName, AnyObjectId objectId) throws IOException { - // This method should never be invoked. - throw new UnsupportedOperationException(); + if (unpackedObjects.contains(objectId)) + return wrapped.openObject2(curs, objectName, objectId); + return null; } @Override @@ -208,8 +208,9 @@ long getObjectSize1(WindowCursor curs, AnyObjectId objectId) throws IOException @Override long getObjectSize2(WindowCursor curs, String objectName, AnyObjectId objectId) throws IOException { - // This method should never be invoked. - throw new UnsupportedOperationException(); + if (unpackedObjects.contains(objectId)) + return wrapped.getObjectSize2(curs, objectName, objectId); + return -1; } @Override