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:03 GMT
Github user cammckenzie commented on a diff in the pull request:

    https://github.com/apache/curator/pull/41#discussion_r16638810
  
    --- 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));
    +            }
    --- 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