You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2016/12/07 14:51:49 UTC

curator git commit: TTL node support for PersistentNode

Repository: curator
Updated Branches:
  refs/heads/CURATOR-351 786d69587 -> 44eb60c92


TTL node support for PersistentNode


Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/44eb60c9
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/44eb60c9
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/44eb60c9

Branch: refs/heads/CURATOR-351
Commit: 44eb60c92fd29c440b0a17c85fbe0f6ec8fbda6e
Parents: 786d695
Author: randgalt <ra...@apache.org>
Authored: Wed Dec 7 15:51:40 2016 +0100
Committer: randgalt <ra...@apache.org>
Committed: Wed Dec 7 15:51:40 2016 +0100

----------------------------------------------------------------------
 .../framework/recipes/nodes/PersistentNode.java | 46 ++++++++++++++------
 1 file changed, 33 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/44eb60c9/curator-recipes/src/main/java/org/apache/curator/framework/recipes/nodes/PersistentNode.java
----------------------------------------------------------------------
diff --git a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/nodes/PersistentNode.java b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/nodes/PersistentNode.java
index 8375967..eaa91b7 100644
--- a/curator-recipes/src/main/java/org/apache/curator/framework/recipes/nodes/PersistentNode.java
+++ b/curator-recipes/src/main/java/org/apache/curator/framework/recipes/nodes/PersistentNode.java
@@ -26,6 +26,7 @@ import org.apache.curator.framework.WatcherRemoveCuratorFramework;
 import org.apache.curator.framework.api.ACLBackgroundPathAndBytesable;
 import org.apache.curator.framework.api.BackgroundCallback;
 import org.apache.curator.framework.api.CreateBuilder;
+import org.apache.curator.framework.api.CreateBuilderMain;
 import org.apache.curator.framework.api.CreateModable;
 import org.apache.curator.framework.api.CuratorEvent;
 import org.apache.curator.framework.api.CuratorWatcher;
@@ -164,6 +165,19 @@ public class PersistentNode implements Closeable
      */
     public PersistentNode(CuratorFramework givenClient, final CreateMode mode, boolean useProtection, final String basePath, byte[] initData)
     {
+        this(givenClient, mode, useProtection, basePath, initData, -1);
+    }
+
+    /**
+     * @param givenClient        client instance
+     * @param mode          creation mode
+     * @param useProtection if true, call {@link CreateBuilder#withProtection()}
+     * @param basePath the base path for the node
+     * @param initData data for the node
+     * @param ttl for ttl modes, the ttl to use
+     */
+    public PersistentNode(CuratorFramework givenClient, final CreateMode mode, boolean useProtection, final String basePath, byte[] initData, long ttl)
+    {
         this.useProtection = useProtection;
         this.client = Preconditions.checkNotNull(givenClient, "client cannot be null").newWatcherRemoveCuratorFramework();
         this.basePath = PathUtils.validatePath(basePath);
@@ -186,7 +200,8 @@ public class PersistentNode implements Closeable
             }
         };
 
-        createMethod = useProtection ? client.create().creatingParentContainersIfNeeded().withProtection() : client.create().creatingParentContainersIfNeeded();
+        CreateBuilderMain createBuilder = mode.isTTL() ? client.create().withTtl(ttl) : client.create();
+        createMethod = useProtection ? createBuilder.creatingParentContainersIfNeeded().withProtection() : createBuilder.creatingParentContainersIfNeeded();
         this.data.set(Arrays.copyOf(data, data.length));
     }
 
@@ -426,20 +441,25 @@ public class PersistentNode implements Closeable
         {
             switch ( mode )
             {
-            default:
-            {
-                break;
-            }
+                default:
+                {
+                    break;
+                }
 
-            case EPHEMERAL_SEQUENTIAL:
-            {
-                return CreateMode.EPHEMERAL;    // protection case - node already set
-            }
+                case EPHEMERAL_SEQUENTIAL:
+                {
+                    return CreateMode.EPHEMERAL;    // protection case - node already set
+                }
 
-            case PERSISTENT_SEQUENTIAL:
-            {
-                return CreateMode.PERSISTENT;    // protection case - node already set
-            }
+                case PERSISTENT_SEQUENTIAL:
+                {
+                    return CreateMode.PERSISTENT;    // protection case - node already set
+                }
+
+                case PERSISTENT_SEQUENTIAL_WITH_TTL:
+                {
+                    return CreateMode.PERSISTENT_WITH_TTL;    // protection case - node already set
+                }
             }
         }
         return mode;