public interface Persister
Individual nodes may be the parent of other nodes. Some of these parent nodes may lack any data of their own. The root-level node (with path "", or "/") is considered to always be present.
This interface should be implemented in order to store and fetch data, with paths delimited by
PersisterUtils.PATH_DELIM
.
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes this storage and cleans up any local client resources.
|
byte[] |
get(java.lang.String path)
Retrieves the previously stored data at the specified path, or throws an exception if the path doesn't exist.
|
java.util.Collection<java.lang.String> |
getChildren(java.lang.String path)
Returns the names of child nodes at the provided path.
|
java.util.Map<java.lang.String,byte[]> |
getMany(java.util.Collection<java.lang.String> paths)
Atomically reads many values from storage at once, returning a mapping of paths to values.
|
void |
recursiveDelete(java.lang.String path)
Recursively deletes the data at the specified path, or throws an exception if no data existed at that location.
|
void |
recursiveDeleteMany(java.util.Collection<java.lang.String> paths)
Atomically deletes many values from storage at once, with each path entry being treated as a call to
recursiveDelete(String) for those paths. |
void |
set(java.lang.String path,
byte[] bytes)
Writes a single value to storage at the specified path, replacing any existing data at the path or creating the
path if it doesn't exist yet.
|
void |
setMany(java.util.Map<java.lang.String,byte[]> pathBytesMap)
Atomically writes many values to storage at once.
|
byte[] get(java.lang.String path) throws PersisterException
null
.PersisterException
- if the requested path doesn't exist, or for other access errorsjava.util.Collection<java.lang.String> getChildren(java.lang.String path) throws PersisterException
null
data when
retrieved via get(String)
, indicating that these are stub parent entries to other nodes.
To translate the returned values to full absolute paths, they may be joined with the provided path
input using PersisterUtils.join(String, String)
.
To get the list of nodes at the root, use "" or "/" as the input path.
PersisterException
- if the requested path doesn't exist, or for other access errorsvoid set(java.lang.String path, byte[] bytes) throws PersisterException
PersisterException
- in the event of an access errorjava.util.Map<java.lang.String,byte[]> getMany(java.util.Collection<java.lang.String> paths) throws PersisterException
Map
.PersisterException
- in the event of an access errorget(String)
void setMany(java.util.Map<java.lang.String,byte[]> pathBytesMap) throws PersisterException
PersisterException
- in the event of an access error, in which case no changes should have been madeset(String, byte[])
void recursiveDeleteMany(java.util.Collection<java.lang.String> paths) throws PersisterException
recursiveDelete(String)
for those paths.PersisterException
- in the event of an access error, in which case no changes should have been maderecursiveDelete(String)
void recursiveDelete(java.lang.String path) throws PersisterException
Deleting the root node (as "" or "/") will result in all nodes EXCEPT the root node being deleted.
PersisterException
- if the data at the requested path didn't exist, or for other access errorsvoid close()