[
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)