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;