curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cammckenzie <...@git.apache.org>
Subject [GitHub] curator pull request: CURATOR-144: TreeCache.Builder to configure ...
Date Sun, 24 Aug 2014 23:30:22 GMT
Github user cammckenzie commented on a diff in the pull request:

    https://github.com/apache/curator/pull/41#discussion_r16638814
  
    --- Diff: curator-recipes/src/main/java/org/apache/curator/framework/recipes/cache/TreeCache.java
---
    @@ -65,6 +67,106 @@
     {
         private static final Logger LOG = LoggerFactory.getLogger(TreeCache.class);
     
    +    public static final class Builder {
    +        private final CuratorFramework client;
    +        private final String path;
    +        private boolean cacheData = true;
    +        private boolean dataIsCompressed = false;
    +        private CloseableExecutorService executorService = null;
    +
    +        private Builder(CuratorFramework client, String path) {
    +            this.client = checkNotNull(client);
    +            this.path = validatePath(path);
    +        }
    +
    +        /**
    +         * Builds the {@link TreeCache} based on configured values.
    +         */
    +        public TreeCache build()
    +        {
    +            CloseableExecutorService executor = executorService;
    +            if ( executor == null )
    +            {
    +                executor = new CloseableExecutorService(Executors.newSingleThreadExecutor(defaultThreadFactory));
    +            }
    +            return new TreeCache(client, path, cacheData, dataIsCompressed, executor);
    +        }
    +
    +        /**
    +         * Builds the {@link TreeCache} based on configured values, and starts it.
    +         */
    +        public TreeCache buildAndStart() throws Exception
    +        {
    +            TreeCache treeCache = build();
    +            treeCache.start();
    +            return treeCache;
    +        }
    +
    +        /**
    +         * Sets whether or not to cache byte data per node; default {@code true}.
    +         */
    +        public Builder setCacheData(boolean cacheData)
    +        {
    +            this.cacheData = cacheData;
    +            return this;
    +        }
    +
    +        /**
    +         * Sets whether or to decompress node data; default {@code false}.
    +         */
    +        public Builder setDataIsCompressed(boolean dataIsCompressed)
    +        {
    +            this.dataIsCompressed = dataIsCompressed;
    +            return this;
    +        }
    +
    +        /**
    +         * Sets the executor to publish events; a default executor will be created if
not specified.
    +         */
    +        public Builder setExecutor(ThreadFactory threadFactory)
    +        {
    +            return setExecutor(new CloseableExecutorService(Executors.newSingleThreadExecutor(threadFactory)));
    +        }
    +
    +        /**
    +         * Sets the executor to publish events; a default executor will be created if
not specified.
    +         */
    +        public Builder setExecutor(ExecutorService executorService)
    +        {
    +            if (executorService instanceof CloseableExecutorService) {
    +                return setExecutor((CloseableExecutorService) executorService);
    +            } else {
    +                return setExecutor(new CloseableExecutorService(executorService));
    +            }
    +        }
    +
    +        /**
    +         * Sets the executor to publish events; a default executor will be created if
not specified.
    +         */
    +        public Builder setExecutor(CloseableExecutorService executorService)
    +        {
    +            this.executorService = checkNotNull(executorService);
    +            return this;
    +        }
    +    }
    +
    +    /**
    +     * Create a TreeCache builder for the given client and path to configure advanced
options.
    +     *
    +     * If the client is namespaced, all operations on the resulting TreeCache will be
in terms of
    +     * the namespace, including all published events.  The given path is the root at
which the
    +     * TreeCache will watch and explore.  If no node exists at the given path, the TreeCache
will
    +     * be initially empty.
    +     *
    +     * @param client the client to use; may be namespaced
    +     * @param path the path to the root node to watch/explore; this path need not actually
exist on
    +     *             the server
    +     * @return a new builder
    +     */
    +    public static Builder newBuilder(CuratorFramework client, String path) {
    +        return new Builder(client, path);
    --- End diff --
    
    nit: formatting


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message