From 13e0218a2577debcfe8757e135af1cf900601814 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Thu, 1 Jul 2010 18:27:51 -0700 Subject: [PATCH] Replace PackedObjectLoader with ObjectLoader.SmallObject The class is identical, but ObjectLoader.SmallObject is part of our public API for storage implementations to build on top of. Change-Id: I381a3953b14870b6d3d74a9c295769ace78869dc Signed-off-by: Shawn O. Pearce --- .../jgit/storage/file/T0004_PackReader.java | 3 +- .../jgit/storage/file/WindowCacheGetTest.java | 1 - .../jgit/storage/file/ObjectDirectory.java | 2 +- .../eclipse/jgit/storage/file/PackFile.java | 22 ++--- .../jgit/storage/file/PackedObjectLoader.java | 89 ------------------- 5 files changed, 9 insertions(+), 108 deletions(-) delete mode 100644 org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackedObjectLoader.java diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/T0004_PackReader.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/T0004_PackReader.java index b8bcca2e1..472d6956e 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/T0004_PackReader.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/T0004_PackReader.java @@ -63,7 +63,7 @@ public class T0004_PackReader extends SampleDataRepositoryTestCase { public void test003_lookupCompressedObject() throws IOException { final PackFile pr; final ObjectId id; - final PackedObjectLoader or; + final ObjectLoader or; id = ObjectId.fromString("902d5476fa249b7abc9d84c611577a81381f0327"); pr = new PackFile(TEST_IDX, TEST_PACK); @@ -81,7 +81,6 @@ public class T0004_PackReader extends SampleDataRepositoryTestCase { id = ObjectId.fromString("5b6e7c66c276e7610d4a73c70ec1a1f7c1003259"); or = db.open(id); assertNotNull(or); - assertTrue(or instanceof PackedObjectLoader); assertEquals(Constants.OBJ_BLOB, or.getType()); assertEquals(18009, or.getSize()); } diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/WindowCacheGetTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/WindowCacheGetTest.java index 177a1d5cf..d8c682999 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/WindowCacheGetTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/WindowCacheGetTest.java @@ -128,7 +128,6 @@ public class WindowCacheGetTest extends SampleDataRepositoryTestCase { for (final TestObject o : toLoad) { final ObjectLoader or = db.open(o.id, o.type); assertNotNull(or); - assertTrue(or instanceof PackedObjectLoader); assertEquals(o.type, or.getType()); } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java index 49a69a536..0ddcf04dd 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java @@ -273,7 +273,7 @@ public class ObjectDirectory extends FileObjectDatabase { SEARCH: for (;;) { for (final PackFile p : pList.packs) { try { - final PackedObjectLoader ldr = p.get(curs, objectId); + final ObjectLoader ldr = p.get(curs, objectId); if (ldr != null) return ldr; } catch (PackMismatchException e) { diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java index f68019c40..9f642042c 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java @@ -69,6 +69,7 @@ import org.eclipse.jgit.errors.StoredObjectRepresentationNotAvailableException; import org.eclipse.jgit.lib.AnyObjectId; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.ObjectLoader; import org.eclipse.jgit.storage.pack.BinaryDelta; import org.eclipse.jgit.storage.pack.ObjectToPack; import org.eclipse.jgit.storage.pack.PackOutputStream; @@ -167,15 +168,6 @@ public class PackFile implements Iterable { return loadedIdx; } - final PackedObjectLoader resolveBase(final WindowCursor curs, final long ofs) - throws IOException { - if (isCorrupt(ofs)) { - throw new CorruptObjectException(MessageFormat.format(JGitText - .get().objectAtHasBadZlibStream, ofs, getPackFile())); - } - return load(curs, ofs); - } - /** @return the File object which locates this pack on disk. */ public File getPackFile() { return packFile; @@ -211,7 +203,7 @@ public class PackFile implements Iterable { * @throws IOException * the pack file or the index could not be read. */ - PackedObjectLoader get(final WindowCursor curs, final AnyObjectId id) + ObjectLoader get(final WindowCursor curs, final AnyObjectId id) throws IOException { final long offset = idx().findOffset(id); return 0 < offset && !isCorrupt(offset) ? load(curs, offset) : null; @@ -619,7 +611,7 @@ public class PackFile implements Iterable { , getPackFile())); } - private PackedObjectLoader load(final WindowCursor curs, final long pos) + private ObjectLoader load(final WindowCursor curs, final long pos) throws IOException { final byte[] ib = curs.tempId; readFully(pos, ib, 0, 20, curs); @@ -641,7 +633,7 @@ public class PackFile implements Iterable { case Constants.OBJ_BLOB: case Constants.OBJ_TAG: { byte[] data = decompress(pos + p, sz, curs); - return new PackedObjectLoader(type, data); + return new ObjectLoader.SmallObject(type, data); } case Constants.OBJ_OFS_DELTA: { @@ -685,7 +677,7 @@ public class PackFile implements Iterable { return ofs; } - private PackedObjectLoader loadDelta(final long posData, long sz, + private ObjectLoader loadDelta(final long posData, long sz, final long posBase, final WindowCursor curs) throws IOException, DataFormatException { byte[] data; @@ -696,14 +688,14 @@ public class PackFile implements Iterable { data = e.data; type = e.type; } else { - PackedObjectLoader p = load(curs, posBase); + ObjectLoader p = load(curs, posBase); data = p.getCachedBytes(); type = p.getType(); saveCache(posBase, data, type); } data = BinaryDelta.apply(data, decompress(posData, sz, curs)); - return new PackedObjectLoader(type, data); + return new ObjectLoader.SmallObject(type, data); } LocalObjectRepresentation representation(final WindowCursor curs, diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackedObjectLoader.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackedObjectLoader.java deleted file mode 100644 index f056c7413..000000000 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackedObjectLoader.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2009, Google Inc. - * Copyright (C) 2008, Marek Zawirski - * Copyright (C) 2007, Robin Rosenberg - * Copyright (C) 2006-2008, Shawn O. Pearce - * and other copyright owners as documented in the project's IP log. - * - * This program and the accompanying materials are made available - * under the terms of the Eclipse Distribution License v1.0 which - * accompanies this distribution, is reproduced below, and is - * available at http://www.eclipse.org/org/documents/edl-v10.php - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * - * - Neither the name of the Eclipse Foundation, Inc. nor the - * names of its contributors may be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.eclipse.jgit.storage.file; - -import java.io.IOException; - -import org.eclipse.jgit.errors.MissingObjectException; -import org.eclipse.jgit.lib.ObjectLoader; -import org.eclipse.jgit.lib.ObjectStream; - -/** Object loaded in from a {@link PackFile}. */ -final class PackedObjectLoader extends ObjectLoader { - private final int type; - - private final byte[] data; - - PackedObjectLoader(int type, byte[] data) { - this.type = type; - this.data = data; - } - - public final int getType() { - return type; - } - - public final long getSize() { - return getCachedBytes().length; - } - - @Override - public final byte[] getCachedBytes() { - return data; - } - - @Override - public final boolean isLarge() { - return false; - } - - @Override - public final ObjectStream openStream() throws MissingObjectException, - IOException { - return new ObjectStream.SmallStream(this); - } -}