package com.beijunyi.parallelgit.utils; import java.io.IOException; import java.io.InputStream; import javax.annotation.Nonnull; import com.beijunyi.parallelgit.utils.io.BlobSnapshot; import org.eclipse.jgit.lib.*; import static org.eclipse.jgit.lib.Constants.OBJ_BLOB; public final class BlobUtils { @Nonnull public static ObjectId insertBlob(byte[] data, Repository repo) throws IOException { try(ObjectInserter inserter = repo.newObjectInserter()) { ObjectId blobId = inserter.insert(OBJ_BLOB, data); inserter.flush(); return blobId; } } public static long getBlobSize(AnyObjectId id, ObjectReader reader) throws IOException { return reader.getObjectSize(id, OBJ_BLOB); } public static long getBlobSize(AnyObjectId id, Repository repo) throws IOException { try(ObjectReader reader = repo.newObjectReader()) { return getBlobSize(id, reader); } } @Nonnull public static InputStream openBlob(AnyObjectId id, ObjectReader reader) throws IOException { return reader.open(id).openStream(); } @Nonnull public static InputStream openBlob(AnyObjectId id, Repository repo) throws IOException { try(ObjectReader reader = repo.newObjectReader()) { return openBlob(id, reader); } } @Nonnull public static BlobSnapshot readBlob(ObjectId id, ObjectReader reader) throws IOException { return BlobSnapshot.load(id, reader); } @Nonnull public static BlobSnapshot readBlob(ObjectId id, Repository repo) throws IOException { try(ObjectReader reader = repo.newObjectReader()) { return readBlob(id, reader); } } }