Interface BlobContainer
- All Known Implementing Classes:
AbstractBlobContainer,FsBlobContainer
public interface BlobContainer
An interface for managing a repository of blob entries, where each blob entry is just a named group of bytes.
-
Method Summary
Modifier and Type Method Description java.util.Map<java.lang.String,BlobContainer>children()Lists all child containers under this container.DeleteResultdelete()Deletes this container and all its contents from the repository.voiddeleteBlobsIgnoringIfNotExists(java.util.List<java.lang.String> blobNames)Deletes the blobs with given names.java.util.Map<java.lang.String,BlobMetaData>listBlobs()Lists all blobs in the container.java.util.Map<java.lang.String,BlobMetaData>listBlobsByPrefix(java.lang.String blobNamePrefix)Lists all blobs in the container that match the specified prefix.BlobPathpath()Gets theBlobPaththat defines the implementation specific paths to where the blobs are contained.java.io.InputStreamreadBlob(java.lang.String blobName)Creates a newInputStreamfor the given blob name.voidwriteBlob(java.lang.String blobName, java.io.InputStream inputStream, long blobSize, boolean failIfAlreadyExists)Reads blob content from the input stream and writes it to the container in a new blob with the given name.voidwriteBlobAtomic(java.lang.String blobName, java.io.InputStream inputStream, long blobSize, boolean failIfAlreadyExists)Reads blob content from the input stream and writes it to the container in a new blob with the given name, using an atomic write operation if the implementation supports it.
-
Method Details
-
path
BlobPath path()Gets theBlobPaththat defines the implementation specific paths to where the blobs are contained.- Returns:
- the BlobPath where the blobs are contained
-
readBlob
java.io.InputStream readBlob(java.lang.String blobName) throws java.io.IOExceptionCreates a newInputStreamfor the given blob name.- Parameters:
blobName- The name of the blob to get anInputStreamfor.- Returns:
- The
InputStreamto read the blob. - Throws:
java.nio.file.NoSuchFileException- if the blob does not existjava.io.IOException- if the blob can not be read.
-
writeBlob
void writeBlob(java.lang.String blobName, java.io.InputStream inputStream, long blobSize, boolean failIfAlreadyExists) throws java.io.IOExceptionReads blob content from the input stream and writes it to the container in a new blob with the given name. This method assumes the container does not already contain a blob of the same blobName. If a blob by the same name already exists, the operation will fail and anIOExceptionwill be thrown.- Parameters:
blobName- The name of the blob to write the contents of the input stream to.inputStream- The input stream from which to retrieve the bytes to write to the blob.blobSize- The size of the blob to be written, in bytes. It is implementation dependent whether this value is used in writing the blob to the repository.failIfAlreadyExists- whether to throw a FileAlreadyExistsException if the given blob already exists- Throws:
java.nio.file.FileAlreadyExistsException- if failIfAlreadyExists is true and a blob by the same name already existsjava.io.IOException- if the input stream could not be read, or the target blob could not be written to.
-
writeBlobAtomic
void writeBlobAtomic(java.lang.String blobName, java.io.InputStream inputStream, long blobSize, boolean failIfAlreadyExists) throws java.io.IOExceptionReads blob content from the input stream and writes it to the container in a new blob with the given name, using an atomic write operation if the implementation supports it. This method assumes the container does not already contain a blob of the same blobName. If a blob by the same name already exists, the operation will fail and anIOExceptionwill be thrown.- Parameters:
blobName- The name of the blob to write the contents of the input stream to.inputStream- The input stream from which to retrieve the bytes to write to the blob.blobSize- The size of the blob to be written, in bytes. It is implementation dependent whether this value is used in writing the blob to the repository.failIfAlreadyExists- whether to throw a FileAlreadyExistsException if the given blob already exists- Throws:
java.nio.file.FileAlreadyExistsException- if failIfAlreadyExists is true and a blob by the same name already existsjava.io.IOException- if the input stream could not be read, or the target blob could not be written to.
-
delete
Deletes this container and all its contents from the repository.- Returns:
- delete result
- Throws:
java.io.IOException- on failure
-
deleteBlobsIgnoringIfNotExists
void deleteBlobsIgnoringIfNotExists(java.util.List<java.lang.String> blobNames) throws java.io.IOExceptionDeletes the blobs with given names. This method will not throw an exception when one or multiple of the given blobs don't exist and simply ignore this case.- Parameters:
blobNames- The names of the blob to delete.- Throws:
java.io.IOException- if a subset of blob exists but could not be deleted.
-
listBlobs
Lists all blobs in the container.- Returns:
- A map of all the blobs in the container. The keys in the map are the names of the blobs and
the values are
BlobMetaData, containing basic information about each blob. - Throws:
java.io.IOException- if there were any failures in reading from the blob container.
-
children
Lists all child containers under this container. A child container is defined as a container whosepath()method returns a path that has this containerspath()return as its prefix and has one more path element than the current container's path.- Returns:
- Map of name of the child container to child container
- Throws:
java.io.IOException- on failure to list child containers
-
listBlobsByPrefix
java.util.Map<java.lang.String,BlobMetaData> listBlobsByPrefix(java.lang.String blobNamePrefix) throws java.io.IOExceptionLists all blobs in the container that match the specified prefix.- Parameters:
blobNamePrefix- The prefix to match against blob names in the container.- Returns:
- A map of the matching blobs in the container. The keys in the map are the names of the blobs
and the values are
BlobMetaData, containing basic information about each blob. - Throws:
java.io.IOException- if there were any failures in reading from the blob container.
-