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 <spearce@spearce.org>tags/v0.9.1
@@ -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()); | |||
} |
@@ -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()); | |||
} | |||
} |
@@ -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) { |
@@ -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<PackIndex.MutableEntry> { | |||
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<PackIndex.MutableEntry> { | |||
* @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<PackIndex.MutableEntry> { | |||
, 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<PackIndex.MutableEntry> { | |||
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<PackIndex.MutableEntry> { | |||
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<PackIndex.MutableEntry> { | |||
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, |
@@ -1,89 +0,0 @@ | |||
/* | |||
* Copyright (C) 2009, Google Inc. | |||
* Copyright (C) 2008, Marek Zawirski <marek.zawirski@gmail.com> | |||
* Copyright (C) 2007, Robin Rosenberg <robin.rosenberg@dewire.com> | |||
* Copyright (C) 2006-2008, Shawn O. Pearce <spearce@spearce.org> | |||
* 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); | |||
} | |||
} |