public class PathChildrenCache
extends java.lang.Object
implements java.io.Closeable
A utility that attempts to keep all data from all children of a ZK path locally cached. This class will watch the ZK path, respond to update/create/delete events, pull down the data, etc. You can register a listener that will get notified when changes occur.
IMPORTANT - it's not possible to stay transactionally in sync. Users of this class must be prepared for false-positives and false-negatives. Additionally, always use the version number when updating data to avoid overwriting another process' change.
Constructor and Description |
---|
PathChildrenCache(CuratorFramework client,
java.lang.String path,
boolean cacheData) |
PathChildrenCache(CuratorFramework client,
java.lang.String path,
boolean cacheData,
boolean dataIsCompressed,
java.util.concurrent.ThreadFactory threadFactory) |
PathChildrenCache(CuratorFramework client,
java.lang.String path,
boolean cacheData,
java.util.concurrent.ThreadFactory threadFactory) |
PathChildrenCache(CuratorFramework client,
java.lang.String path,
PathChildrenCacheMode mode)
Deprecated.
|
PathChildrenCache(CuratorFramework client,
java.lang.String path,
PathChildrenCacheMode mode,
java.util.concurrent.ThreadFactory threadFactory)
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
Clears the current data without beginning a new query and without generating any events
for listeners.
|
void |
clearAndRefresh()
Clear out current data and begin a new query on the path
|
void |
close()
Close/end the cache
|
java.util.List<ChildData> |
getCurrentData()
Return the current data.
|
ChildData |
getCurrentData(java.lang.String fullPath)
Return the current data for the given path.
|
ListenerContainer<PathChildrenCacheListener> |
getListenable()
Return the cache listenable
|
protected void |
handleException(java.lang.Throwable e)
Default behavior is just to log the exception
|
void |
rebuild()
NOTE: this is a BLOCKING method.
|
void |
start()
Start the cache.
|
void |
start(boolean buildInitial)
Same as
start() but gives the option of doing an initial build |
public PathChildrenCache(CuratorFramework client, java.lang.String path, PathChildrenCacheMode mode)
PathChildrenCache(CuratorFramework, String, boolean)
insteadclient
- the clientpath
- path to watchmode
- caching modepublic PathChildrenCache(CuratorFramework client, java.lang.String path, PathChildrenCacheMode mode, java.util.concurrent.ThreadFactory threadFactory)
PathChildrenCache(CuratorFramework, String, boolean, ThreadFactory)
insteadclient
- the clientpath
- path to watchmode
- caching modethreadFactory
- factory to use when creating internal threadspublic PathChildrenCache(CuratorFramework client, java.lang.String path, boolean cacheData)
client
- the clientpath
- path to watchcacheData
- if true, node contents are cached in addition to the statpublic PathChildrenCache(CuratorFramework client, java.lang.String path, boolean cacheData, java.util.concurrent.ThreadFactory threadFactory)
client
- the clientpath
- path to watchcacheData
- if true, node contents are cached in addition to the statthreadFactory
- factory to use when creating internal threadspublic PathChildrenCache(CuratorFramework client, java.lang.String path, boolean cacheData, boolean dataIsCompressed, java.util.concurrent.ThreadFactory threadFactory)
client
- the clientpath
- path to watchcacheData
- if true, node contents are cached in addition to the statdataIsCompressed
- if true, data in the path is compressedthreadFactory
- factory to use when creating internal threadspublic void start() throws java.lang.Exception
java.lang.Exception
- errorspublic void start(boolean buildInitial) throws java.lang.Exception
start()
but gives the option of doing an initial buildbuildInitial
- if true, rebuild()
will be called before this method
returns in order to get an initial view of the nodejava.lang.Exception
- errorspublic void rebuild() throws java.lang.Exception
java.lang.Exception
- errorspublic void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
java.io.IOException
- errorspublic ListenerContainer<PathChildrenCacheListener> getListenable()
public java.util.List<ChildData> getCurrentData()
public ChildData getCurrentData(java.lang.String fullPath)
null
is returned.fullPath
- full path to the node to checkpublic void clearAndRefresh() throws java.lang.Exception
java.lang.Exception
- errorspublic void clear()
protected void handleException(java.lang.Throwable e)
e
- the exception