Repository: curator
Updated Branches:
  refs/heads/CURATOR-397 52b334c30 -> 38f6306ba


Added resolving methods to the model spec too


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

Branch: refs/heads/CURATOR-397
Commit: 38f6306ba109a61709e88b5acad233d0ba8dff26
Parents: 52b334c
Author: randgalt <randg...@apache.org>
Authored: Wed Apr 26 17:05:39 2017 -0500
Committer: randgalt <randg...@apache.org>
Committed: Wed Apr 26 17:05:39 2017 -0500

----------------------------------------------------------------------
 .../x/async/modeled/CuratorModelSpec.java       | 24 ++++++++++++++++++++
 .../modeled/details/CuratorModelSpecImpl.java   | 14 +++++++++++-
 2 files changed, 37 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/curator/blob/38f6306b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/CuratorModelSpec.java
----------------------------------------------------------------------
diff --git 
a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/CuratorModelSpec.java
 
b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/CuratorModelSpec.java
index d491cfa..f8dc972 100644
--- 
a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/CuratorModelSpec.java
+++ 
b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/CuratorModelSpec.java
@@ -26,6 +26,7 @@ import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.data.ACL;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Supplier;
 
 public interface CuratorModelSpec<T>
 {
@@ -69,6 +70,29 @@ public interface CuratorModelSpec<T>
     CuratorModelSpec<T> resolved(Object... parameters);
 
     /**
+     * Return a new CuratorModel instance with all the same options but 
applying to the given parameters of this CuratorModel's
+     * path via {@link 
org.apache.curator.x.async.modeled.ZPath#resolved(Object...)}
+     *
+     * @param parameters list of replacements. Must have be the same length as 
the number of
+     *                   parameter nodes in the path
+     * @return new Modeled Curator instance
+     */
+    CuratorModelSpec<T> resolved(List<Object> parameters);
+
+    /**
+     * An "auto" resolving version of this CuratorModel. i.e. if any of the 
path names is
+     * the {@link 
org.apache.curator.x.async.modeled.ZPath#parameterNodeName()} the ZPath must be 
resolved. This method
+     * creates a new CuratorModelSpec that auto resolves by using the given 
parameter suppliers
+     * whenever needed.
+     *
+     * @param parameterSuppliers parameter suppliers
+     * @return new auto resolving ZNode
+     * @see #resolved(Object...)
+     * @see org.apache.curator.x.async.modeled.ZPath#parameterNodeName()
+     */
+    CuratorModelSpec<T> resolving(List<Supplier<Object>> parameterSuppliers);
+
+    /**
      * Return the model's path
      *
      * @return path

http://git-wip-us.apache.org/repos/asf/curator/blob/38f6306b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/CuratorModelSpecImpl.java
----------------------------------------------------------------------
diff --git 
a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/CuratorModelSpecImpl.java
 
b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/CuratorModelSpecImpl.java
index 863a9e3..520d78d 100644
--- 
a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/CuratorModelSpecImpl.java
+++ 
b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/CuratorModelSpecImpl.java
@@ -23,7 +23,6 @@ import com.google.common.collect.ImmutableSet;
 import org.apache.curator.framework.schema.Schema;
 import org.apache.curator.framework.schema.SchemaValidator;
 import org.apache.curator.framework.schema.SchemaViolation;
-import org.apache.curator.utils.ZKPaths;
 import org.apache.curator.x.async.api.CreateOption;
 import org.apache.curator.x.async.api.DeleteOption;
 import org.apache.curator.x.async.modeled.CuratorModelSpec;
@@ -34,6 +33,7 @@ import org.apache.zookeeper.data.ACL;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
+import java.util.function.Supplier;
 
 public class CuratorModelSpecImpl<T> implements CuratorModelSpec<T>, 
SchemaValidator
 {
@@ -75,6 +75,18 @@ public class CuratorModelSpecImpl<T> implements 
CuratorModelSpec<T>, SchemaValid
     }
 
     @Override
+    public CuratorModelSpec<T> resolved(List<Object> parameters)
+    {
+        return new CuratorModelSpecImpl<>(path.resolved(parameters), 
serializer, createMode, aclList, createOptions, deleteOptions);
+    }
+
+    @Override
+    public CuratorModelSpec<T> resolving(List<Supplier<Object>> 
parameterSuppliers)
+    {
+        return new CuratorModelSpecImpl<>(path.resolving(parameterSuppliers), 
serializer, createMode, aclList, createOptions, deleteOptions);
+    }
+
+    @Override
     public ZPath path()
     {
         return path;

Reply via email to