curator-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CURATOR-144) TreeCache should use a builder for advanced options
Date Sun, 24 Aug 2014 23:31:57 GMT

    [ https://issues.apache.org/jira/browse/CURATOR-144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14108630#comment-14108630
] 

ASF GitHub Bot commented on CURATOR-144:
----------------------------------------

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


> TreeCache should use a builder for advanced options
> ---------------------------------------------------
>
>                 Key: CURATOR-144
>                 URL: https://issues.apache.org/jira/browse/CURATOR-144
>             Project: Apache Curator
>          Issue Type: Improvement
>          Components: Recipes
>            Reporter: Scott Blum
>            Priority: Minor
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>




--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message