Return-Path: X-Original-To: apmail-curator-dev-archive@minotaur.apache.org Delivered-To: apmail-curator-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 0CFF911702 for ; Sun, 24 Aug 2014 23:31:58 +0000 (UTC) Received: (qmail 29997 invoked by uid 500); 24 Aug 2014 23:31:57 -0000 Delivered-To: apmail-curator-dev-archive@curator.apache.org Received: (qmail 29950 invoked by uid 500); 24 Aug 2014 23:31:57 -0000 Mailing-List: contact dev-help@curator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@curator.apache.org Delivered-To: mailing list dev@curator.apache.org Received: (qmail 29937 invoked by uid 99); 24 Aug 2014 23:31:57 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 24 Aug 2014 23:31:57 +0000 Date: Sun, 24 Aug 2014 23:31:57 +0000 (UTC) From: "ASF GitHub Bot (JIRA)" To: dev@curator.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (CURATOR-144) TreeCache should use a builder for advanced options MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CURATOR-144?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14108629#comment-14108629 ] 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_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 > 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)