Repository: curator Updated Branches: refs/heads/CURATOR-397 b83bef9de -> f7d410f8e
It doesn't make sense for cached() to cache the root node. So, don't Project: http://git-wip-us.apache.org/repos/asf/curator/repo Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/f7d410f8 Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/f7d410f8 Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/f7d410f8 Branch: refs/heads/CURATOR-397 Commit: f7d410f8e11a840a36c7bb97313ed3fb7edf73ca Parents: b83bef9 Author: randgalt <[email protected]> Authored: Wed Jun 28 09:19:03 2017 -0500 Committer: randgalt <[email protected]> Committed: Wed Jun 28 09:19:03 2017 -0500 ---------------------------------------------------------------------- .../x/async/modeled/ModeledFramework.java | 5 ++++ .../async/modeled/details/ModeledCacheImpl.java | 26 ++++++++++++-------- 2 files changed, 21 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/curator/blob/f7d410f8/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/ModeledFramework.java ---------------------------------------------------------------------- diff --git a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/ModeledFramework.java b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/ModeledFramework.java index a53d22b..8f03387 100644 --- a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/ModeledFramework.java +++ b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/ModeledFramework.java @@ -75,6 +75,11 @@ public interface ModeledFramework<T> * </p> * * <p> + * Note: the root node (the main path of the model) is <em>not</em> cached. i.e. only nodes + * below the root are cached. + * </p> + * + * <p> * Note: this method internally allocates an Executor for the cache and read methods. Use * {@link #cached(java.util.concurrent.ExecutorService)} if you'd like to provide your own executor service. * </p> http://git-wip-us.apache.org/repos/asf/curator/blob/f7d410f8/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java ---------------------------------------------------------------------- diff --git a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java index 4c281aa..72e6762 100644 --- a/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java +++ b/curator-x-async/src/main/java/org/apache/curator/x/async/modeled/details/ModeledCacheImpl.java @@ -159,13 +159,16 @@ class ModeledCacheImpl<T> implements TreeCacheListener, ModeledCache<T> case NODE_UPDATED: { ZPath path = ZPath.parse(event.getData().getPath()); - byte[] bytes = event.getData().getData(); - if ( (bytes != null) && (bytes.length > 0) ) // otherwise it's probably just a parent node being created + if ( !path.equals(basePath) ) { - T model = serializer.deserialize(bytes); - entries.put(path, new Entry<>(event.getData().getStat(), model)); - ModeledCacheListener.Type type = (event.getType() == TreeCacheEvent.Type.NODE_ADDED) ? ModeledCacheListener.Type.NODE_ADDED : ModeledCacheListener.Type.NODE_UPDATED; - accept(type, path, event.getData().getStat(), model); + byte[] bytes = event.getData().getData(); + if ( (bytes != null) && (bytes.length > 0) ) // otherwise it's probably just a parent node being created + { + T model = serializer.deserialize(bytes); + entries.put(path, new Entry<>(event.getData().getStat(), model)); + ModeledCacheListener.Type type = (event.getType() == TreeCacheEvent.Type.NODE_ADDED) ? ModeledCacheListener.Type.NODE_ADDED : ModeledCacheListener.Type.NODE_UPDATED; + accept(type, path, event.getData().getStat(), model); + } } break; } @@ -173,10 +176,13 @@ class ModeledCacheImpl<T> implements TreeCacheListener, ModeledCache<T> case NODE_REMOVED: { ZPath path = ZPath.parse(event.getData().getPath()); - Entry<T> entry = entries.remove(path); - T model = (entry != null) ? entry.model : serializer.deserialize(event.getData().getData()); - Stat stat = (entry != null) ? entry.stat : event.getData().getStat(); - accept(ModeledCacheListener.Type.NODE_REMOVED, path, stat, model); + if ( !path.equals(basePath) ) + { + Entry<T> entry = entries.remove(path); + T model = (entry != null) ? entry.model : serializer.deserialize(event.getData().getData()); + Stat stat = (entry != null) ? entry.stat : event.getData().getStat(); + accept(ModeledCacheListener.Type.NODE_REMOVED, path, stat, model); + } break; }
