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.DeleteResult
delete()
Deletes this container and all its contents from the repository.void
deleteBlob(java.lang.String blobName)
Deletes the blob with the given name, if the blob exists.default void
deleteBlobIgnoringIfNotExists(java.lang.String blobName)
Deletes a blob with giving name, ignoring if the blob does not exist.default void
deleteBlobsIgnoringIfNotExists(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.BlobPath
path()
Gets theBlobPath
that defines the implementation specific paths to where the blobs are contained.java.io.InputStream
readBlob(java.lang.String blobName)
Creates a newInputStream
for the given blob name.void
writeBlob(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.void
writeBlobAtomic(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 Detail
-
path
BlobPath path()
Gets theBlobPath
that 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.IOException
Creates a newInputStream
for the given blob name.- Parameters:
blobName
- The name of the blob to get anInputStream
for.- Returns:
- The
InputStream
to 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.IOException
Reads 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 anIOException
will 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.IOException
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. 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 anIOException
will 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.
-
deleteBlob
void deleteBlob(java.lang.String blobName) throws java.io.IOException
Deletes the blob with the given name, if the blob exists. If the blob does not exist, this method may throw aNoSuchFileException
if the underlying implementation supports an existence check before delete.- Parameters:
blobName
- The name of the blob to delete.- Throws:
java.nio.file.NoSuchFileException
- if the blob does not existjava.io.IOException
- if the blob exists but could not be deleted.
-
delete
DeleteResult delete() throws java.io.IOException
Deletes this container and all its contents from the repository.- Returns:
- delete result
- Throws:
java.io.IOException
- on failure
-
deleteBlobsIgnoringIfNotExists
default void deleteBlobsIgnoringIfNotExists(java.util.List<java.lang.String> blobNames) throws java.io.IOException
Deletes the blobs with given names. UnlikedeleteBlob(String)
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.
-
deleteBlobIgnoringIfNotExists
default void deleteBlobIgnoringIfNotExists(java.lang.String blobName) throws java.io.IOException
Deletes a blob with giving name, ignoring if the blob does not exist.- Parameters:
blobName
- The name of the blob to delete.- Throws:
java.io.IOException
- if the blob exists but could not be deleted.
-
listBlobs
java.util.Map<java.lang.String,BlobMetaData> listBlobs() throws java.io.IOException
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
java.util.Map<java.lang.String,BlobContainer> children() throws java.io.IOException
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.IOException
Lists 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.
-
-