Class NodeCache

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class NodeCache
    extends java.lang.Object
    implements java.io.Closeable

    A utility that attempts to keep the data from a node locally cached. This class will watch the node, 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 Summary

      Constructors 
      Constructor Description
      NodeCache​(org.apache.curator.framework.CuratorFramework client, java.lang.String path)  
      NodeCache​(org.apache.curator.framework.CuratorFramework client, java.lang.String path, boolean dataIsCompressed)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()  
      org.apache.curator.framework.CuratorFramework getClient()  
      ChildData getCurrentData()
      Return the current data.
      org.apache.curator.framework.listen.ListenerContainer<NodeCacheListener> getListenable()
      Return the cache listenable
      java.lang.String getPath()
      Return the path this cache is watching
      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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • NodeCache

        public NodeCache​(org.apache.curator.framework.CuratorFramework client,
                         java.lang.String path)
        Parameters:
        client - curztor client
        path - the full path to the node to cache
      • NodeCache

        public NodeCache​(org.apache.curator.framework.CuratorFramework client,
                         java.lang.String path,
                         boolean dataIsCompressed)
        Parameters:
        client - curztor client
        path - the full path to the node to cache
        dataIsCompressed - if true, data in the path is compressed
    • Method Detail

      • getClient

        public org.apache.curator.framework.CuratorFramework getClient()
      • start

        public void start()
                   throws java.lang.Exception
        Start the cache. The cache is not started automatically. You must call this method.
        Throws:
        java.lang.Exception - errors
      • start

        public void start​(boolean buildInitial)
                   throws java.lang.Exception
        Same as start() but gives the option of doing an initial build
        Parameters:
        buildInitial - if true, rebuild() will be called before this method returns in order to get an initial view of the node
        Throws:
        java.lang.Exception - errors
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • getListenable

        public org.apache.curator.framework.listen.ListenerContainer<NodeCacheListener> getListenable()
        Return the cache listenable
        Returns:
        listenable
      • rebuild

        public void rebuild()
                     throws java.lang.Exception
        NOTE: this is a BLOCKING method. Completely rebuild the internal cache by querying for all needed data WITHOUT generating any events to send to listeners.
        Throws:
        java.lang.Exception - errors
      • getCurrentData

        public ChildData getCurrentData()
        Return the current data. There are no guarantees of accuracy. This is merely the most recent view of the data. If the node does not exist, this returns null
        Returns:
        data or null
      • getPath

        public java.lang.String getPath()
        Return the path this cache is watching
        Returns:
        path
      • handleException

        protected void handleException​(java.lang.Throwable e)
        Default behavior is just to log the exception
        Parameters:
        e - the exception