You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2016/03/10 23:55:29 UTC
[1/8] curator git commit: [maven-release-plugin] prepare release
apache-curator-2.10.0
Repository: curator
Updated Branches:
refs/heads/CURATOR-3.0 8ef32cc27 -> 062a7d750
[maven-release-plugin] prepare release apache-curator-2.10.0
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/4956fd96
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/4956fd96
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/4956fd96
Branch: refs/heads/CURATOR-3.0
Commit: 4956fd9604d3188d58552001f1e8fea587bad810
Parents: 567cac3
Author: randgalt <ra...@apache.org>
Authored: Mon Feb 8 13:25:42 2016 -0500
Committer: randgalt <ra...@apache.org>
Committed: Mon Feb 8 13:25:42 2016 -0500
----------------------------------------------------------------------
curator-client/pom.xml | 4 ++--
curator-examples/pom.xml | 2 +-
curator-framework/pom.xml | 4 ++--
curator-recipes/pom.xml | 4 ++--
curator-test/pom.xml | 4 ++--
curator-x-discovery-server/pom.xml | 4 ++--
curator-x-discovery/pom.xml | 4 ++--
curator-x-rpc/pom.xml | 4 ++--
pom.xml | 4 ++--
9 files changed, 17 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/4956fd96/curator-client/pom.xml
----------------------------------------------------------------------
diff --git a/curator-client/pom.xml b/curator-client/pom.xml
index 9a12344..f25e331 100644
--- a/curator-client/pom.xml
+++ b/curator-client/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-client</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>bundle</packaging>
<name>Curator Client</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/4956fd96/curator-examples/pom.xml
----------------------------------------------------------------------
diff --git a/curator-examples/pom.xml b/curator-examples/pom.xml
index 67505ad..f3a7840 100644
--- a/curator-examples/pom.xml
+++ b/curator-examples/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-examples</artifactId>
http://git-wip-us.apache.org/repos/asf/curator/blob/4956fd96/curator-framework/pom.xml
----------------------------------------------------------------------
diff --git a/curator-framework/pom.xml b/curator-framework/pom.xml
index 3dbbdbb..d71c7fa 100644
--- a/curator-framework/pom.xml
+++ b/curator-framework/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-framework</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>bundle</packaging>
<name>Curator Framework</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/4956fd96/curator-recipes/pom.xml
----------------------------------------------------------------------
diff --git a/curator-recipes/pom.xml b/curator-recipes/pom.xml
index bbcb749..5534a52 100644
--- a/curator-recipes/pom.xml
+++ b/curator-recipes/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-recipes</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>bundle</packaging>
<name>Curator Recipes</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/4956fd96/curator-test/pom.xml
----------------------------------------------------------------------
diff --git a/curator-test/pom.xml b/curator-test/pom.xml
index 2f5455d..ff7cd11 100644
--- a/curator-test/pom.xml
+++ b/curator-test/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-test</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<name>Curator Testing</name>
<description>Unit testing utilities.</description>
http://git-wip-us.apache.org/repos/asf/curator/blob/4956fd96/curator-x-discovery-server/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-discovery-server/pom.xml b/curator-x-discovery-server/pom.xml
index da80059..7f7a4c1 100644
--- a/curator-x-discovery-server/pom.xml
+++ b/curator-x-discovery-server/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-x-discovery-server</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>bundle</packaging>
<name>Curator Service Discovery Server</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/4956fd96/curator-x-discovery/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-discovery/pom.xml b/curator-x-discovery/pom.xml
index bcb896f..7bcb64f 100644
--- a/curator-x-discovery/pom.xml
+++ b/curator-x-discovery/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-x-discovery</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>bundle</packaging>
<name>Curator Service Discovery</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/4956fd96/curator-x-rpc/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-rpc/pom.xml b/curator-x-rpc/pom.xml
index 2b16996..8bbce93 100644
--- a/curator-x-rpc/pom.xml
+++ b/curator-x-rpc/pom.xml
@@ -22,12 +22,12 @@
<parent>
<artifactId>apache-curator</artifactId>
<groupId>org.apache.curator</groupId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>curator-x-rpc</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<name>Curator RPC Proxy</name>
<description>A proxy that bridges non-java environments with the Curator framework and recipes</description>
http://git-wip-us.apache.org/repos/asf/curator/blob/4956fd96/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index c13a8b5..33f22cd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.9.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>pom</packaging>
<name>Apache Curator</name>
@@ -98,7 +98,7 @@
<connection>scm:git:https://git-wip-us.apache.org/repos/asf/curator.git</connection>
<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/curator.git
</developerConnection>
- <tag>apache-curator-2.8.0</tag>
+ <tag>apache-curator-2.10.0</tag>
</scm>
<issueManagement>
[7/8] curator git commit: Merge branch 'master' into CURATOR-3.0
Posted by ra...@apache.org.
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/RemoveWatchesBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/RemoveWatchesBuilderImpl.java
index 58fae29,0000000..3d4e96d
mode 100644,000000..100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/RemoveWatchesBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/RemoveWatchesBuilderImpl.java
@@@ -1,322 -1,0 +1,335 @@@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.curator.framework.imps;
+
+import org.apache.curator.RetryLoop;
+import org.apache.curator.TimeTrace;
+import org.apache.curator.framework.api.*;
+import org.apache.curator.utils.DebugUtils;
+import org.apache.zookeeper.AsyncCallback;
+import org.apache.zookeeper.KeeperException;
+import org.apache.zookeeper.Watcher;
+import org.apache.zookeeper.Watcher.WatcherType;
+import org.apache.zookeeper.ZooKeeper;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Executor;
+
+
- public class RemoveWatchesBuilderImpl implements RemoveWatchesBuilder, RemoveWatchesType, RemoveWatchesLocal, BackgroundOperation<String>
++public class RemoveWatchesBuilderImpl implements RemoveWatchesBuilder, RemoveWatchesType, RemoveWatchesLocal, BackgroundOperation<String>, ErrorListenerPathable<Void>
+{
+ private CuratorFrameworkImpl client;
+ private Watcher watcher;
+ private CuratorWatcher curatorWatcher;
+ private WatcherType watcherType;
+ private boolean guaranteed;
+ private boolean local;
+ private boolean quietly;
+ private Backgrounding backgrounding;
+
+ public RemoveWatchesBuilderImpl(CuratorFrameworkImpl client)
+ {
+ this.client = client;
+ this.watcher = null;
+ this.curatorWatcher = null;
+ this.watcherType = WatcherType.Any;
+ this.guaranteed = false;
+ this.local = false;
+ this.quietly = false;
+ this.backgrounding = new Backgrounding();
+ }
+
+ void internalRemoval(Watcher watcher, String path) throws Exception
+ {
+ this.watcher = watcher;
+ watcherType = WatcherType.Any;
+ quietly = true;
+ guaranteed = true;
+ if ( Boolean.getBoolean(DebugUtils.PROPERTY_REMOVE_WATCHERS_IN_FOREGROUND) )
+ {
+ this.backgrounding = new Backgrounding();
+ pathInForeground(path);
+ }
+ else
+ {
+ this.backgrounding = new Backgrounding(true);
+ pathInBackground(path);
+ }
+ }
+
+ @Override
+ public RemoveWatchesType remove(Watcher watcher)
+ {
+ this.watcher = watcher;
+ this.curatorWatcher = null;
+ return this;
+ }
+
+ @Override
+ public RemoveWatchesType remove(CuratorWatcher watcher)
+ {
+ this.watcher = null;
+ this.curatorWatcher = watcher;
+ return this;
+ }
+
+ @Override
+ public RemoveWatchesType removeAll()
+ {
+ this.watcher = null;
+ this.curatorWatcher = null;
+ return this;
+ }
+
+ @Override
+ public RemoveWatchesLocal ofType(WatcherType watcherType)
+ {
+ this.watcherType = watcherType;
+
+ return this;
+ }
+
+ @Override
- public Pathable<Void> inBackground(BackgroundCallback callback, Object context)
++ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Object context)
+ {
+ backgrounding = new Backgrounding(callback, context);
+ return this;
+ }
+
+ @Override
- public Pathable<Void> inBackground(BackgroundCallback callback, Object context, Executor executor)
++ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ {
+ backgrounding = new Backgrounding(client, callback, context, executor);
+ return this;
+ }
+
+ @Override
- public Pathable<Void> inBackground(BackgroundCallback callback)
++ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback)
+ {
+ backgrounding = new Backgrounding(callback);
+ return this;
+ }
+
+ @Override
- public Pathable<Void> inBackground(BackgroundCallback callback, Executor executor)
++ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Executor executor)
+ {
+ backgrounding = new Backgrounding(client, callback, executor);
+ return this;
+ }
+
+ @Override
- public Pathable<Void> inBackground()
++ public ErrorListenerPathable<Void> inBackground()
+ {
+ backgrounding = new Backgrounding(true);
+ return this;
+ }
+
+ @Override
- public Pathable<Void> inBackground(Object context)
++ public ErrorListenerPathable<Void> inBackground(Object context)
+ {
+ backgrounding = new Backgrounding(context);
+ return this;
+ }
-
++
++ @Override
++ public Pathable<Void> withUnhandledErrorListener(UnhandledErrorListener listener)
++ {
++ backgrounding = new Backgrounding(backgrounding, listener);
++ return this;
++ }
++
+ @Override
+ public RemoveWatchesLocal guaranteed()
+ {
+ guaranteed = true;
+ return this;
+ }
+
+ @Override
+ public BackgroundPathableQuietlyable<Void> locally()
+ {
+ local = true;
+ return this;
+ }
+
+ @Override
+ public BackgroundPathable<Void> quietly()
+ {
+ quietly = true;
+ return this;
+ }
+
+ @Override
+ public Void forPath(String path) throws Exception
+ {
+ final String adjustedPath = client.fixForNamespace(path);
+
+ if(backgrounding.inBackground())
+ {
+ pathInBackground(adjustedPath);
+ }
+ else
+ {
+ pathInForeground(adjustedPath);
+ }
+
+ return null;
+ }
+
+ private void pathInBackground(final String path)
+ {
+ OperationAndData.ErrorCallback<String> errorCallback = null;
+
+ //Only need an error callback if we're in guaranteed mode
+ if(guaranteed)
+ {
+ errorCallback = new OperationAndData.ErrorCallback<String>()
+ {
+ @Override
+ public void retriesExhausted(OperationAndData<String> operationAndData)
+ {
+ client.getFailedRemoveWatcherManager().addFailedOperation(new FailedRemoveWatchManager.FailedRemoveWatchDetails(path, watcher));
+ }
+ };
+ }
+
+ client.processBackgroundOperation(new OperationAndData<String>(this, path, backgrounding.getCallback(),
+ errorCallback, backgrounding.getContext(), !local), null);
+ }
+
+ private void pathInForeground(final String path) throws Exception
+ {
+ NamespaceWatcher namespaceWatcher = makeNamespaceWatcher(path);
+ //For the local case we don't want to use the normal retry loop and we don't want to block until a connection is available.
+ //We just execute the removeWatch, and if it fails, ZK will just remove local watches.
+ if ( local )
+ {
+ ZooKeeper zkClient = client.getZooKeeper();
+ if ( namespaceWatcher != null )
+ {
+ zkClient.removeWatches(path, namespaceWatcher, watcherType, local);
+ }
+ else
+ {
+ zkClient.removeAllWatches(path, watcherType, local);
+ }
+ }
+ else
+ {
+ final NamespaceWatcher finalNamespaceWatcher = namespaceWatcher;
+ RetryLoop.callWithRetry(client.getZookeeperClient(),
+ new Callable<Void>()
+ {
+ @Override
+ public Void call() throws Exception
+ {
+ try
+ {
+ ZooKeeper zkClient = client.getZookeeperClient().getZooKeeper();
+
+ if ( finalNamespaceWatcher != null )
+ {
+ zkClient.removeWatches(path, finalNamespaceWatcher, watcherType, false);
+ }
+ else
+ {
+ zkClient.removeAllWatches(path, watcherType, false);
+ }
+ }
+ catch(Exception e)
+ {
+ if( RetryLoop.isRetryException(e) && guaranteed )
+ {
+ //Setup the guaranteed handler
+ client.getFailedRemoveWatcherManager().addFailedOperation(new FailedRemoveWatchManager.FailedRemoveWatchDetails(path, finalNamespaceWatcher));
+ throw e;
+ }
+ else if(e instanceof KeeperException.NoWatcherException && quietly)
+ {
+ // ignore
+ }
+ else
+ {
+ //Rethrow
+ throw e;
+ }
+ }
+
+ return null;
+ }
+ });
+ }
+ }
+
+ private NamespaceWatcher makeNamespaceWatcher(String path)
+ {
+ NamespaceWatcher namespaceWatcher = null;
+ if ( watcher != null )
+ {
+ if ( watcher instanceof NamespaceWatcher )
+ {
+ namespaceWatcher = (NamespaceWatcher)watcher;
+ }
+ else
+ {
+ namespaceWatcher = new NamespaceWatcher(client, watcher, path);
+ }
+ }
+ else if ( curatorWatcher != null )
+ {
+ namespaceWatcher = new NamespaceWatcher(client, curatorWatcher, path);
+ }
+ return namespaceWatcher;
+ }
+
+ @Override
+ public void performBackgroundOperation(final OperationAndData<String> operationAndData)
+ throws Exception
+ {
- final TimeTrace trace = client.getZookeeperClient().startTracer("RemoteWatches-Background");
-
- AsyncCallback.VoidCallback callback = new AsyncCallback.VoidCallback()
++ try
+ {
- @Override
- public void processResult(int rc, String path, Object ctx)
++ final TimeTrace trace = client.getZookeeperClient().startTracer("RemoteWatches-Background");
++
++ AsyncCallback.VoidCallback callback = new AsyncCallback.VoidCallback()
+ {
- trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.REMOVE_WATCHES, rc, path, null, ctx, null, null, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
- }
- };
++ @Override
++ public void processResult(int rc, String path, Object ctx)
++ {
++ trace.commit();
++ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.REMOVE_WATCHES, rc, path, null, ctx, null, null, null, null, null, null);
++ client.processBackgroundOperation(operationAndData, event);
++ }
++ };
+
- ZooKeeper zkClient = client.getZooKeeper();
- NamespaceWatcher namespaceWatcher = makeNamespaceWatcher(operationAndData.getData());
- if(namespaceWatcher == null)
- {
- zkClient.removeAllWatches(operationAndData.getData(), watcherType, local, callback, operationAndData.getContext());
++ ZooKeeper zkClient = client.getZooKeeper();
++ NamespaceWatcher namespaceWatcher = makeNamespaceWatcher(operationAndData.getData());
++ if(namespaceWatcher == null)
++ {
++ zkClient.removeAllWatches(operationAndData.getData(), watcherType, local, callback, operationAndData.getContext());
++ }
++ else
++ {
++ zkClient.removeWatches(operationAndData.getData(), namespaceWatcher, watcherType, local, callback, operationAndData.getContext());
++ }
+ }
- else
++ catch ( Throwable e )
+ {
- zkClient.removeWatches(operationAndData.getData(), namespaceWatcher, watcherType, local, callback, operationAndData.getContext());
++ backgrounding.checkError(e);
+ }
-
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/SetACLBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/SetACLBuilderImpl.java
index 17e88f8,5507529..312071c
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/SetACLBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/SetACLBuilderImpl.java
@@@ -124,26 -131,33 +131,33 @@@ class SetACLBuilderImpl implements SetA
@Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("SetACLBuilderImpl-Background");
- String path = operationAndData.getData();
- client.getZooKeeper().setACL
- (
- path,
- acling.getAclList(path),
- version,
- new AsyncCallback.StatCallback()
- {
- @SuppressWarnings({"unchecked"})
- @Override
- public void processResult(int rc, String path, Object ctx, Stat stat)
+ try
+ {
+ final TimeTrace trace = client.getZookeeperClient().startTracer("SetACLBuilderImpl-Background");
+ String path = operationAndData.getData();
+ client.getZooKeeper().setACL
+ (
+ path,
+ acling.getAclList(path),
+ version,
+ new AsyncCallback.StatCallback()
{
- trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SET_ACL, rc, path, null, ctx, stat, null, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
- }
- },
- backgrounding.getContext()
- );
+ @SuppressWarnings({"unchecked"})
+ @Override
+ public void processResult(int rc, String path, Object ctx, Stat stat)
+ {
+ trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SET_ACL, rc, path, null, ctx, stat, null, null, null, null);
++ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SET_ACL, rc, path, null, ctx, stat, null, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
+ }
+ },
+ backgrounding.getContext()
+ );
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
private Stat pathInForeground(final String path) throws Exception
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
index 7057c11,62e39cf..e75377d
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
@@@ -20,14 -20,8 +20,7 @@@ package org.apache.curator.framework.im
import org.apache.curator.RetryLoop;
import org.apache.curator.TimeTrace;
- import org.apache.curator.framework.api.BackgroundCallback;
- import org.apache.curator.framework.api.BackgroundPathAndBytesable;
- import org.apache.curator.framework.api.CuratorEvent;
- import org.apache.curator.framework.api.CuratorEventType;
- import org.apache.curator.framework.api.PathAndBytesable;
- import org.apache.curator.framework.api.SetDataBackgroundVersionable;
- import org.apache.curator.framework.api.SetDataBuilder;
- import org.apache.curator.framework.api.VersionPathAndBytesable;
+ import org.apache.curator.framework.api.*;
-import org.apache.curator.framework.api.transaction.CuratorTransactionBridge;
import org.apache.curator.framework.api.transaction.OperationType;
import org.apache.curator.framework.api.transaction.TransactionSetDataBuilder;
import org.apache.zookeeper.AsyncCallback;
@@@ -202,27 -197,41 +195,41 @@@ class SetDataBuilderImpl implements Set
}
@Override
+ public PathAndBytesable<Stat> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public void performBackgroundOperation(final OperationAndData<PathAndBytes> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("SetDataBuilderImpl-Background");
- client.getZooKeeper().setData
- (
- operationAndData.getData().getPath(),
- operationAndData.getData().getData(),
- version,
- new AsyncCallback.StatCallback()
- {
- @SuppressWarnings({"unchecked"})
- @Override
- public void processResult(int rc, String path, Object ctx, Stat stat)
+ try
+ {
+ final TimeTrace trace = client.getZookeeperClient().startTracer("SetDataBuilderImpl-Background");
+ client.getZooKeeper().setData
+ (
+ operationAndData.getData().getPath(),
+ operationAndData.getData().getData(),
+ version,
+ new AsyncCallback.StatCallback()
{
- trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SET_DATA, rc, path, null, ctx, stat, null, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
- }
- },
- backgrounding.getContext()
- );
+ @SuppressWarnings({"unchecked"})
+ @Override
+ public void processResult(int rc, String path, Object ctx, Stat stat)
+ {
+ trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SET_DATA, rc, path, null, ctx, stat, null, null, null, null);
++ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SET_DATA, rc, path, null, ctx, stat, null, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
+ }
+ },
+ backgrounding.getContext()
+ );
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/SyncBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/SyncBuilderImpl.java
index be4d33a,1e5f371..51b4e04
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/SyncBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/SyncBuilderImpl.java
@@@ -81,23 -83,37 +83,37 @@@ public class SyncBuilderImpl implement
}
@Override
- public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
+ public Pathable<Void> withUnhandledErrorListener(UnhandledErrorListener listener)
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("SyncBuilderImpl-Background");
- final String path = operationAndData.getData();
- String adjustedPath = client.fixForNamespace(path);
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
- AsyncCallback.VoidCallback voidCallback = new AsyncCallback.VoidCallback()
+ @Override
+ public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
+ {
+ try
{
- @Override
- public void processResult(int rc, String path, Object ctx)
+ final TimeTrace trace = client.getZookeeperClient().startTracer("SyncBuilderImpl-Background");
+ final String path = operationAndData.getData();
+ String adjustedPath = client.fixForNamespace(path);
+
+ AsyncCallback.VoidCallback voidCallback = new AsyncCallback.VoidCallback()
{
- trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SYNC, rc, path, path, ctx, null, null, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
- }
- };
- client.getZooKeeper().sync(adjustedPath, voidCallback, backgrounding.getContext());
+ @Override
+ public void processResult(int rc, String path, Object ctx)
+ {
+ trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SYNC, rc, path, path, ctx, null, null, null, null, null);
++ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SYNC, rc, path, path, ctx, null, null, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
+ }
+ };
+ client.getZooKeeper().sync(adjustedPath, voidCallback, backgrounding.getContext());
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkBackground.java
----------------------------------------------------------------------
diff --cc curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkBackground.java
index 83dab6b,8e21929..b9fd5c9
--- a/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkBackground.java
+++ b/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkBackground.java
@@@ -20,9 -20,9 +20,10 @@@
package org.apache.curator.framework.imps;
import com.google.common.collect.Lists;
+import com.google.common.collect.Queues;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
+ import org.apache.curator.framework.api.ACLProvider;
import org.apache.curator.framework.api.BackgroundCallback;
import org.apache.curator.framework.api.CuratorEvent;
import org.apache.curator.framework.api.UnhandledErrorListener;
@@@ -34,23 -34,66 +35,71 @@@ import org.apache.curator.test.BaseClas
import org.apache.curator.test.Timing;
import org.apache.curator.utils.CloseableUtils;
import org.apache.zookeeper.KeeperException.Code;
+ import org.apache.zookeeper.data.ACL;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.annotations.Test;
-import java.util.Arrays;
import java.util.List;
+import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
public class TestFrameworkBackground extends BaseClassForTests
{
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
@Test
+ public void testErrorListener() throws Exception
+ {
+ ACLProvider badAclProvider = new ACLProvider()
+ {
+ @Override
+ public List<ACL> getDefaultAcl()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public List<ACL> getAclForPath(String path)
+ {
+ throw new UnsupportedOperationException();
+ }
+ };
+ CuratorFramework client = CuratorFrameworkFactory.builder()
+ .connectString(server.getConnectString())
+ .retryPolicy(new RetryOneTime(1))
+ .aclProvider(badAclProvider)
+ .build();
+ try
+ {
+ client.start();
+
+ final CountDownLatch errorLatch = new CountDownLatch(1);
+ UnhandledErrorListener listener = new UnhandledErrorListener()
+ {
+ @Override
+ public void unhandledError(String message, Throwable e)
+ {
+ if ( e instanceof UnsupportedOperationException )
+ {
+ errorLatch.countDown();
+ }
+ }
+ };
+ client.create().inBackground().withUnhandledErrorListener(listener).forPath("/foo");
+ Assert.assertTrue(new Timing().awaitLatch(errorLatch));
+ }
+ finally
+ {
+ CloseableUtils.closeQuietly(client);
+ }
+ }
+
+ @Test
public void testListenerConnectedAtStart() throws Exception
{
server.stop();
[8/8] curator git commit: Merge branch 'master' into CURATOR-3.0
Posted by ra...@apache.org.
Merge branch 'master' into CURATOR-3.0
Conflicts:
curator-client/pom.xml
curator-examples/pom.xml
curator-framework/pom.xml
curator-framework/src/main/java/org/apache/curator/framework/imps/CreateBuilderImpl.java
curator-framework/src/main/java/org/apache/curator/framework/imps/DeleteBuilderImpl.java
curator-framework/src/main/java/org/apache/curator/framework/imps/ExistsBuilderImpl.java
curator-framework/src/main/java/org/apache/curator/framework/imps/GetACLBuilderImpl.java
curator-framework/src/main/java/org/apache/curator/framework/imps/GetChildrenBuilderImpl.java
curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java
curator-framework/src/main/java/org/apache/curator/framework/imps/SetACLBuilderImpl.java
curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
curator-framework/src/main/java/org/apache/curator/framework/imps/SyncBuilderImpl.java
curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkBackground.java
curator-recipes/pom.xml
curator-test/pom.xml
curator-x-discovery-server/pom.xml
curator-x-discovery/pom.xml
curator-x-rpc/pom.xml
pom.xml
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/062a7d75
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/062a7d75
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/062a7d75
Branch: refs/heads/CURATOR-3.0
Commit: 062a7d750788a187f1d41df0bf0a6a5926a78d3a
Parents: 8ef32cc 8499680
Author: randgalt <ra...@apache.org>
Authored: Thu Mar 10 17:55:14 2016 -0500
Committer: randgalt <ra...@apache.org>
Committed: Thu Mar 10 17:55:14 2016 -0500
----------------------------------------------------------------------
.../framework/api/BackgroundEnsembleable.java | 2 +-
.../api/BackgroundPathAndBytesable.java | 2 +-
.../framework/api/BackgroundPathable.java | 2 +-
.../api/ErrorListenerEnsembleable.java | 14 ++
.../api/ErrorListenerMultiTransactionMain.java | 16 ++
.../api/ErrorListenerPathAndBytesable.java | 14 ++
.../framework/api/ErrorListenerPathable.java | 14 ++
.../api/ErrorListenerReconfigBuilderMain.java | 14 ++
.../curator/framework/api/GetConfigBuilder.java | 2 +-
.../curator/framework/api/ReconfigBuilder.java | 2 +-
.../transaction/CuratorMultiTransaction.java | 3 +-
.../curator/framework/imps/Backgrounding.java | 80 +++++--
.../framework/imps/CreateBuilderImpl.java | 236 ++++++++++---------
.../imps/CuratorMultiTransactionImpl.java | 55 +++--
.../framework/imps/DeleteBuilderImpl.java | 84 ++++---
.../framework/imps/ExistsBuilderImpl.java | 63 ++---
.../framework/imps/GetACLBuilderImpl.java | 50 ++--
.../framework/imps/GetChildrenBuilderImpl.java | 60 +++--
.../framework/imps/GetConfigBuilderImpl.java | 87 +++----
.../framework/imps/GetDataBuilderImpl.java | 94 ++++----
.../framework/imps/ReconfigBuilderImpl.java | 52 ++--
.../imps/RemoveWatchesBuilderImpl.java | 65 +++--
.../framework/imps/SetACLBuilderImpl.java | 66 ++++--
.../framework/imps/SetDataBuilderImpl.java | 85 ++++---
.../curator/framework/imps/SyncBuilderImpl.java | 56 +++--
.../framework/imps/TestFrameworkBackground.java | 49 ++++
26 files changed, 791 insertions(+), 476 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundEnsembleable.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundEnsembleable.java
index c8b323f,0000000..5f9703a
mode 100644,000000..100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundEnsembleable.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundEnsembleable.java
@@@ -1,25 -1,0 +1,25 @@@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.curator.framework.api;
+
+public interface BackgroundEnsembleable<T> extends
- Backgroundable<Ensembleable<T>>,
++ Backgroundable<ErrorListenerEnsembleable<T>>,
+ Ensembleable<T>
+{
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerEnsembleable.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerEnsembleable.java
index 0000000,0000000..1072baa
new file mode 100644
--- /dev/null
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerEnsembleable.java
@@@ -1,0 -1,0 +1,14 @@@
++package org.apache.curator.framework.api;
++
++public interface ErrorListenerEnsembleable<T> extends Ensembleable<T>
++{
++ /**
++ * Set an error listener for this background operation. If an exception
++ * occurs while processing the call in the background, this listener will
++ * be called
++ *
++ * @param listener the listener
++ * @return this for chaining
++ */
++ Ensembleable<T> withUnhandledErrorListener(UnhandledErrorListener listener);
++}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerMultiTransactionMain.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerMultiTransactionMain.java
index 0000000,0000000..a217004
new file mode 100644
--- /dev/null
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerMultiTransactionMain.java
@@@ -1,0 -1,0 +1,16 @@@
++package org.apache.curator.framework.api;
++
++import org.apache.curator.framework.api.transaction.CuratorMultiTransactionMain;
++
++public interface ErrorListenerMultiTransactionMain<T> extends CuratorMultiTransactionMain
++{
++ /**
++ * Set an error listener for this background operation. If an exception
++ * occurs while processing the call in the background, this listener will
++ * be called
++ *
++ * @param listener the listener
++ * @return this for chaining
++ */
++ CuratorMultiTransactionMain withUnhandledErrorListener(UnhandledErrorListener listener);
++}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerReconfigBuilderMain.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerReconfigBuilderMain.java
index 0000000,0000000..163ecc5
new file mode 100644
--- /dev/null
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerReconfigBuilderMain.java
@@@ -1,0 -1,0 +1,14 @@@
++package org.apache.curator.framework.api;
++
++public interface ErrorListenerReconfigBuilderMain extends ReconfigBuilderMain
++{
++ /**
++ * Set an error listener for this background operation. If an exception
++ * occurs while processing the call in the background, this listener will
++ * be called
++ *
++ * @param listener the listener
++ * @return this for chaining
++ */
++ ReconfigBuilderMain withUnhandledErrorListener(UnhandledErrorListener listener);
++}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/api/GetConfigBuilder.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/api/GetConfigBuilder.java
index d137f28,0000000..3c926d4
mode 100644,000000..100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/api/GetConfigBuilder.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/GetConfigBuilder.java
@@@ -1,28 -1,0 +1,28 @@@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.curator.framework.api;
+
+public interface GetConfigBuilder extends
+ Ensembleable<byte[]>,
- Backgroundable<Ensembleable<byte[]>>,
++ Backgroundable<ErrorListenerEnsembleable<byte[]>>,
+ Watchable<BackgroundEnsembleable<byte[]>>,
+ Statable<WatchBackgroundEnsembleable<byte[]>>
+{
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/api/ReconfigBuilder.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/api/ReconfigBuilder.java
index d8a2cc2,0000000..233558d
mode 100644,000000..100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/api/ReconfigBuilder.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/ReconfigBuilder.java
@@@ -1,26 -1,0 +1,26 @@@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.curator.framework.api;
+
+public interface ReconfigBuilder extends
+ ReconfigBuilderMain,
- Backgroundable<ReconfigBuilderMain>
++ Backgroundable<ErrorListenerReconfigBuilderMain>
+{
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/api/transaction/CuratorMultiTransaction.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/api/transaction/CuratorMultiTransaction.java
index 07bf191,0000000..e919a33
mode 100644,000000..100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/api/transaction/CuratorMultiTransaction.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/transaction/CuratorMultiTransaction.java
@@@ -1,27 -1,0 +1,28 @@@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.curator.framework.api.transaction;
+
+import org.apache.curator.framework.api.Backgroundable;
++import org.apache.curator.framework.api.ErrorListenerMultiTransactionMain;
+
+public interface CuratorMultiTransaction extends
- Backgroundable<CuratorMultiTransactionMain>,
++ Backgroundable<ErrorListenerMultiTransactionMain>,
+ CuratorMultiTransactionMain
+{
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/CreateBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/CreateBuilderImpl.java
index 57adae3,0f893d8..ace163b
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/CreateBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/CreateBuilderImpl.java
@@@ -525,157 -508,40 +532,164 @@@ class CreateBuilderImpl implements Crea
@Override
public void performBackgroundOperation(final OperationAndData<PathAndBytes> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("CreateBuilderImpl-Background");
-
- if(storingStat == null)
+ try
{
- client.getZooKeeper().create
- (
- operationAndData.getData().getPath(),
- operationAndData.getData().getData(),
- acling.getAclList(operationAndData.getData().getPath()),
- createMode,
- new AsyncCallback.StringCallback()
- {
- @Override
- public void processResult(int rc, String path, Object ctx, String name)
- {
- trace.commit();
+ final TimeTrace trace = client.getZookeeperClient().startTracer("CreateBuilderImpl-Background");
- client.getZooKeeper().create
+
- if ( (rc == KeeperException.Code.NONODE.intValue()) && createParentsIfNeeded )
- {
- backgroundCreateParentsThenNode(client, operationAndData, operationAndData.getData().getPath(), backgrounding, createParentsAsContainers);
- }
- else if ( (rc == KeeperException.Code.NODEEXISTS.intValue()) && setDataIfExists )
++ if(storingStat == null)
++ {
++ client.getZooKeeper().create
+ (
+ operationAndData.getData().getPath(),
+ operationAndData.getData().getData(),
+ acling.getAclList(operationAndData.getData().getPath()),
+ createMode,
+ new AsyncCallback.StringCallback()
+ {
+ @Override
+ public void processResult(int rc, String path, Object ctx, String name)
{
- backgroundSetData(client, operationAndData, operationAndData.getData().getPath(), backgrounding);
+ trace.commit();
+
+ if ( (rc == KeeperException.Code.NONODE.intValue()) && createParentsIfNeeded )
+ {
+ backgroundCreateParentsThenNode(client, operationAndData, operationAndData.getData().getPath(), backgrounding, createParentsAsContainers);
+ }
++ else if ( (rc == KeeperException.Code.NODEEXISTS.intValue()) && setDataIfExists )
++ {
++ backgroundSetData(client, operationAndData, operationAndData.getData().getPath(), backgrounding);
++ }
+ else
+ {
- sendBackgroundResponse(rc, path, ctx, name, operationAndData);
++ sendBackgroundResponse(rc, path, ctx, name, null, operationAndData);
+ }
}
- else
- {
- sendBackgroundResponse(rc, path, ctx, name, null, operationAndData);
+ },
+ backgrounding.getContext()
+ );
++ }
++ else
++ {
++ client.getZooKeeper().create
++ (
++ operationAndData.getData().getPath(),
++ operationAndData.getData().getData(),
++ acling.getAclList(operationAndData.getData().getPath()),
++ createMode,
++ new AsyncCallback.Create2Callback() {
++
++ @Override
++ public void processResult(int rc, String path, Object ctx, String name, Stat stat) {
++ trace.commit();
++
++ if ( stat != null )
++ {
++ storingStat.setAversion(stat.getAversion());
++ storingStat.setCtime(stat.getCtime());
++ storingStat.setCversion(stat.getCversion());
++ storingStat.setCzxid(stat.getCzxid());
++ storingStat.setDataLength(stat.getDataLength());
++ storingStat.setEphemeralOwner(stat.getEphemeralOwner());
++ storingStat.setMtime(stat.getMtime());
++ storingStat.setMzxid(stat.getMzxid());
++ storingStat.setNumChildren(stat.getNumChildren());
++ storingStat.setPzxid(stat.getPzxid());
++ storingStat.setVersion(stat.getVersion());
++ }
++
++ if ( (rc == KeeperException.Code.NONODE.intValue()) && createParentsIfNeeded )
++ {
++ backgroundCreateParentsThenNode(client, operationAndData, operationAndData.getData().getPath(), backgrounding, createParentsAsContainers);
++ }
++ else
++ {
++ sendBackgroundResponse(rc, path, ctx, name, stat, operationAndData);
++ }
+ }
- }
- },
- backgrounding.getContext()
- );
++ },
++ backgrounding.getContext()
++ );
++ }
}
- else
+ catch ( Throwable e )
{
- client.getZooKeeper().create
- (
- operationAndData.getData().getPath(),
- operationAndData.getData().getData(),
- acling.getAclList(operationAndData.getData().getPath()),
- createMode,
- new AsyncCallback.Create2Callback() {
-
- @Override
- public void processResult(int rc, String path, Object ctx, String name, Stat stat) {
- trace.commit();
-
- if ( stat != null )
- {
- storingStat.setAversion(stat.getAversion());
- storingStat.setCtime(stat.getCtime());
- storingStat.setCversion(stat.getCversion());
- storingStat.setCzxid(stat.getCzxid());
- storingStat.setDataLength(stat.getDataLength());
- storingStat.setEphemeralOwner(stat.getEphemeralOwner());
- storingStat.setMtime(stat.getMtime());
- storingStat.setMzxid(stat.getMzxid());
- storingStat.setNumChildren(stat.getNumChildren());
- storingStat.setPzxid(stat.getPzxid());
- storingStat.setVersion(stat.getVersion());
- }
-
- if ( (rc == KeeperException.Code.NONODE.intValue()) && createParentsIfNeeded )
- {
- backgroundCreateParentsThenNode(client, operationAndData, operationAndData.getData().getPath(), backgrounding, createParentsAsContainers);
- }
- else
- {
- sendBackgroundResponse(rc, path, ctx, name, stat, operationAndData);
- }
- }
- },
- backgrounding.getContext()
- );
+ backgrounding.checkError(e);
}
}
+
+ @Override
+ public CreateProtectACLCreateModePathAndBytesable<String> storingStatIn(Stat stat) {
+ storingStat = stat;
+
+ return new CreateProtectACLCreateModePathAndBytesable<String>() {
+
+ @Override
+ public BackgroundPathAndBytesable<String> withACL(List<ACL> aclList) {
+ return CreateBuilderImpl.this.withACL(aclList);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground() {
++ public ErrorListenerPathAndBytesable<String> inBackground() {
+ return CreateBuilderImpl.this.inBackground();
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(Object context) {
++ public ErrorListenerPathAndBytesable<String> inBackground(Object context) {
+ return CreateBuilderImpl.this.inBackground(context);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback) {
+ return CreateBuilderImpl.this.inBackground(callback);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context) {
+ return CreateBuilderImpl.this.inBackground(callback, context);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor) {
+ return CreateBuilderImpl.this.inBackground(callback, executor);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context,
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context,
+ Executor executor) {
+ return CreateBuilderImpl.this.inBackground(callback, context, executor);
+ }
+
+ @Override
+ public String forPath(String path, byte[] data) throws Exception {
+ return CreateBuilderImpl.this.forPath(path, data);
+ }
+
+ @Override
+ public String forPath(String path) throws Exception {
+ return CreateBuilderImpl.this.forPath(path);
+ }
+
+ @Override
+ public ACLBackgroundPathAndBytesable<String> withMode(CreateMode mode) {
+ return CreateBuilderImpl.this.withMode(mode);
+ }
+
+ @Override
+ public ACLCreateModeBackgroundPathAndBytesable<String> withProtection() {
+ return CreateBuilderImpl.this.withProtection();
+ }
+
+ @Override
+ public ProtectACLCreateModePathAndBytesable<String> creatingParentsIfNeeded() {
+ return CreateBuilderImpl.this.creatingParentsIfNeeded();
+ }
+
+ @Override
+ public ProtectACLCreateModePathAndBytesable<String> creatingParentContainersIfNeeded() {
+ return CreateBuilderImpl.this.creatingParentContainersIfNeeded();
+ }
+ };
+ }
private static String getProtectedPrefix(String protectedId)
{
@@@ -804,141 -634,6 +818,141 @@@
}
};
}
+
+ private CreateBackgroundModeACLable asCreateBackgroundModeACLable()
+ {
+ return new CreateBackgroundModeACLable() {
+
+ @Override
+ public BackgroundPathAndBytesable<String> withACL(List<ACL> aclList) {
+ return CreateBuilderImpl.this.withACL(aclList);
+ }
+
+ @Override
+ public ACLBackgroundPathAndBytesable<String> withMode(CreateMode mode) {
+ return CreateBuilderImpl.this.withMode(mode);
+ }
+
+ @Override
+ public String forPath(String path) throws Exception {
+ return CreateBuilderImpl.this.forPath(path);
+ }
+
+ @Override
+ public String forPath(String path, byte[] data) throws Exception {
+ return CreateBuilderImpl.this.forPath(path, data);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor) {
+ return CreateBuilderImpl.this.inBackground(callback, context, executor);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor) {
+ return CreateBuilderImpl.this.inBackground(callback, executor);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context) {
+ return CreateBuilderImpl.this.inBackground(callback, context);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback) {
+ return CreateBuilderImpl.this.inBackground(callback);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(Object context) {
++ public ErrorListenerPathAndBytesable<String> inBackground(Object context) {
+ return CreateBuilderImpl.this.inBackground(context);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground() {
++ public ErrorListenerPathAndBytesable<String> inBackground() {
+ return CreateBuilderImpl.this.inBackground();
+ }
+
+ @Override
+ public ACLPathAndBytesable<String> withProtectedEphemeralSequential() {
+ return CreateBuilderImpl.this.withProtectedEphemeralSequential();
+ }
+
+ @Override
+ public ACLCreateModePathAndBytesable<String> creatingParentsIfNeeded() {
+ createParentsIfNeeded = true;
+ return asACLCreateModePathAndBytesable();
+ }
+
+ @Override
+ public ACLCreateModePathAndBytesable<String> creatingParentContainersIfNeeded() {
+ setCreateParentsAsContainers();
+ return asACLCreateModePathAndBytesable();
+ }
+ };
+ }
+
+ private ACLCreateModeStatBackgroundPathAndBytesable<String> asACLCreateModeStatBackgroundPathAndBytesable()
+ {
+ return new ACLCreateModeStatBackgroundPathAndBytesable<String>()
+ {
+ @Override
+ public BackgroundPathAndBytesable<String> withACL(List<ACL> aclList) {
+ return CreateBuilderImpl.this.withACL(aclList);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground() {
++ public ErrorListenerPathAndBytesable<String> inBackground() {
+ return CreateBuilderImpl.this.inBackground();
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor) {
+ return CreateBuilderImpl.this.inBackground(callback, context, executor);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor) {
+ return CreateBuilderImpl.this.inBackground(callback, executor);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context) {
+ return CreateBuilderImpl.this.inBackground(callback, context);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback) {
++ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback) {
+ return CreateBuilderImpl.this.inBackground(callback);
+ }
+
+ @Override
- public PathAndBytesable<String> inBackground(Object context) {
++ public ErrorListenerPathAndBytesable<String> inBackground(Object context) {
+ return CreateBuilderImpl.this.inBackground(context);
+ }
+
+ @Override
+ public String forPath(String path) throws Exception {
+ return CreateBuilderImpl.this.forPath(path);
+ }
+
+ @Override
+ public String forPath(String path, byte[] data) throws Exception {
+ return CreateBuilderImpl.this.forPath(path, data);
+ }
+
+ @Override
+ public ACLBackgroundPathAndBytesable<String> withMode(CreateMode mode) {
+ return CreateBuilderImpl.this.withMode(mode);
+ }
+
+ @Override
+ public ACLCreateModeBackgroundPathAndBytesable<String> storingStatIn(Stat stat) {
+ storingStat = stat;
+ return CreateBuilderImpl.this;
+ }
+ };
+ }
@VisibleForTesting
volatile boolean debugForceFindProtectedNode = false;
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorMultiTransactionImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorMultiTransactionImpl.java
index 577b0d6,0000000..528fe6f
mode 100644,000000..100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorMultiTransactionImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorMultiTransactionImpl.java
@@@ -1,163 -1,0 +1,180 @@@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.curator.framework.imps;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import org.apache.curator.RetryLoop;
+import org.apache.curator.TimeTrace;
- import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.framework.api.BackgroundCallback;
+import org.apache.curator.framework.api.CuratorEvent;
+import org.apache.curator.framework.api.CuratorEventType;
++import org.apache.curator.framework.api.ErrorListenerMultiTransactionMain;
++import org.apache.curator.framework.api.UnhandledErrorListener;
+import org.apache.curator.framework.api.transaction.CuratorMultiTransaction;
+import org.apache.curator.framework.api.transaction.CuratorMultiTransactionMain;
+import org.apache.curator.framework.api.transaction.CuratorOp;
+import org.apache.curator.framework.api.transaction.CuratorTransactionResult;
+import org.apache.zookeeper.AsyncCallback;
+import org.apache.zookeeper.OpResult;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Executor;
++import java.util.concurrent.ThreadFactory;
+
+public class CuratorMultiTransactionImpl implements
+ CuratorMultiTransaction,
+ CuratorMultiTransactionMain,
- BackgroundOperation<CuratorMultiTransactionRecord>
++ BackgroundOperation<CuratorMultiTransactionRecord>,
++ ErrorListenerMultiTransactionMain
+{
+ private final CuratorFrameworkImpl client;
+ private Backgrounding backgrounding = new Backgrounding();
+
+ public CuratorMultiTransactionImpl(CuratorFrameworkImpl client)
+ {
+ this.client = client;
+ }
+
+ @Override
- public CuratorMultiTransactionMain inBackground()
++ public ErrorListenerMultiTransactionMain inBackground()
+ {
+ backgrounding = new Backgrounding(true);
+ return this;
+ }
+
+ @Override
- public CuratorMultiTransactionMain inBackground(Object context)
++ public ErrorListenerMultiTransactionMain inBackground(Object context)
+ {
+ backgrounding = new Backgrounding(context);
+ return this;
+ }
+
+ @Override
- public CuratorMultiTransactionMain inBackground(BackgroundCallback callback)
++ public ErrorListenerMultiTransactionMain inBackground(BackgroundCallback callback)
+ {
+ backgrounding = new Backgrounding(callback);
+ return this;
+ }
+
+ @Override
- public CuratorMultiTransactionMain inBackground(BackgroundCallback callback, Object context)
++ public ErrorListenerMultiTransactionMain inBackground(BackgroundCallback callback, Object context)
+ {
+ backgrounding = new Backgrounding(callback, context);
+ return this;
+ }
+
+ @Override
- public CuratorMultiTransactionMain inBackground(BackgroundCallback callback, Executor executor)
++ public ErrorListenerMultiTransactionMain inBackground(BackgroundCallback callback, Executor executor)
+ {
+ backgrounding = new Backgrounding(callback, executor);
+ return this;
+ }
+
+ @Override
- public CuratorMultiTransactionMain inBackground(BackgroundCallback callback, Object context, Executor executor)
++ public ErrorListenerMultiTransactionMain inBackground(BackgroundCallback callback, Object context, Executor executor)
+ {
+ backgrounding = new Backgrounding(client, callback, context, executor);
+ return this;
+ }
+
+ @Override
++ public CuratorMultiTransactionMain withUnhandledErrorListener(UnhandledErrorListener listener)
++ {
++ backgrounding = new Backgrounding(backgrounding, listener);
++ return this;
++ }
++
++ @Override
+ public List<CuratorTransactionResult> forOperations(CuratorOp... operations) throws Exception
+ {
+ List<CuratorOp> ops = (operations != null) ? Arrays.asList(operations) : Lists.<CuratorOp>newArrayList();
+ return forOperations(ops);
+ }
+
+ @Override
+ public List<CuratorTransactionResult> forOperations(List<CuratorOp> operations) throws Exception
+ {
+ operations = Preconditions.checkNotNull(operations, "operations cannot be null");
+ Preconditions.checkArgument(!operations.isEmpty(), "operations list cannot be empty");
+
+ CuratorMultiTransactionRecord record = new CuratorMultiTransactionRecord();
+ for ( CuratorOp curatorOp : operations )
+ {
+ record.add(curatorOp.get(), curatorOp.getTypeAndPath().getType(), curatorOp.getTypeAndPath().getForPath());
+ }
+
+ if ( backgrounding.inBackground() )
+ {
+ client.processBackgroundOperation(new OperationAndData<>(this, record, backgrounding.getCallback(), null, backgrounding.getContext()), null);
+ return null;
+ }
+ else
+ {
+ return forOperationsInForeground(record);
+ }
+ }
+
+ @Override
+ public void performBackgroundOperation(final OperationAndData<CuratorMultiTransactionRecord> operationAndData) throws Exception
+ {
- final TimeTrace trace = client.getZookeeperClient().startTracer("CuratorMultiTransactionImpl-Background");
- AsyncCallback.MultiCallback callback = new AsyncCallback.MultiCallback()
++ try
+ {
- @Override
- public void processResult(int rc, String path, Object ctx, List<OpResult> opResults)
++ final TimeTrace trace = client.getZookeeperClient().startTracer("CuratorMultiTransactionImpl-Background");
++ AsyncCallback.MultiCallback callback = new AsyncCallback.MultiCallback()
+ {
- trace.commit();
- List<CuratorTransactionResult> curatorResults = (opResults != null) ? CuratorTransactionImpl.wrapResults(client, opResults, operationAndData.getData()) : null;
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.TRANSACTION, rc, path, null, ctx, null, null, null, null, null, curatorResults);
- client.processBackgroundOperation(operationAndData, event);
- }
- };
- client.getZooKeeper().multi(operationAndData.getData(), callback, backgrounding.getContext());
++ @Override
++ public void processResult(int rc, String path, Object ctx, List<OpResult> opResults)
++ {
++ trace.commit();
++ List<CuratorTransactionResult> curatorResults = (opResults != null) ? CuratorTransactionImpl.wrapResults(client, opResults, operationAndData.getData()) : null;
++ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.TRANSACTION, rc, path, null, ctx, null, null, null, null, null, curatorResults);
++ client.processBackgroundOperation(operationAndData, event);
++ }
++ };
++ client.getZooKeeper().multi(operationAndData.getData(), callback, backgrounding.getContext());
++ }
++ catch ( Throwable e )
++ {
++ backgrounding.checkError(e);
++ }
+ }
+
+ private List<CuratorTransactionResult> forOperationsInForeground(final CuratorMultiTransactionRecord record) throws Exception
+ {
+ TimeTrace trace = client.getZookeeperClient().startTracer("CuratorMultiTransactionImpl-Foreground");
+ List<OpResult> responseData = RetryLoop.callWithRetry
+ (
+ client.getZookeeperClient(),
+ new Callable<List<OpResult>>()
+ {
+ @Override
+ public List<OpResult> call() throws Exception
+ {
+ return client.getZooKeeper().multi(record);
+ }
+ }
+ );
+ trace.commit();
+
+ return CuratorTransactionImpl.wrapResults(client, responseData, record);
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/DeleteBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/DeleteBuilderImpl.java
index ab72308,833904b..21c5cd8
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/DeleteBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/DeleteBuilderImpl.java
@@@ -20,15 -20,8 +20,7 @@@ package org.apache.curator.framework.im
import org.apache.curator.RetryLoop;
import org.apache.curator.TimeTrace;
- import org.apache.curator.framework.api.BackgroundCallback;
- import org.apache.curator.framework.api.BackgroundPathable;
- import org.apache.curator.framework.api.BackgroundVersionable;
- import org.apache.curator.framework.api.ChildrenDeletable;
- import org.apache.curator.framework.api.CuratorEvent;
- import org.apache.curator.framework.api.CuratorEventType;
- import org.apache.curator.framework.api.DeleteBuilder;
- import org.apache.curator.framework.api.DeleteBuilderMain;
- import org.apache.curator.framework.api.Pathable;
+ import org.apache.curator.framework.api.*;
-import org.apache.curator.framework.api.transaction.CuratorTransactionBridge;
import org.apache.curator.framework.api.transaction.OperationType;
import org.apache.curator.framework.api.transaction.TransactionDeleteBuilder;
import org.apache.curator.utils.ThreadUtils;
@@@ -150,36 -134,46 +142,50 @@@ class DeleteBuilderImpl implements Dele
}
@Override
+ public Pathable<Void> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("DeleteBuilderImpl-Background");
- client.getZooKeeper().delete
- (
- operationAndData.getData(),
- version,
- new AsyncCallback.VoidCallback()
- {
- @Override
- public void processResult(int rc, String path, Object ctx)
+ try
+ {
+ final TimeTrace trace = client.getZookeeperClient().startTracer("DeleteBuilderImpl-Background");
+ client.getZooKeeper().delete
+ (
+ operationAndData.getData(),
+ version,
+ new AsyncCallback.VoidCallback()
{
- trace.commit();
- if ( (rc == KeeperException.Code.NOTEMPTY.intValue()) && deletingChildrenIfNeeded )
- {
- backgroundDeleteChildrenThenNode(operationAndData);
- }
- else
+ @Override
+ public void processResult(int rc, String path, Object ctx)
{
- if ( (rc == KeeperException.Code.NONODE.intValue()) && quietly )
+ trace.commit();
+ if ( (rc == KeeperException.Code.NOTEMPTY.intValue()) && deletingChildrenIfNeeded )
{
- rc = KeeperException.Code.OK.intValue();
+ backgroundDeleteChildrenThenNode(operationAndData);
+ }
+ else
+ {
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.DELETE, rc, path, null, ctx, null, null, null, null, null);
++ if ( (rc == KeeperException.Code.NONODE.intValue()) && quietly )
++ {
++ rc = KeeperException.Code.OK.intValue();
++ }
++ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.DELETE, rc, path, null, ctx, null, null, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
}
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.DELETE, rc, path, null, ctx, null, null, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
}
- }
- },
- backgrounding.getContext()
- );
+ },
+ backgrounding.getContext()
+ );
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
private void backgroundDeleteChildrenThenNode(final OperationAndData<String> mainOperationAndData)
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/ExistsBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/ExistsBuilderImpl.java
index 4b3d214,5fb7056..7f55cf7
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/ExistsBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/ExistsBuilderImpl.java
@@@ -122,26 -115,40 +115,40 @@@ class ExistsBuilderImpl implements Exis
}
@Override
+ public Pathable<Stat> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("ExistsBuilderImpl-Background");
- AsyncCallback.StatCallback callback = new AsyncCallback.StatCallback()
+ try
{
- @Override
- public void processResult(int rc, String path, Object ctx, Stat stat)
+ final TimeTrace trace = client.getZookeeperClient().startTracer("ExistsBuilderImpl-Background");
+ AsyncCallback.StatCallback callback = new AsyncCallback.StatCallback()
{
- trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.EXISTS, rc, path, null, ctx, stat, null, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
+ @Override
+ public void processResult(int rc, String path, Object ctx, Stat stat)
+ {
+ trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.EXISTS, rc, path, null, ctx, stat, null, null, null, null);
++ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.EXISTS, rc, path, null, ctx, stat, null, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
+ }
+ };
+ if ( watching.isWatched() )
+ {
+ client.getZooKeeper().exists(operationAndData.getData(), true, callback, backgrounding.getContext());
+ }
+ else
+ {
- client.getZooKeeper().exists(operationAndData.getData(), watching.getWatcher(), callback, backgrounding.getContext());
++ client.getZooKeeper().exists(operationAndData.getData(), watching.getWatcher(client, operationAndData.getData()), callback, backgrounding.getContext());
}
- };
- if ( watching.isWatched() )
- {
- client.getZooKeeper().exists(operationAndData.getData(), true, callback, backgrounding.getContext());
}
- else
+ catch ( Throwable e )
{
- client.getZooKeeper().exists(operationAndData.getData(), watching.getWatcher(client, operationAndData.getData()), callback, backgrounding.getContext());
+ backgrounding.checkError(e);
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/GetACLBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/GetACLBuilderImpl.java
index f65c933,351a8c5..fa02740
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/GetACLBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/GetACLBuilderImpl.java
@@@ -97,18 -106,25 +106,25 @@@ class GetACLBuilderImpl implements GetA
@Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("GetACLBuilderImpl-Background");
- AsyncCallback.ACLCallback callback = new AsyncCallback.ACLCallback()
+ try
{
- @Override
- public void processResult(int rc, String path, Object ctx, List<ACL> acl, Stat stat)
+ final TimeTrace trace = client.getZookeeperClient().startTracer("GetACLBuilderImpl-Background");
+ AsyncCallback.ACLCallback callback = new AsyncCallback.ACLCallback()
{
- trace.commit();
- CuratorEventImpl event = new CuratorEventImpl(client, CuratorEventType.GET_ACL, rc, path, null, ctx, stat, null, null, null, acl, null);
- client.processBackgroundOperation(operationAndData, event);
- }
- };
- client.getZooKeeper().getACL(operationAndData.getData(), responseStat, callback, backgrounding.getContext());
+ @Override
+ public void processResult(int rc, String path, Object ctx, List<ACL> acl, Stat stat)
+ {
+ trace.commit();
- CuratorEventImpl event = new CuratorEventImpl(client, CuratorEventType.GET_ACL, rc, path, null, ctx, stat, null, null, null, acl);
++ CuratorEventImpl event = new CuratorEventImpl(client, CuratorEventType.GET_ACL, rc, path, null, ctx, stat, null, null, null, acl, null);
+ client.processBackgroundOperation(operationAndData, event);
+ }
+ };
+ client.getZooKeeper().getACL(operationAndData.getData(), responseStat, callback, backgrounding.getContext());
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/GetChildrenBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/GetChildrenBuilderImpl.java
index 8365585,745800d..bc9cfc6
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/GetChildrenBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/GetChildrenBuilderImpl.java
@@@ -151,28 -160,35 +160,35 @@@ class GetChildrenBuilderImpl implement
@Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("GetChildrenBuilderImpl-Background");
- AsyncCallback.Children2Callback callback = new AsyncCallback.Children2Callback()
+ try
{
- @Override
- public void processResult(int rc, String path, Object o, List<String> strings, Stat stat)
+ final TimeTrace trace = client.getZookeeperClient().startTracer("GetChildrenBuilderImpl-Background");
+ AsyncCallback.Children2Callback callback = new AsyncCallback.Children2Callback()
{
- trace.commit();
- if ( strings == null )
+ @Override
+ public void processResult(int rc, String path, Object o, List<String> strings, Stat stat)
{
- strings = Lists.newArrayList();
+ trace.commit();
+ if ( strings == null )
+ {
+ strings = Lists.newArrayList();
+ }
- CuratorEventImpl event = new CuratorEventImpl(client, CuratorEventType.CHILDREN, rc, path, null, o, stat, null, strings, null, null);
++ CuratorEventImpl event = new CuratorEventImpl(client, CuratorEventType.CHILDREN, rc, path, null, o, stat, null, strings, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
}
- CuratorEventImpl event = new CuratorEventImpl(client, CuratorEventType.CHILDREN, rc, path, null, o, stat, null, strings, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
+ };
+ if ( watching.isWatched() )
+ {
+ client.getZooKeeper().getChildren(operationAndData.getData(), true, callback, backgrounding.getContext());
+ }
+ else
+ {
- client.getZooKeeper().getChildren(operationAndData.getData(), watching.getWatcher(), callback, backgrounding.getContext());
++ client.getZooKeeper().getChildren(operationAndData.getData(), watching.getWatcher(client, operationAndData.getData()), callback, backgrounding.getContext());
}
- };
- if ( watching.isWatched() )
- {
- client.getZooKeeper().getChildren(operationAndData.getData(), true, callback, backgrounding.getContext());
}
- else
+ catch ( Throwable e )
{
- client.getZooKeeper().getChildren(operationAndData.getData(), watching.getWatcher(client, operationAndData.getData()), callback, backgrounding.getContext());
+ backgrounding.checkError(e);
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/GetConfigBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/GetConfigBuilderImpl.java
index b64f38e,0000000..2ba4d71
mode 100644,000000..100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/GetConfigBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/GetConfigBuilderImpl.java
@@@ -1,295 -1,0 +1,302 @@@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.curator.framework.imps;
+
+import org.apache.curator.RetryLoop;
+import org.apache.curator.TimeTrace;
- import org.apache.curator.framework.api.BackgroundCallback;
- import org.apache.curator.framework.api.BackgroundEnsembleable;
- import org.apache.curator.framework.api.CuratorEvent;
- import org.apache.curator.framework.api.CuratorEventType;
- import org.apache.curator.framework.api.CuratorWatcher;
- import org.apache.curator.framework.api.Ensembleable;
- import org.apache.curator.framework.api.GetConfigBuilder;
- import org.apache.curator.framework.api.WatchBackgroundEnsembleable;
++import org.apache.curator.framework.api.*;
+import org.apache.zookeeper.AsyncCallback;
+import org.apache.zookeeper.Watcher;
+import org.apache.zookeeper.ZooDefs;
+import org.apache.zookeeper.data.Stat;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Executor;
+
- public class GetConfigBuilderImpl implements GetConfigBuilder, BackgroundOperation<Void>
++public class GetConfigBuilderImpl implements GetConfigBuilder, BackgroundOperation<Void>, ErrorListenerEnsembleable<byte[]>
+{
+ private final CuratorFrameworkImpl client;
+
+ private Backgrounding backgrounding;
+ private Watching watching;
+ private Stat stat;
+
+ public GetConfigBuilderImpl(CuratorFrameworkImpl client)
+ {
+ this.client = client;
+ backgrounding = new Backgrounding();
+ watching = new Watching();
+ }
+
+ @Override
+ public WatchBackgroundEnsembleable<byte[]> storingStatIn(Stat stat)
+ {
+ this.stat = stat;
+ return new WatchBackgroundEnsembleable<byte[]>()
+ {
+ @Override
- public Ensembleable<byte[]> inBackground()
++ public ErrorListenerEnsembleable<byte[]> inBackground()
+ {
+ return GetConfigBuilderImpl.this.inBackground();
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(Object context)
++ public ErrorListenerEnsembleable<byte[]> inBackground(Object context)
+ {
+ return GetConfigBuilderImpl.this.inBackground(context);
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback)
+ {
+ return GetConfigBuilderImpl.this.inBackground(callback);
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback, Object context)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback, Object context)
+ {
+ return GetConfigBuilderImpl.this.inBackground(callback, context);
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback, Executor executor)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback, Executor executor)
+ {
+ return GetConfigBuilderImpl.this.inBackground(callback, executor);
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback, Object context, Executor executor)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ {
+ return GetConfigBuilderImpl.this.inBackground(callback, context, executor);
+ }
+
+ @Override
+ public byte[] forEnsemble() throws Exception
+ {
+ return GetConfigBuilderImpl.this.forEnsemble();
+ }
+
+ @Override
+ public BackgroundEnsembleable<byte[]> watched()
+ {
+ return GetConfigBuilderImpl.this.watched();
+ }
+
+ @Override
+ public BackgroundEnsembleable<byte[]> usingWatcher(Watcher watcher)
+ {
+ return GetConfigBuilderImpl.this.usingWatcher(watcher);
+ }
+
+ @Override
+ public BackgroundEnsembleable<byte[]> usingWatcher(CuratorWatcher watcher)
+ {
+ return GetConfigBuilderImpl.this.usingWatcher(watcher);
+ }
+ };
+ }
+
+ @Override
+ public BackgroundEnsembleable<byte[]> watched()
+ {
+ watching = new Watching(true);
+ return new InternalBackgroundEnsembleable();
+ }
+
+ @Override
+ public BackgroundEnsembleable<byte[]> usingWatcher(Watcher watcher)
+ {
+ watching = new Watching(watcher);
+ return new InternalBackgroundEnsembleable();
+ }
+
+ @Override
+ public BackgroundEnsembleable<byte[]> usingWatcher(CuratorWatcher watcher)
+ {
+ watching = new Watching(watcher);
+ return new InternalBackgroundEnsembleable();
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground()
++ public ErrorListenerEnsembleable<byte[]> inBackground()
+ {
+ backgrounding = new Backgrounding(true);
+ return this;
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(Object context)
++ public ErrorListenerEnsembleable<byte[]> inBackground(Object context)
+ {
+ backgrounding = new Backgrounding(context);
+ return this;
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback)
+ {
+ backgrounding = new Backgrounding(callback);
+ return this;
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback, Object context)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback, Object context)
+ {
+ backgrounding = new Backgrounding(callback, context);
+ return this;
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback, Executor executor)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback, Executor executor)
+ {
+ backgrounding = new Backgrounding(callback, executor);
+ return this;
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback, Object context, Executor executor)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ {
+ backgrounding = new Backgrounding(client, callback, context, executor);
+ return this;
+ }
+
+ @Override
++ public Ensembleable<byte[]> withUnhandledErrorListener(UnhandledErrorListener listener)
++ {
++ backgrounding = new Backgrounding(backgrounding, listener);
++ return this;
++ }
++
++ @Override
+ public byte[] forEnsemble() throws Exception
+ {
+ if ( backgrounding.inBackground() )
+ {
+ client.processBackgroundOperation(new OperationAndData<Void>(this, null, backgrounding.getCallback(), null, backgrounding.getContext()), null);
+ return null;
+ }
+ else
+ {
+ return configInForeground();
+ }
+ }
+
+ @Override
+ public void performBackgroundOperation(final OperationAndData<Void> operationAndData) throws Exception
+ {
- final TimeTrace trace = client.getZookeeperClient().startTracer("GetDataBuilderImpl-Background");
- AsyncCallback.DataCallback callback = new AsyncCallback.DataCallback()
++ try
+ {
- @Override
- public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat)
++ final TimeTrace trace = client.getZookeeperClient().startTracer("GetDataBuilderImpl-Background");
++ AsyncCallback.DataCallback callback = new AsyncCallback.DataCallback()
+ {
- trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.GET_CONFIG, rc, path, null, ctx, stat, data, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
++ @Override
++ public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat)
++ {
++ trace.commit();
++ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.GET_CONFIG, rc, path, null, ctx, stat, data, null, null, null, null);
++ client.processBackgroundOperation(operationAndData, event);
++ }
++ };
++ if ( watching.isWatched() )
++ {
++ client.getZooKeeper().getConfig(true, callback, backgrounding.getContext());
++ }
++ else
++ {
++ client.getZooKeeper().getConfig(watching.getWatcher(client, ZooDefs.CONFIG_NODE), callback, backgrounding.getContext());
+ }
- };
- if ( watching.isWatched() )
- {
- client.getZooKeeper().getConfig(true, callback, backgrounding.getContext());
+ }
- else
++ catch ( Throwable e )
+ {
- client.getZooKeeper().getConfig(watching.getWatcher(client, ZooDefs.CONFIG_NODE), callback, backgrounding.getContext());
++ backgrounding.checkError(e);
+ }
+ }
+
+ private byte[] configInForeground() throws Exception
+ {
+ TimeTrace trace = client.getZookeeperClient().startTracer("GetConfigBuilderImpl-Foreground");
+ try
+ {
+ return RetryLoop.callWithRetry
+ (
+ client.getZookeeperClient(),
+ new Callable<byte[]>()
+ {
+ @Override
+ public byte[] call() throws Exception
+ {
+ if ( watching.isWatched() )
+ {
+ return client.getZooKeeper().getConfig(true, stat);
+ }
+ return client.getZooKeeper().getConfig(watching.getWatcher(client, ZooDefs.CONFIG_NODE), stat);
+ }
+ }
+ );
+ }
+ finally
+ {
+ trace.commit();
+ }
+ }
+
+ private class InternalBackgroundEnsembleable implements BackgroundEnsembleable<byte[]>
+ {
+ @Override
- public Ensembleable<byte[]> inBackground()
++ public ErrorListenerEnsembleable<byte[]> inBackground()
+ {
+ return GetConfigBuilderImpl.this.inBackground();
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(Object context)
++ public ErrorListenerEnsembleable<byte[]> inBackground(Object context)
+ {
+ return GetConfigBuilderImpl.this.inBackground(context);
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback)
+ {
+ return GetConfigBuilderImpl.this.inBackground(callback);
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback, Object context)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback, Object context)
+ {
+ return GetConfigBuilderImpl.this.inBackground(callback, context);
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback, Executor executor)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback, Executor executor)
+ {
+ return GetConfigBuilderImpl.this.inBackground(callback, executor);
+ }
+
+ @Override
- public Ensembleable<byte[]> inBackground(BackgroundCallback callback, Object context, Executor executor)
++ public ErrorListenerEnsembleable<byte[]> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ {
+ return GetConfigBuilderImpl.this.inBackground(callback, context, executor);
+ }
+
+ @Override
+ public byte[] forEnsemble() throws Exception
+ {
+ return GetConfigBuilderImpl.this.forEnsemble();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java
index e2aa053,94d27ad..72103b9
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java
@@@ -232,37 -231,44 +231,44 @@@ class GetDataBuilderImpl implements Get
@Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("GetDataBuilderImpl-Background");
- AsyncCallback.DataCallback callback = new AsyncCallback.DataCallback()
+ try
{
- @Override
- public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat)
+ final TimeTrace trace = client.getZookeeperClient().startTracer("GetDataBuilderImpl-Background");
+ AsyncCallback.DataCallback callback = new AsyncCallback.DataCallback()
{
- trace.commit();
- if ( decompress && (data != null) )
+ @Override
+ public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat)
{
- try
- {
- data = client.getCompressionProvider().decompress(path, data);
- }
- catch ( Exception e )
+ trace.commit();
+ if ( decompress && (data != null) )
{
- ThreadUtils.checkInterrupted(e);
- log.error("Decompressing for path: " + path, e);
- rc = KeeperException.Code.DATAINCONSISTENCY.intValue();
+ try
+ {
+ data = client.getCompressionProvider().decompress(path, data);
+ }
+ catch ( Exception e )
+ {
+ ThreadUtils.checkInterrupted(e);
+ log.error("Decompressing for path: " + path, e);
+ rc = KeeperException.Code.DATAINCONSISTENCY.intValue();
+ }
}
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.GET_DATA, rc, path, null, ctx, stat, data, null, null, null);
++ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.GET_DATA, rc, path, null, ctx, stat, data, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
}
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.GET_DATA, rc, path, null, ctx, stat, data, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
+ };
+ if ( watching.isWatched() )
+ {
+ client.getZooKeeper().getData(operationAndData.getData(), true, callback, backgrounding.getContext());
+ }
+ else
+ {
- client.getZooKeeper().getData(operationAndData.getData(), watching.getWatcher(), callback, backgrounding.getContext());
++ client.getZooKeeper().getData(operationAndData.getData(), watching.getWatcher(client, operationAndData.getData()), callback, backgrounding.getContext());
}
- };
- if ( watching.isWatched() )
- {
- client.getZooKeeper().getData(operationAndData.getData(), true, callback, backgrounding.getContext());
}
- else
+ catch ( Throwable e )
{
- client.getZooKeeper().getData(operationAndData.getData(), watching.getWatcher(client, operationAndData.getData()), callback, backgrounding.getContext());
+ backgrounding.checkError(e);
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/062a7d75/curator-framework/src/main/java/org/apache/curator/framework/imps/ReconfigBuilderImpl.java
----------------------------------------------------------------------
diff --cc curator-framework/src/main/java/org/apache/curator/framework/imps/ReconfigBuilderImpl.java
index e786883,0000000..74683de
mode 100644,000000..100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/ReconfigBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/ReconfigBuilderImpl.java
@@@ -1,272 -1,0 +1,286 @@@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.curator.framework.imps;
+
+import com.google.common.collect.ImmutableList;
+import org.apache.curator.RetryLoop;
+import org.apache.curator.TimeTrace;
+import org.apache.curator.framework.api.*;
+import org.apache.zookeeper.AsyncCallback;
+import org.apache.zookeeper.data.Stat;
+import org.apache.zookeeper.server.DataTree;
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Executor;
+
- public class ReconfigBuilderImpl implements ReconfigBuilder, BackgroundOperation<Void>
++public class ReconfigBuilderImpl implements ReconfigBuilder, BackgroundOperation<Void>, ErrorListenerReconfigBuilderMain
+{
+ private final CuratorFrameworkImpl client;
+
+ private Backgrounding backgrounding = new Backgrounding();
+ private Stat responseStat;
+ private long fromConfig = -1;
+ private List<String> newMembers;
+ private List<String> joining;
+ private List<String> leaving;
+
+ public ReconfigBuilderImpl(CuratorFrameworkImpl client)
+ {
+ this.client = client;
+ }
+
+ private byte[] forEnsemble() throws Exception
+ {
+ if ( backgrounding.inBackground() )
+ {
+ client.processBackgroundOperation(new OperationAndData<>(this, null, backgrounding.getCallback(), null, backgrounding.getContext()), null);
+ return new byte[0];
+ }
+ else
+ {
+ return ensembleInForeground();
+ }
+ }
+
+ @Override
- public ReconfigBuilderMain inBackground()
++ public ErrorListenerReconfigBuilderMain inBackground()
+ {
+ backgrounding = new Backgrounding(true);
+ return this;
+ }
+
+ @Override
- public ReconfigBuilderMain inBackground(Object context)
++ public ErrorListenerReconfigBuilderMain inBackground(Object context)
+ {
+ backgrounding = new Backgrounding(context);
+ return this;
+ }
+
+ @Override
- public ReconfigBuilderMain inBackground(BackgroundCallback callback)
++ public ErrorListenerReconfigBuilderMain inBackground(BackgroundCallback callback)
+ {
+ backgrounding = new Backgrounding(callback);
+ return this;
+ }
+
+ @Override
- public ReconfigBuilderMain inBackground(BackgroundCallback callback, Object context)
++ public ErrorListenerReconfigBuilderMain inBackground(BackgroundCallback callback, Object context)
+ {
+ backgrounding = new Backgrounding(callback, context);
+ return this;
+ }
+
+ @Override
- public ReconfigBuilderMain inBackground(BackgroundCallback callback, Executor executor)
++ public ErrorListenerReconfigBuilderMain inBackground(BackgroundCallback callback, Executor executor)
+ {
+ backgrounding = new Backgrounding(callback, executor);
+ return this;
+ }
+
+ @Override
- public ReconfigBuilderMain inBackground(BackgroundCallback callback, Object context, Executor executor)
++ public ErrorListenerReconfigBuilderMain inBackground(BackgroundCallback callback, Object context, Executor executor)
+ {
+ backgrounding = new Backgrounding(client, callback, context, executor);
+ return this;
+ }
+
+ @Override
++ public ReconfigBuilderMain withUnhandledErrorListener(UnhandledErrorListener listener)
++ {
++ backgrounding = new Backgrounding(backgrounding, listener);
++ return this;
++ }
++
++ @Override
+ public StatConfigureEnsembleable withNewMembers(String... server)
+ {
+ return withNewMembers((server != null) ? Arrays.asList(server) : null);
+ }
+
+ @Override
+ public StatConfigureEnsembleable withNewMembers(List<String> servers)
+ {
+ newMembers = (servers != null) ? ImmutableList.copyOf(servers) : ImmutableList.<String>of();
+ return new StatConfigureEnsembleable()
+ {
+ @Override
+ public Ensembleable<byte[]> fromConfig(long config) throws Exception
+ {
+ fromConfig = config;
+ return this;
+ }
+
+ @Override
+ public byte[] forEnsemble() throws Exception
+ {
+ return ReconfigBuilderImpl.this.forEnsemble();
+ }
+
+ @Override
+ public ConfigureEnsembleable storingStatIn(Stat stat)
+ {
+ responseStat = stat;
+ return this;
+ }
+ };
+ }
+
+ @Override
+ public LeaveStatConfigEnsembleable joining(String... server)
+ {
+ return joining((server != null) ? Arrays.asList(server) : null);
+ }
+
+ @Override
+ public LeaveStatConfigEnsembleable joining(List<String> servers)
+ {
+ joining = (servers != null) ? ImmutableList.copyOf(servers) : ImmutableList.<String>of();
+
+ return new LeaveStatConfigEnsembleable()
+ {
+ @Override
+ public byte[] forEnsemble() throws Exception
+ {
+ return ReconfigBuilderImpl.this.forEnsemble();
+ }
+
+ @Override
+ public ConfigureEnsembleable storingStatIn(Stat stat)
+ {
+ responseStat = stat;
+ return this;
+ }
+
+ @Override
+ public Ensembleable<byte[]> fromConfig(long config) throws Exception
+ {
+ fromConfig = config;
+ return this;
+ }
+
+ @Override
+ public JoinStatConfigEnsembleable leaving(String... server)
+ {
+ return ReconfigBuilderImpl.this.leaving(server);
+ }
+
+ @Override
+ public JoinStatConfigEnsembleable leaving(List<String> servers)
+ {
+ return ReconfigBuilderImpl.this.leaving(servers);
+ }
+ };
+ }
+
+ @Override
+ public JoinStatConfigEnsembleable leaving(String... server)
+ {
+ return leaving((server != null) ? Arrays.asList(server) : null);
+ }
+
+ @Override
+ public JoinStatConfigEnsembleable leaving(List<String> servers)
+ {
+ leaving = (servers != null) ? ImmutableList.copyOf(servers) : ImmutableList.<String>of();
+
+ return new JoinStatConfigEnsembleable()
+ {
+ @Override
+ public byte[] forEnsemble() throws Exception
+ {
+ return ReconfigBuilderImpl.this.forEnsemble();
+ }
+
+ @Override
+ public ConfigureEnsembleable storingStatIn(Stat stat)
+ {
+ responseStat = stat;
+ return this;
+ }
+
+ @Override
+ public Ensembleable<byte[]> fromConfig(long config) throws Exception
+ {
+ fromConfig = config;
+ return this;
+ }
+
+ @Override
+ public LeaveStatConfigEnsembleable joining(String... server)
+ {
+ return joining((server != null) ? Arrays.asList(server) : null);
+ }
+
+ @Override
+ public LeaveStatConfigEnsembleable joining(List<String> servers)
+ {
+ return ReconfigBuilderImpl.this.joining(servers);
+ }
+ };
+ }
+
+ @Override
+ public void performBackgroundOperation(final OperationAndData<Void> data) throws Exception
+ {
- final TimeTrace trace = client.getZookeeperClient().startTracer("ReconfigBuilderImpl-Background");
- AsyncCallback.DataCallback callback = new AsyncCallback.DataCallback()
++ try
+ {
- @Override
- public void processResult(int rc, String path, Object ctx, byte[] bytes, Stat stat)
++ final TimeTrace trace = client.getZookeeperClient().startTracer("ReconfigBuilderImpl-Background");
++ AsyncCallback.DataCallback callback = new AsyncCallback.DataCallback()
+ {
- trace.commit();
- if ( (responseStat != null) && (stat != null) )
++ @Override
++ public void processResult(int rc, String path, Object ctx, byte[] bytes, Stat stat)
+ {
- DataTree.copyStat(stat, responseStat);
++ trace.commit();
++ if ( (responseStat != null) && (stat != null) )
++ {
++ DataTree.copyStat(stat, responseStat);
++ }
++ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.RECONFIG, rc, path, null, ctx, stat, bytes, null, null, null, null);
++ client.processBackgroundOperation(data, event);
+ }
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.RECONFIG, rc, path, null, ctx, stat, bytes, null, null, null, null);
- client.processBackgroundOperation(data, event);
- }
- };
- client.getZooKeeper().reconfig(joining, leaving, newMembers, fromConfig, callback, backgrounding.getContext());
++ };
++ client.getZooKeeper().reconfig(joining, leaving, newMembers, fromConfig, callback, backgrounding.getContext());
++ }
++ catch ( Throwable e )
++ {
++ backgrounding.checkError(e);
++ }
+ }
+
+ private byte[] ensembleInForeground() throws Exception
+ {
+ TimeTrace trace = client.getZookeeperClient().startTracer("ReconfigBuilderImpl-Foreground");
+ byte[] responseData = RetryLoop.callWithRetry
+ (
+ client.getZookeeperClient(),
+ new Callable<byte[]>()
+ {
+ @Override
+ public byte[] call() throws Exception
+ {
+ return client.getZooKeeper().reconfig(joining, leaving, newMembers, fromConfig, responseStat);
+ }
+ }
+ );
+ trace.commit();
+ return responseData;
+ }
+}
[6/8] curator git commit: Added a method for background operations to
intercept exeptions.
Posted by ra...@apache.org.
Added a method for background operations to intercept exeptions.
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/84996801
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/84996801
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/84996801
Branch: refs/heads/CURATOR-3.0
Commit: 8499680187d1f1061ca8597886e9f869bf637321
Parents: 18e912d
Author: randgalt <ra...@apache.org>
Authored: Mon Mar 7 09:15:07 2016 -0500
Committer: randgalt <ra...@apache.org>
Committed: Mon Mar 7 09:15:07 2016 -0500
----------------------------------------------------------------------
.../api/BackgroundPathAndBytesable.java | 2 +-
.../framework/api/BackgroundPathable.java | 2 +-
.../api/ErrorListenerPathAndBytesable.java | 14 +++
.../framework/api/ErrorListenerPathable.java | 14 +++
.../curator/framework/imps/Backgrounding.java | 80 ++++++++++----
.../framework/imps/CreateBuilderImpl.java | 110 +++++++++++--------
.../framework/imps/DeleteBuilderImpl.java | 79 +++++++------
.../framework/imps/ExistsBuilderImpl.java | 63 ++++++-----
.../framework/imps/GetACLBuilderImpl.java | 50 ++++++---
.../framework/imps/GetChildrenBuilderImpl.java | 62 +++++++----
.../framework/imps/GetDataBuilderImpl.java | 94 ++++++++--------
.../framework/imps/SetACLBuilderImpl.java | 66 ++++++-----
.../framework/imps/SetDataBuilderImpl.java | 85 +++++++-------
.../curator/framework/imps/SyncBuilderImpl.java | 56 ++++++----
.../framework/imps/TestFrameworkBackground.java | 50 ++++++++-
15 files changed, 523 insertions(+), 304 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundPathAndBytesable.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundPathAndBytesable.java b/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundPathAndBytesable.java
index 5cefd08..ce9d4eb 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundPathAndBytesable.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundPathAndBytesable.java
@@ -19,7 +19,7 @@
package org.apache.curator.framework.api;
public interface BackgroundPathAndBytesable<T> extends
- Backgroundable<PathAndBytesable<T>>,
+ Backgroundable<ErrorListenerPathAndBytesable<T>>,
PathAndBytesable<T>
{
}
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundPathable.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundPathable.java b/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundPathable.java
index 956cf6a..5a053a2 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundPathable.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/BackgroundPathable.java
@@ -19,7 +19,7 @@
package org.apache.curator.framework.api;
public interface BackgroundPathable<T> extends
- Backgroundable<Pathable<T>>,
+ Backgroundable<ErrorListenerPathable<T>>,
Pathable<T>
{
}
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerPathAndBytesable.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerPathAndBytesable.java b/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerPathAndBytesable.java
new file mode 100644
index 0000000..9882a3e
--- /dev/null
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerPathAndBytesable.java
@@ -0,0 +1,14 @@
+package org.apache.curator.framework.api;
+
+public interface ErrorListenerPathAndBytesable<T> extends PathAndBytesable<T>
+{
+ /**
+ * Set an error listener for this background operation. If an exception
+ * occurs while processing the call in the background, this listener will
+ * be called
+ *
+ * @param listener the listener
+ * @return this for chaining
+ */
+ PathAndBytesable<T> withUnhandledErrorListener(UnhandledErrorListener listener);
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerPathable.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerPathable.java b/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerPathable.java
new file mode 100644
index 0000000..8245076
--- /dev/null
+++ b/curator-framework/src/main/java/org/apache/curator/framework/api/ErrorListenerPathable.java
@@ -0,0 +1,14 @@
+package org.apache.curator.framework.api;
+
+public interface ErrorListenerPathable<T> extends Pathable<T>
+{
+ /**
+ * Set an error listener for this background operation. If an exception
+ * occurs while processing the call in the background, this listener will
+ * be called
+ *
+ * @param listener the listener
+ * @return this for chaining
+ */
+ Pathable<T> withUnhandledErrorListener(UnhandledErrorListener listener);
+}
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/imps/Backgrounding.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/Backgrounding.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/Backgrounding.java
index 1bb2423..dac06c2 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/Backgrounding.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/Backgrounding.java
@@ -16,26 +16,31 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.curator.framework.imps;
+import com.google.common.base.Throwables;
+import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.api.BackgroundCallback;
import org.apache.curator.framework.api.CuratorEvent;
-import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.framework.api.UnhandledErrorListener;
import org.apache.curator.utils.ThreadUtils;
import org.apache.zookeeper.KeeperException;
import java.util.concurrent.Executor;
class Backgrounding
{
- private final boolean inBackground;
- private final Object context;
- private final BackgroundCallback callback;
+ private final boolean inBackground;
+ private final Object context;
+ private final BackgroundCallback callback;
+ private final UnhandledErrorListener errorListener;
Backgrounding(Object context)
{
this.inBackground = true;
this.context = context;
this.callback = null;
+ errorListener = null;
}
Backgrounding(BackgroundCallback callback)
@@ -43,6 +48,7 @@ class Backgrounding
this.inBackground = true;
this.context = null;
this.callback = callback;
+ errorListener = null;
}
Backgrounding(boolean inBackground)
@@ -50,6 +56,7 @@ class Backgrounding
this.inBackground = inBackground;
this.context = null;
this.callback = null;
+ errorListener = null;
}
Backgrounding(BackgroundCallback callback, Object context)
@@ -57,6 +64,7 @@ class Backgrounding
this.inBackground = true;
this.context = context;
this.callback = callback;
+ errorListener = null;
}
Backgrounding(CuratorFrameworkImpl client, BackgroundCallback callback, Object context, Executor executor)
@@ -69,11 +77,24 @@ class Backgrounding
this(wrapCallback(client, callback, executor));
}
+ Backgrounding(Backgrounding rhs, UnhandledErrorListener errorListener)
+ {
+ if ( rhs == null )
+ {
+ rhs = new Backgrounding();
+ }
+ this.inBackground = rhs.inBackground;
+ this.context = rhs.context;
+ this.callback = rhs.callback;
+ this.errorListener = errorListener;
+ }
+
Backgrounding()
{
inBackground = false;
context = null;
this.callback = null;
+ errorListener = null;
}
boolean inBackground()
@@ -91,6 +112,25 @@ class Backgrounding
return callback;
}
+ void checkError(Throwable e) throws Exception
+ {
+ if ( e != null )
+ {
+ if ( errorListener != null )
+ {
+ errorListener.unhandledError("n/a", e);
+ }
+ else if ( e instanceof Exception )
+ {
+ throw (Exception)e;
+ }
+ else
+ {
+ Throwables.propagate(e);
+ }
+ }
+ }
+
private static BackgroundCallback wrapCallback(final CuratorFrameworkImpl client, final BackgroundCallback callback, final Executor executor)
{
return new BackgroundCallback()
@@ -99,28 +139,28 @@ class Backgrounding
public void processResult(CuratorFramework dummy, final CuratorEvent event) throws Exception
{
executor.execute
- (
- new Runnable()
- {
- @Override
- public void run()
+ (
+ new Runnable()
{
- try
- {
- callback.processResult(client, event);
- }
- catch ( Exception e )
+ @Override
+ public void run()
{
- ThreadUtils.checkInterrupted(e);
- if ( e instanceof KeeperException )
+ try
+ {
+ callback.processResult(client, event);
+ }
+ catch ( Exception e )
{
- client.validateConnection(client.codeToState(((KeeperException)e).code()));
+ ThreadUtils.checkInterrupted(e);
+ if ( e instanceof KeeperException )
+ {
+ client.validateConnection(client.codeToState(((KeeperException)e).code()));
+ }
+ client.logError("Background operation result handling threw exception", e);
}
- client.logError("Background operation result handling threw exception", e);
}
}
- }
- );
+ );
}
};
}
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/imps/CreateBuilderImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/CreateBuilderImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/CreateBuilderImpl.java
index e11d74f..0f893d8 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/CreateBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/CreateBuilderImpl.java
@@ -41,7 +41,7 @@ import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
-class CreateBuilderImpl implements CreateBuilder, BackgroundOperation<PathAndBytes>
+class CreateBuilderImpl implements CreateBuilder, BackgroundOperation<PathAndBytes>, ErrorListenerPathAndBytesable<String>
{
private final CuratorFrameworkImpl client;
private CreateMode createMode;
@@ -151,37 +151,37 @@ class CreateBuilderImpl implements CreateBuilder, BackgroundOperation<PathAndByt
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context)
{
return CreateBuilderImpl.this.inBackground(callback, context);
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
return CreateBuilderImpl.this.inBackground(callback, context, executor);
}
@Override
- public PathAndBytesable<String> inBackground()
+ public ErrorListenerPathAndBytesable<String> inBackground()
{
return CreateBuilderImpl.this.inBackground();
}
@Override
- public PathAndBytesable<String> inBackground(Object context)
+ public ErrorListenerPathAndBytesable<String> inBackground(Object context)
{
return CreateBuilderImpl.this.inBackground(context);
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback)
{
return CreateBuilderImpl.this.inBackground(callback);
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor)
{
return CreateBuilderImpl.this.inBackground(callback, executor);
}
@@ -219,37 +219,37 @@ class CreateBuilderImpl implements CreateBuilder, BackgroundOperation<PathAndByt
}
@Override
- public PathAndBytesable<String> inBackground()
+ public ErrorListenerPathAndBytesable<String> inBackground()
{
return CreateBuilderImpl.this.inBackground();
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context)
{
return CreateBuilderImpl.this.inBackground(callback, context);
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
return CreateBuilderImpl.this.inBackground(callback, context, executor);
}
@Override
- public PathAndBytesable<String> inBackground(Object context)
+ public ErrorListenerPathAndBytesable<String> inBackground(Object context)
{
return CreateBuilderImpl.this.inBackground(context);
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback)
{
return CreateBuilderImpl.this.inBackground(callback);
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor)
{
return CreateBuilderImpl.this.inBackground(callback, executor);
}
@@ -302,37 +302,37 @@ class CreateBuilderImpl implements CreateBuilder, BackgroundOperation<PathAndByt
}
@Override
- public PathAndBytesable<String> inBackground()
+ public ErrorListenerPathAndBytesable<String> inBackground()
{
return CreateBuilderImpl.this.inBackground();
}
@Override
- public PathAndBytesable<String> inBackground(Object context)
+ public ErrorListenerPathAndBytesable<String> inBackground(Object context)
{
return CreateBuilderImpl.this.inBackground(context);
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback)
{
return CreateBuilderImpl.this.inBackground(callback);
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context)
{
return CreateBuilderImpl.this.inBackground(callback, context);
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor)
{
return CreateBuilderImpl.this.inBackground(callback, executor);
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
return CreateBuilderImpl.this.inBackground(callback, context, executor);
}
@@ -400,48 +400,55 @@ class CreateBuilderImpl implements CreateBuilder, BackgroundOperation<PathAndByt
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context)
{
backgrounding = new Backgrounding(callback, context);
return this;
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
backgrounding = new Backgrounding(client, callback, context, executor);
return this;
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback)
{
backgrounding = new Backgrounding(callback);
return this;
}
@Override
- public PathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathAndBytesable<String> inBackground(BackgroundCallback callback, Executor executor)
{
backgrounding = new Backgrounding(client, callback, executor);
return this;
}
@Override
- public PathAndBytesable<String> inBackground()
+ public ErrorListenerPathAndBytesable<String> inBackground()
{
backgrounding = new Backgrounding(true);
return this;
}
@Override
- public PathAndBytesable<String> inBackground(Object context)
+ public ErrorListenerPathAndBytesable<String> inBackground(Object context)
{
backgrounding = new Backgrounding(context);
return this;
}
@Override
+ public PathAndBytesable<String> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public String forPath(String path) throws Exception
{
return forPath(path, client.getDefaultData());
@@ -501,32 +508,39 @@ class CreateBuilderImpl implements CreateBuilder, BackgroundOperation<PathAndByt
@Override
public void performBackgroundOperation(final OperationAndData<PathAndBytes> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("CreateBuilderImpl-Background");
- client.getZooKeeper().create
- (
- operationAndData.getData().getPath(),
- operationAndData.getData().getData(),
- acling.getAclList(operationAndData.getData().getPath()),
- createMode,
- new AsyncCallback.StringCallback()
- {
- @Override
- public void processResult(int rc, String path, Object ctx, String name)
+ try
+ {
+ final TimeTrace trace = client.getZookeeperClient().startTracer("CreateBuilderImpl-Background");
+ client.getZooKeeper().create
+ (
+ operationAndData.getData().getPath(),
+ operationAndData.getData().getData(),
+ acling.getAclList(operationAndData.getData().getPath()),
+ createMode,
+ new AsyncCallback.StringCallback()
{
- trace.commit();
-
- if ( (rc == KeeperException.Code.NONODE.intValue()) && createParentsIfNeeded )
- {
- backgroundCreateParentsThenNode(client, operationAndData, operationAndData.getData().getPath(), backgrounding, createParentsAsContainers);
- }
- else
+ @Override
+ public void processResult(int rc, String path, Object ctx, String name)
{
- sendBackgroundResponse(rc, path, ctx, name, operationAndData);
+ trace.commit();
+
+ if ( (rc == KeeperException.Code.NONODE.intValue()) && createParentsIfNeeded )
+ {
+ backgroundCreateParentsThenNode(client, operationAndData, operationAndData.getData().getPath(), backgrounding, createParentsAsContainers);
+ }
+ else
+ {
+ sendBackgroundResponse(rc, path, ctx, name, operationAndData);
+ }
}
- }
- },
- backgrounding.getContext()
- );
+ },
+ backgrounding.getContext()
+ );
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
private static String getProtectedPrefix(String protectedId)
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/imps/DeleteBuilderImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/DeleteBuilderImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/DeleteBuilderImpl.java
index c3247a1..833904b 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/DeleteBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/DeleteBuilderImpl.java
@@ -20,14 +20,7 @@ package org.apache.curator.framework.imps;
import org.apache.curator.RetryLoop;
import org.apache.curator.TimeTrace;
-import org.apache.curator.framework.api.BackgroundCallback;
-import org.apache.curator.framework.api.BackgroundPathable;
-import org.apache.curator.framework.api.BackgroundVersionable;
-import org.apache.curator.framework.api.ChildrenDeletable;
-import org.apache.curator.framework.api.CuratorEvent;
-import org.apache.curator.framework.api.CuratorEventType;
-import org.apache.curator.framework.api.DeleteBuilder;
-import org.apache.curator.framework.api.Pathable;
+import org.apache.curator.framework.api.*;
import org.apache.curator.framework.api.transaction.CuratorTransactionBridge;
import org.apache.curator.framework.api.transaction.OperationType;
import org.apache.curator.framework.api.transaction.TransactionDeleteBuilder;
@@ -39,7 +32,7 @@ import org.apache.zookeeper.Op;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
-class DeleteBuilderImpl implements DeleteBuilder, BackgroundOperation<String>
+class DeleteBuilderImpl implements DeleteBuilder, BackgroundOperation<String>, ErrorListenerPathable<Void>
{
private final CuratorFrameworkImpl client;
private int version;
@@ -99,74 +92,88 @@ class DeleteBuilderImpl implements DeleteBuilder, BackgroundOperation<String>
}
@Override
- public Pathable<Void> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Object context)
{
backgrounding = new Backgrounding(callback, context);
return this;
}
@Override
- public Pathable<Void> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
backgrounding = new Backgrounding(client, callback, context, executor);
return this;
}
@Override
- public Pathable<Void> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback)
{
backgrounding = new Backgrounding(callback);
return this;
}
@Override
- public Pathable<Void> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Executor executor)
{
backgrounding = new Backgrounding(client, callback, executor);
return this;
}
@Override
- public Pathable<Void> inBackground()
+ public ErrorListenerPathable<Void> inBackground()
{
backgrounding = new Backgrounding(true);
return this;
}
@Override
- public Pathable<Void> inBackground(Object context)
+ public ErrorListenerPathable<Void> inBackground(Object context)
{
backgrounding = new Backgrounding(context);
return this;
}
@Override
+ public Pathable<Void> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("DeleteBuilderImpl-Background");
- client.getZooKeeper().delete
- (
- operationAndData.getData(),
- version,
- new AsyncCallback.VoidCallback()
- {
- @Override
- public void processResult(int rc, String path, Object ctx)
+ try
+ {
+ final TimeTrace trace = client.getZookeeperClient().startTracer("DeleteBuilderImpl-Background");
+ client.getZooKeeper().delete
+ (
+ operationAndData.getData(),
+ version,
+ new AsyncCallback.VoidCallback()
{
- trace.commit();
- if ( (rc == KeeperException.Code.NOTEMPTY.intValue()) && deletingChildrenIfNeeded )
- {
- backgroundDeleteChildrenThenNode(operationAndData);
- }
- else
+ @Override
+ public void processResult(int rc, String path, Object ctx)
{
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.DELETE, rc, path, null, ctx, null, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
+ trace.commit();
+ if ( (rc == KeeperException.Code.NOTEMPTY.intValue()) && deletingChildrenIfNeeded )
+ {
+ backgroundDeleteChildrenThenNode(operationAndData);
+ }
+ else
+ {
+ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.DELETE, rc, path, null, ctx, null, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
+ }
}
- }
- },
- backgrounding.getContext()
- );
+ },
+ backgrounding.getContext()
+ );
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
private void backgroundDeleteChildrenThenNode(final OperationAndData<String> mainOperationAndData)
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/imps/ExistsBuilderImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/ExistsBuilderImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/ExistsBuilderImpl.java
index d4a059d..5fb7056 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/ExistsBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/ExistsBuilderImpl.java
@@ -20,14 +20,7 @@ package org.apache.curator.framework.imps;
import org.apache.curator.RetryLoop;
import org.apache.curator.TimeTrace;
-import org.apache.curator.framework.api.BackgroundCallback;
-import org.apache.curator.framework.api.BackgroundPathable;
-import org.apache.curator.framework.api.CuratorEvent;
-import org.apache.curator.framework.api.CuratorEventType;
-import org.apache.curator.framework.api.CuratorWatcher;
-import org.apache.curator.framework.api.ExistsBuilder;
-import org.apache.curator.framework.api.ExistsBuilderMain;
-import org.apache.curator.framework.api.Pathable;
+import org.apache.curator.framework.api.*;
import org.apache.curator.utils.ZKPaths;
import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.KeeperException;
@@ -36,7 +29,7 @@ import org.apache.zookeeper.data.Stat;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
-class ExistsBuilderImpl implements ExistsBuilder, BackgroundOperation<String>
+class ExistsBuilderImpl implements ExistsBuilder, BackgroundOperation<String>, ErrorListenerPathable<Stat>
{
private final CuratorFrameworkImpl client;
private Backgrounding backgrounding;
@@ -80,68 +73,82 @@ class ExistsBuilderImpl implements ExistsBuilder, BackgroundOperation<String>
}
@Override
- public Pathable<Stat> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathable<Stat> inBackground(BackgroundCallback callback, Object context)
{
backgrounding = new Backgrounding(callback, context);
return this;
}
@Override
- public Pathable<Stat> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathable<Stat> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
backgrounding = new Backgrounding(client, callback, context, executor);
return this;
}
@Override
- public Pathable<Stat> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathable<Stat> inBackground(BackgroundCallback callback)
{
backgrounding = new Backgrounding(callback);
return this;
}
@Override
- public Pathable<Stat> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathable<Stat> inBackground(BackgroundCallback callback, Executor executor)
{
backgrounding = new Backgrounding(client, callback, executor);
return this;
}
@Override
- public Pathable<Stat> inBackground()
+ public ErrorListenerPathable<Stat> inBackground()
{
backgrounding = new Backgrounding(true);
return this;
}
@Override
- public Pathable<Stat> inBackground(Object context)
+ public ErrorListenerPathable<Stat> inBackground(Object context)
{
backgrounding = new Backgrounding(context);
return this;
}
@Override
+ public Pathable<Stat> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("ExistsBuilderImpl-Background");
- AsyncCallback.StatCallback callback = new AsyncCallback.StatCallback()
+ try
{
- @Override
- public void processResult(int rc, String path, Object ctx, Stat stat)
+ final TimeTrace trace = client.getZookeeperClient().startTracer("ExistsBuilderImpl-Background");
+ AsyncCallback.StatCallback callback = new AsyncCallback.StatCallback()
{
- trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.EXISTS, rc, path, null, ctx, stat, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
+ @Override
+ public void processResult(int rc, String path, Object ctx, Stat stat)
+ {
+ trace.commit();
+ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.EXISTS, rc, path, null, ctx, stat, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
+ }
+ };
+ if ( watching.isWatched() )
+ {
+ client.getZooKeeper().exists(operationAndData.getData(), true, callback, backgrounding.getContext());
+ }
+ else
+ {
+ client.getZooKeeper().exists(operationAndData.getData(), watching.getWatcher(), callback, backgrounding.getContext());
}
- };
- if ( watching.isWatched() )
- {
- client.getZooKeeper().exists(operationAndData.getData(), true, callback, backgrounding.getContext());
}
- else
+ catch ( Throwable e )
{
- client.getZooKeeper().exists(operationAndData.getData(), watching.getWatcher(), callback, backgrounding.getContext());
+ backgrounding.checkError(e);
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/imps/GetACLBuilderImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/GetACLBuilderImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/GetACLBuilderImpl.java
index 250c2c8..351a8c5 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/GetACLBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/GetACLBuilderImpl.java
@@ -22,8 +22,10 @@ import org.apache.curator.RetryLoop;
import org.apache.curator.TimeTrace;
import org.apache.curator.framework.api.BackgroundCallback;
import org.apache.curator.framework.api.CuratorEventType;
+import org.apache.curator.framework.api.ErrorListenerPathable;
import org.apache.curator.framework.api.GetACLBuilder;
import org.apache.curator.framework.api.Pathable;
+import org.apache.curator.framework.api.UnhandledErrorListener;
import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.data.Stat;
@@ -31,7 +33,7 @@ import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
-class GetACLBuilderImpl implements GetACLBuilder, BackgroundOperation<String>
+class GetACLBuilderImpl implements GetACLBuilder, BackgroundOperation<String>, ErrorListenerPathable<List<ACL>>
{
private final CuratorFrameworkImpl client;
@@ -46,48 +48,55 @@ class GetACLBuilderImpl implements GetACLBuilder, BackgroundOperation<String>
}
@Override
- public Pathable<List<ACL>> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathable<List<ACL>> inBackground(BackgroundCallback callback, Object context)
{
backgrounding = new Backgrounding(callback, context);
return this;
}
@Override
- public Pathable<List<ACL>> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathable<List<ACL>> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
backgrounding = new Backgrounding(client, callback, context, executor);
return this;
}
@Override
- public Pathable<List<ACL>> inBackground()
+ public ErrorListenerPathable<List<ACL>> inBackground()
{
backgrounding = new Backgrounding(true);
return this;
}
@Override
- public Pathable<List<ACL>> inBackground(Object context)
+ public ErrorListenerPathable<List<ACL>> inBackground(Object context)
{
backgrounding = new Backgrounding(context);
return this;
}
@Override
- public Pathable<List<ACL>> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathable<List<ACL>> inBackground(BackgroundCallback callback)
{
backgrounding = new Backgrounding(callback);
return this;
}
@Override
- public Pathable<List<ACL>> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathable<List<ACL>> inBackground(BackgroundCallback callback, Executor executor)
{
backgrounding = new Backgrounding(client, callback, executor);
return this;
}
@Override
+ public Pathable<List<ACL>> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public Pathable<List<ACL>> storingStatIn(Stat stat)
{
responseStat = stat;
@@ -97,18 +106,25 @@ class GetACLBuilderImpl implements GetACLBuilder, BackgroundOperation<String>
@Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("GetACLBuilderImpl-Background");
- AsyncCallback.ACLCallback callback = new AsyncCallback.ACLCallback()
+ try
{
- @Override
- public void processResult(int rc, String path, Object ctx, List<ACL> acl, Stat stat)
+ final TimeTrace trace = client.getZookeeperClient().startTracer("GetACLBuilderImpl-Background");
+ AsyncCallback.ACLCallback callback = new AsyncCallback.ACLCallback()
{
- trace.commit();
- CuratorEventImpl event = new CuratorEventImpl(client, CuratorEventType.GET_ACL, rc, path, null, ctx, stat, null, null, null, acl);
- client.processBackgroundOperation(operationAndData, event);
- }
- };
- client.getZooKeeper().getACL(operationAndData.getData(), responseStat, callback, backgrounding.getContext());
+ @Override
+ public void processResult(int rc, String path, Object ctx, List<ACL> acl, Stat stat)
+ {
+ trace.commit();
+ CuratorEventImpl event = new CuratorEventImpl(client, CuratorEventType.GET_ACL, rc, path, null, ctx, stat, null, null, null, acl);
+ client.processBackgroundOperation(operationAndData, event);
+ }
+ };
+ client.getZooKeeper().getACL(operationAndData.getData(), responseStat, callback, backgrounding.getContext());
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/imps/GetChildrenBuilderImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/GetChildrenBuilderImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/GetChildrenBuilderImpl.java
index 16f6d4b..745800d 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/GetChildrenBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/GetChildrenBuilderImpl.java
@@ -25,8 +25,10 @@ import org.apache.curator.framework.api.BackgroundCallback;
import org.apache.curator.framework.api.BackgroundPathable;
import org.apache.curator.framework.api.CuratorEventType;
import org.apache.curator.framework.api.CuratorWatcher;
+import org.apache.curator.framework.api.ErrorListenerPathable;
import org.apache.curator.framework.api.GetChildrenBuilder;
import org.apache.curator.framework.api.Pathable;
+import org.apache.curator.framework.api.UnhandledErrorListener;
import org.apache.curator.framework.api.WatchPathable;
import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.Watcher;
@@ -35,12 +37,12 @@ import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
-class GetChildrenBuilderImpl implements GetChildrenBuilder, BackgroundOperation<String>
+class GetChildrenBuilderImpl implements GetChildrenBuilder, BackgroundOperation<String>, ErrorListenerPathable<List<String>>
{
private final CuratorFrameworkImpl client;
private Watching watching;
private Backgrounding backgrounding;
- private Stat responseStat;
+ private Stat responseStat;
GetChildrenBuilderImpl(CuratorFrameworkImpl client)
{
@@ -86,48 +88,55 @@ class GetChildrenBuilderImpl implements GetChildrenBuilder, BackgroundOperation<
}
@Override
- public Pathable<List<String>> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathable<List<String>> inBackground(BackgroundCallback callback, Object context)
{
backgrounding = new Backgrounding(callback, context);
return this;
}
@Override
- public Pathable<List<String>> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathable<List<String>> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
backgrounding = new Backgrounding(client, callback, context, executor);
return this;
}
@Override
- public Pathable<List<String>> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathable<List<String>> inBackground(BackgroundCallback callback)
{
backgrounding = new Backgrounding(callback);
return this;
}
@Override
- public Pathable<List<String>> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathable<List<String>> inBackground(BackgroundCallback callback, Executor executor)
{
backgrounding = new Backgrounding(client, callback, executor);
return this;
}
@Override
- public Pathable<List<String>> inBackground()
+ public ErrorListenerPathable<List<String>> inBackground()
{
backgrounding = new Backgrounding(true);
return this;
}
@Override
- public Pathable<List<String>> inBackground(Object context)
+ public ErrorListenerPathable<List<String>> inBackground(Object context)
{
backgrounding = new Backgrounding(context);
return this;
}
@Override
+ public Pathable<List<String>> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public BackgroundPathable<List<String>> watched()
{
watching = new Watching(true);
@@ -151,28 +160,35 @@ class GetChildrenBuilderImpl implements GetChildrenBuilder, BackgroundOperation<
@Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("GetChildrenBuilderImpl-Background");
- AsyncCallback.Children2Callback callback = new AsyncCallback.Children2Callback()
+ try
{
- @Override
- public void processResult(int rc, String path, Object o, List<String> strings, Stat stat)
+ final TimeTrace trace = client.getZookeeperClient().startTracer("GetChildrenBuilderImpl-Background");
+ AsyncCallback.Children2Callback callback = new AsyncCallback.Children2Callback()
{
- trace.commit();
- if ( strings == null )
+ @Override
+ public void processResult(int rc, String path, Object o, List<String> strings, Stat stat)
{
- strings = Lists.newArrayList();
+ trace.commit();
+ if ( strings == null )
+ {
+ strings = Lists.newArrayList();
+ }
+ CuratorEventImpl event = new CuratorEventImpl(client, CuratorEventType.CHILDREN, rc, path, null, o, stat, null, strings, null, null);
+ client.processBackgroundOperation(operationAndData, event);
}
- CuratorEventImpl event = new CuratorEventImpl(client, CuratorEventType.CHILDREN, rc, path, null, o, stat, null, strings, null, null);
- client.processBackgroundOperation(operationAndData, event);
+ };
+ if ( watching.isWatched() )
+ {
+ client.getZooKeeper().getChildren(operationAndData.getData(), true, callback, backgrounding.getContext());
+ }
+ else
+ {
+ client.getZooKeeper().getChildren(operationAndData.getData(), watching.getWatcher(), callback, backgrounding.getContext());
}
- };
- if ( watching.isWatched() )
- {
- client.getZooKeeper().getChildren(operationAndData.getData(), true, callback, backgrounding.getContext());
}
- else
+ catch ( Throwable e )
{
- client.getZooKeeper().getChildren(operationAndData.getData(), watching.getWatcher(), callback, backgrounding.getContext());
+ backgrounding.checkError(e);
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java
index 5a8d16c..94d27ad 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/GetDataBuilderImpl.java
@@ -20,15 +20,7 @@ package org.apache.curator.framework.imps;
import org.apache.curator.RetryLoop;
import org.apache.curator.TimeTrace;
-import org.apache.curator.framework.api.BackgroundCallback;
-import org.apache.curator.framework.api.BackgroundPathable;
-import org.apache.curator.framework.api.CuratorEvent;
-import org.apache.curator.framework.api.CuratorEventType;
-import org.apache.curator.framework.api.CuratorWatcher;
-import org.apache.curator.framework.api.GetDataBuilder;
-import org.apache.curator.framework.api.GetDataWatchBackgroundStatable;
-import org.apache.curator.framework.api.Pathable;
-import org.apache.curator.framework.api.WatchPathable;
+import org.apache.curator.framework.api.*;
import org.apache.curator.utils.ThreadUtils;
import org.apache.zookeeper.AsyncCallback;
import org.apache.zookeeper.KeeperException;
@@ -39,7 +31,7 @@ import org.slf4j.LoggerFactory;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
-class GetDataBuilderImpl implements GetDataBuilder, BackgroundOperation<String>
+class GetDataBuilderImpl implements GetDataBuilder, BackgroundOperation<String>, ErrorListenerPathable<byte[]>
{
private final Logger log = LoggerFactory.getLogger(getClass());
private final CuratorFrameworkImpl client;
@@ -64,37 +56,37 @@ class GetDataBuilderImpl implements GetDataBuilder, BackgroundOperation<String>
return new GetDataWatchBackgroundStatable()
{
@Override
- public Pathable<byte[]> inBackground()
+ public ErrorListenerPathable<byte[]> inBackground()
{
return GetDataBuilderImpl.this.inBackground();
}
@Override
- public Pathable<byte[]> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathable<byte[]> inBackground(BackgroundCallback callback, Object context)
{
return GetDataBuilderImpl.this.inBackground(callback, context);
}
@Override
- public Pathable<byte[]> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathable<byte[]> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
return GetDataBuilderImpl.this.inBackground(callback, context, executor);
}
@Override
- public Pathable<byte[]> inBackground(Object context)
+ public ErrorListenerPathable<byte[]> inBackground(Object context)
{
return GetDataBuilderImpl.this.inBackground(context);
}
@Override
- public Pathable<byte[]> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathable<byte[]> inBackground(BackgroundCallback callback)
{
return GetDataBuilderImpl.this.inBackground(callback);
}
@Override
- public Pathable<byte[]> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathable<byte[]> inBackground(BackgroundCallback callback, Executor executor)
{
return GetDataBuilderImpl.this.inBackground(callback, executor);
}
@@ -167,48 +159,55 @@ class GetDataBuilderImpl implements GetDataBuilder, BackgroundOperation<String>
}
@Override
- public Pathable<byte[]> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathable<byte[]> inBackground(BackgroundCallback callback, Object context)
{
backgrounding = new Backgrounding(callback, context);
return this;
}
@Override
- public Pathable<byte[]> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathable<byte[]> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
backgrounding = new Backgrounding(client, callback, context, executor);
return this;
}
@Override
- public Pathable<byte[]> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathable<byte[]> inBackground(BackgroundCallback callback)
{
backgrounding = new Backgrounding(callback);
return this;
}
@Override
- public Pathable<byte[]> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathable<byte[]> inBackground(BackgroundCallback callback, Executor executor)
{
backgrounding = new Backgrounding(client, callback, executor);
return this;
}
@Override
- public Pathable<byte[]> inBackground()
+ public ErrorListenerPathable<byte[]> inBackground()
{
backgrounding = new Backgrounding(true);
return this;
}
@Override
- public Pathable<byte[]> inBackground(Object context)
+ public ErrorListenerPathable<byte[]> inBackground(Object context)
{
backgrounding = new Backgrounding(context);
return this;
}
@Override
+ public Pathable<byte[]> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public BackgroundPathable<byte[]> watched()
{
watching = new Watching(true);
@@ -232,37 +231,44 @@ class GetDataBuilderImpl implements GetDataBuilder, BackgroundOperation<String>
@Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("GetDataBuilderImpl-Background");
- AsyncCallback.DataCallback callback = new AsyncCallback.DataCallback()
+ try
{
- @Override
- public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat)
+ final TimeTrace trace = client.getZookeeperClient().startTracer("GetDataBuilderImpl-Background");
+ AsyncCallback.DataCallback callback = new AsyncCallback.DataCallback()
{
- trace.commit();
- if ( decompress && (data != null) )
+ @Override
+ public void processResult(int rc, String path, Object ctx, byte[] data, Stat stat)
{
- try
+ trace.commit();
+ if ( decompress && (data != null) )
{
- data = client.getCompressionProvider().decompress(path, data);
- }
- catch ( Exception e )
- {
- ThreadUtils.checkInterrupted(e);
- log.error("Decompressing for path: " + path, e);
- rc = KeeperException.Code.DATAINCONSISTENCY.intValue();
+ try
+ {
+ data = client.getCompressionProvider().decompress(path, data);
+ }
+ catch ( Exception e )
+ {
+ ThreadUtils.checkInterrupted(e);
+ log.error("Decompressing for path: " + path, e);
+ rc = KeeperException.Code.DATAINCONSISTENCY.intValue();
+ }
}
+ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.GET_DATA, rc, path, null, ctx, stat, data, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
}
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.GET_DATA, rc, path, null, ctx, stat, data, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
+ };
+ if ( watching.isWatched() )
+ {
+ client.getZooKeeper().getData(operationAndData.getData(), true, callback, backgrounding.getContext());
+ }
+ else
+ {
+ client.getZooKeeper().getData(operationAndData.getData(), watching.getWatcher(), callback, backgrounding.getContext());
}
- };
- if ( watching.isWatched() )
- {
- client.getZooKeeper().getData(operationAndData.getData(), true, callback, backgrounding.getContext());
}
- else
+ catch ( Throwable e )
{
- client.getZooKeeper().getData(operationAndData.getData(), watching.getWatcher(), callback, backgrounding.getContext());
+ backgrounding.checkError(e);
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/imps/SetACLBuilderImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/SetACLBuilderImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/SetACLBuilderImpl.java
index f7b2480..5507529 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/SetACLBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/SetACLBuilderImpl.java
@@ -32,7 +32,7 @@ import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
-class SetACLBuilderImpl implements SetACLBuilder, BackgroundPathable<Stat>, BackgroundOperation<String>
+class SetACLBuilderImpl implements SetACLBuilder, BackgroundPathable<Stat>, BackgroundOperation<String>, ErrorListenerPathable<Stat>
{
private final CuratorFrameworkImpl client;
@@ -63,48 +63,55 @@ class SetACLBuilderImpl implements SetACLBuilder, BackgroundPathable<Stat>, Back
}
@Override
- public Pathable<Stat> inBackground()
+ public ErrorListenerPathable<Stat> inBackground()
{
backgrounding = new Backgrounding(true);
return this;
}
@Override
- public Pathable<Stat> inBackground(Object context)
+ public ErrorListenerPathable<Stat> inBackground(Object context)
{
backgrounding = new Backgrounding(context);
return this;
}
@Override
- public Pathable<Stat> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathable<Stat> inBackground(BackgroundCallback callback)
{
backgrounding = new Backgrounding(callback);
return this;
}
@Override
- public Pathable<Stat> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathable<Stat> inBackground(BackgroundCallback callback, Object context)
{
backgrounding = new Backgrounding(callback, context);
return this;
}
@Override
- public Pathable<Stat> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathable<Stat> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
backgrounding = new Backgrounding(client, callback, context, executor);
return this;
}
@Override
- public Pathable<Stat> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathable<Stat> inBackground(BackgroundCallback callback, Executor executor)
{
backgrounding = new Backgrounding(client, callback, executor);
return this;
}
@Override
+ public Pathable<Stat> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public Stat forPath(String path) throws Exception
{
path = client.fixForNamespace(path);
@@ -124,26 +131,33 @@ class SetACLBuilderImpl implements SetACLBuilder, BackgroundPathable<Stat>, Back
@Override
public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("SetACLBuilderImpl-Background");
- String path = operationAndData.getData();
- client.getZooKeeper().setACL
- (
- path,
- acling.getAclList(path),
- version,
- new AsyncCallback.StatCallback()
- {
- @SuppressWarnings({"unchecked"})
- @Override
- public void processResult(int rc, String path, Object ctx, Stat stat)
+ try
+ {
+ final TimeTrace trace = client.getZookeeperClient().startTracer("SetACLBuilderImpl-Background");
+ String path = operationAndData.getData();
+ client.getZooKeeper().setACL
+ (
+ path,
+ acling.getAclList(path),
+ version,
+ new AsyncCallback.StatCallback()
{
- trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SET_ACL, rc, path, null, ctx, stat, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
- }
- },
- backgrounding.getContext()
- );
+ @SuppressWarnings({"unchecked"})
+ @Override
+ public void processResult(int rc, String path, Object ctx, Stat stat)
+ {
+ trace.commit();
+ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SET_ACL, rc, path, null, ctx, stat, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
+ }
+ },
+ backgrounding.getContext()
+ );
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
private Stat pathInForeground(final String path) throws Exception
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
index 4117930..62e39cf 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
@@ -20,14 +20,7 @@ package org.apache.curator.framework.imps;
import org.apache.curator.RetryLoop;
import org.apache.curator.TimeTrace;
-import org.apache.curator.framework.api.BackgroundCallback;
-import org.apache.curator.framework.api.BackgroundPathAndBytesable;
-import org.apache.curator.framework.api.CuratorEvent;
-import org.apache.curator.framework.api.CuratorEventType;
-import org.apache.curator.framework.api.PathAndBytesable;
-import org.apache.curator.framework.api.SetDataBackgroundVersionable;
-import org.apache.curator.framework.api.SetDataBuilder;
-import org.apache.curator.framework.api.VersionPathAndBytesable;
+import org.apache.curator.framework.api.*;
import org.apache.curator.framework.api.transaction.CuratorTransactionBridge;
import org.apache.curator.framework.api.transaction.OperationType;
import org.apache.curator.framework.api.transaction.TransactionSetDataBuilder;
@@ -38,7 +31,7 @@ import org.apache.zookeeper.data.Stat;
import java.util.concurrent.Callable;
import java.util.concurrent.Executor;
-class SetDataBuilderImpl implements SetDataBuilder, BackgroundOperation<PathAndBytes>
+class SetDataBuilderImpl implements SetDataBuilder, BackgroundOperation<PathAndBytes>, ErrorListenerPathAndBytesable<Stat>
{
private final CuratorFrameworkImpl client;
private Backgrounding backgrounding;
@@ -99,37 +92,37 @@ class SetDataBuilderImpl implements SetDataBuilder, BackgroundOperation<PathAndB
return new SetDataBackgroundVersionable()
{
@Override
- public PathAndBytesable<Stat> inBackground()
+ public ErrorListenerPathAndBytesable<Stat> inBackground()
{
return SetDataBuilderImpl.this.inBackground();
}
@Override
- public PathAndBytesable<Stat> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathAndBytesable<Stat> inBackground(BackgroundCallback callback, Object context)
{
return SetDataBuilderImpl.this.inBackground(callback, context);
}
@Override
- public PathAndBytesable<Stat> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathAndBytesable<Stat> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
return SetDataBuilderImpl.this.inBackground(callback, context, executor);
}
@Override
- public PathAndBytesable<Stat> inBackground(Object context)
+ public ErrorListenerPathAndBytesable<Stat> inBackground(Object context)
{
return SetDataBuilderImpl.this.inBackground(context);
}
@Override
- public PathAndBytesable<Stat> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathAndBytesable<Stat> inBackground(BackgroundCallback callback)
{
return SetDataBuilderImpl.this.inBackground(callback);
}
@Override
- public PathAndBytesable<Stat> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathAndBytesable<Stat> inBackground(BackgroundCallback callback, Executor executor)
{
return SetDataBuilderImpl.this.inBackground(callback, executor);
}
@@ -162,69 +155,83 @@ class SetDataBuilderImpl implements SetDataBuilder, BackgroundOperation<PathAndB
}
@Override
- public PathAndBytesable<Stat> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathAndBytesable<Stat> inBackground(BackgroundCallback callback, Object context)
{
backgrounding = new Backgrounding(callback, context);
return this;
}
@Override
- public PathAndBytesable<Stat> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathAndBytesable<Stat> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
backgrounding = new Backgrounding(client, callback, context, executor);
return this;
}
@Override
- public PathAndBytesable<Stat> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathAndBytesable<Stat> inBackground(BackgroundCallback callback)
{
backgrounding = new Backgrounding(callback);
return this;
}
@Override
- public PathAndBytesable<Stat> inBackground()
+ public ErrorListenerPathAndBytesable<Stat> inBackground()
{
backgrounding = new Backgrounding(true);
return this;
}
@Override
- public PathAndBytesable<Stat> inBackground(Object context)
+ public ErrorListenerPathAndBytesable<Stat> inBackground(Object context)
{
backgrounding = new Backgrounding(context);
return this;
}
@Override
- public PathAndBytesable<Stat> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathAndBytesable<Stat> inBackground(BackgroundCallback callback, Executor executor)
{
backgrounding = new Backgrounding(client, callback, executor);
return this;
}
@Override
+ public PathAndBytesable<Stat> withUnhandledErrorListener(UnhandledErrorListener listener)
+ {
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
+
+ @Override
public void performBackgroundOperation(final OperationAndData<PathAndBytes> operationAndData) throws Exception
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("SetDataBuilderImpl-Background");
- client.getZooKeeper().setData
- (
- operationAndData.getData().getPath(),
- operationAndData.getData().getData(),
- version,
- new AsyncCallback.StatCallback()
- {
- @SuppressWarnings({"unchecked"})
- @Override
- public void processResult(int rc, String path, Object ctx, Stat stat)
+ try
+ {
+ final TimeTrace trace = client.getZookeeperClient().startTracer("SetDataBuilderImpl-Background");
+ client.getZooKeeper().setData
+ (
+ operationAndData.getData().getPath(),
+ operationAndData.getData().getData(),
+ version,
+ new AsyncCallback.StatCallback()
{
- trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SET_DATA, rc, path, null, ctx, stat, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
- }
- },
- backgrounding.getContext()
- );
+ @SuppressWarnings({"unchecked"})
+ @Override
+ public void processResult(int rc, String path, Object ctx, Stat stat)
+ {
+ trace.commit();
+ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SET_DATA, rc, path, null, ctx, stat, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
+ }
+ },
+ backgrounding.getContext()
+ );
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/main/java/org/apache/curator/framework/imps/SyncBuilderImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/SyncBuilderImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/SyncBuilderImpl.java
index 09dfbae..1e5f371 100755
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/SyncBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/SyncBuilderImpl.java
@@ -22,12 +22,14 @@ import org.apache.curator.TimeTrace;
import org.apache.curator.framework.api.BackgroundCallback;
import org.apache.curator.framework.api.CuratorEvent;
import org.apache.curator.framework.api.CuratorEventType;
+import org.apache.curator.framework.api.ErrorListenerPathable;
import org.apache.curator.framework.api.Pathable;
import org.apache.curator.framework.api.SyncBuilder;
+import org.apache.curator.framework.api.UnhandledErrorListener;
import org.apache.zookeeper.AsyncCallback;
import java.util.concurrent.Executor;
-public class SyncBuilderImpl implements SyncBuilder, BackgroundOperation<String>
+public class SyncBuilderImpl implements SyncBuilder, BackgroundOperation<String>, ErrorListenerPathable<Void>
{
private final CuratorFrameworkImpl client;
private Backgrounding backgrounding = new Backgrounding();
@@ -39,65 +41,79 @@ public class SyncBuilderImpl implements SyncBuilder, BackgroundOperation<String>
}
@Override
- public Pathable<Void> inBackground()
+ public ErrorListenerPathable<Void> inBackground()
{
// NOP always in background
return this;
}
@Override
- public Pathable<Void> inBackground(Object context)
+ public ErrorListenerPathable<Void> inBackground(Object context)
{
backgrounding = new Backgrounding(context);
return this;
}
@Override
- public Pathable<Void> inBackground(BackgroundCallback callback)
+ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback)
{
backgrounding = new Backgrounding(callback);
return this;
}
@Override
- public Pathable<Void> inBackground(BackgroundCallback callback, Object context)
+ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Object context)
{
backgrounding = new Backgrounding(callback, context);
return this;
}
@Override
- public Pathable<Void> inBackground(BackgroundCallback callback, Executor executor)
+ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Executor executor)
{
backgrounding = new Backgrounding(client, callback, executor);
return this;
}
@Override
- public Pathable<Void> inBackground(BackgroundCallback callback, Object context, Executor executor)
+ public ErrorListenerPathable<Void> inBackground(BackgroundCallback callback, Object context, Executor executor)
{
backgrounding = new Backgrounding(client, callback, context, executor);
return this;
}
@Override
- public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
+ public Pathable<Void> withUnhandledErrorListener(UnhandledErrorListener listener)
{
- final TimeTrace trace = client.getZookeeperClient().startTracer("SyncBuilderImpl-Background");
- final String path = operationAndData.getData();
- String adjustedPath = client.fixForNamespace(path);
+ backgrounding = new Backgrounding(backgrounding, listener);
+ return this;
+ }
- AsyncCallback.VoidCallback voidCallback = new AsyncCallback.VoidCallback()
+ @Override
+ public void performBackgroundOperation(final OperationAndData<String> operationAndData) throws Exception
+ {
+ try
{
- @Override
- public void processResult(int rc, String path, Object ctx)
+ final TimeTrace trace = client.getZookeeperClient().startTracer("SyncBuilderImpl-Background");
+ final String path = operationAndData.getData();
+ String adjustedPath = client.fixForNamespace(path);
+
+ AsyncCallback.VoidCallback voidCallback = new AsyncCallback.VoidCallback()
{
- trace.commit();
- CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SYNC, rc, path, path, ctx, null, null, null, null, null);
- client.processBackgroundOperation(operationAndData, event);
- }
- };
- client.getZooKeeper().sync(adjustedPath, voidCallback, backgrounding.getContext());
+ @Override
+ public void processResult(int rc, String path, Object ctx)
+ {
+ trace.commit();
+ CuratorEvent event = new CuratorEventImpl(client, CuratorEventType.SYNC, rc, path, path, ctx, null, null, null, null, null);
+ client.processBackgroundOperation(operationAndData, event);
+ }
+ };
+ client.getZooKeeper().sync(adjustedPath, voidCallback, backgrounding.getContext());
+ }
+ catch ( Throwable e )
+ {
+ backgrounding.checkError(e);
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/curator/blob/84996801/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkBackground.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkBackground.java b/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkBackground.java
index 26cc941..8e21929 100644
--- a/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkBackground.java
+++ b/curator-framework/src/test/java/org/apache/curator/framework/imps/TestFrameworkBackground.java
@@ -22,6 +22,7 @@ package org.apache.curator.framework.imps;
import com.google.common.collect.Lists;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
+import org.apache.curator.framework.api.ACLProvider;
import org.apache.curator.framework.api.BackgroundCallback;
import org.apache.curator.framework.api.CuratorEvent;
import org.apache.curator.framework.api.UnhandledErrorListener;
@@ -30,10 +31,10 @@ import org.apache.curator.framework.state.ConnectionStateListener;
import org.apache.curator.retry.RetryNTimes;
import org.apache.curator.retry.RetryOneTime;
import org.apache.curator.test.BaseClassForTests;
-import org.apache.curator.test.TestingServer;
import org.apache.curator.test.Timing;
import org.apache.curator.utils.CloseableUtils;
import org.apache.zookeeper.KeeperException.Code;
+import org.apache.zookeeper.data.ACL;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.util.Arrays;
@@ -46,6 +47,53 @@ import java.util.concurrent.atomic.AtomicReference;
public class TestFrameworkBackground extends BaseClassForTests
{
@Test
+ public void testErrorListener() throws Exception
+ {
+ ACLProvider badAclProvider = new ACLProvider()
+ {
+ @Override
+ public List<ACL> getDefaultAcl()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public List<ACL> getAclForPath(String path)
+ {
+ throw new UnsupportedOperationException();
+ }
+ };
+ CuratorFramework client = CuratorFrameworkFactory.builder()
+ .connectString(server.getConnectString())
+ .retryPolicy(new RetryOneTime(1))
+ .aclProvider(badAclProvider)
+ .build();
+ try
+ {
+ client.start();
+
+ final CountDownLatch errorLatch = new CountDownLatch(1);
+ UnhandledErrorListener listener = new UnhandledErrorListener()
+ {
+ @Override
+ public void unhandledError(String message, Throwable e)
+ {
+ if ( e instanceof UnsupportedOperationException )
+ {
+ errorLatch.countDown();
+ }
+ }
+ };
+ client.create().inBackground().withUnhandledErrorListener(listener).forPath("/foo");
+ Assert.assertTrue(new Timing().awaitLatch(errorLatch));
+ }
+ finally
+ {
+ CloseableUtils.closeQuietly(client);
+ }
+ }
+
+ @Test
public void testListenerConnectedAtStart() throws Exception
{
server.stop();
[3/8] curator git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/curator
Posted by ra...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/curator
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/c43116a2
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/c43116a2
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/c43116a2
Branch: refs/heads/CURATOR-3.0
Commit: c43116a28fd0737a05754f9db3f3c1eec36329b3
Parents: 7149890 33c19d6
Author: randgalt <ra...@apache.org>
Authored: Wed Feb 10 08:54:11 2016 -0500
Committer: randgalt <ra...@apache.org>
Committed: Wed Feb 10 08:54:11 2016 -0500
----------------------------------------------------------------------
.../framework/recipes/cache/TreeCache.java | 3 ++
.../recipes/cache/BaseTestTreeCache.java | 3 +-
.../framework/recipes/cache/TestTreeCache.java | 37 +++++++++-----------
3 files changed, 22 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
[4/8] curator git commit: [maven-release-plugin] prepare release
apache-curator-2.10.0
Posted by ra...@apache.org.
[maven-release-plugin] prepare release apache-curator-2.10.0
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/72ce8563
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/72ce8563
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/72ce8563
Branch: refs/heads/CURATOR-3.0
Commit: 72ce8563341e35966ed8eb753024adf052144070
Parents: c43116a
Author: randgalt <ra...@apache.org>
Authored: Wed Feb 10 15:14:23 2016 -0500
Committer: randgalt <ra...@apache.org>
Committed: Wed Feb 10 15:14:23 2016 -0500
----------------------------------------------------------------------
curator-client/pom.xml | 4 ++--
curator-examples/pom.xml | 2 +-
curator-framework/pom.xml | 4 ++--
curator-recipes/pom.xml | 4 ++--
curator-test/pom.xml | 4 ++--
curator-x-discovery-server/pom.xml | 4 ++--
curator-x-discovery/pom.xml | 4 ++--
curator-x-rpc/pom.xml | 4 ++--
pom.xml | 4 ++--
9 files changed, 17 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/72ce8563/curator-client/pom.xml
----------------------------------------------------------------------
diff --git a/curator-client/pom.xml b/curator-client/pom.xml
index 4080eb5..f25e331 100644
--- a/curator-client/pom.xml
+++ b/curator-client/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-client</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>bundle</packaging>
<name>Curator Client</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/72ce8563/curator-examples/pom.xml
----------------------------------------------------------------------
diff --git a/curator-examples/pom.xml b/curator-examples/pom.xml
index 21be8fd..f3a7840 100644
--- a/curator-examples/pom.xml
+++ b/curator-examples/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-examples</artifactId>
http://git-wip-us.apache.org/repos/asf/curator/blob/72ce8563/curator-framework/pom.xml
----------------------------------------------------------------------
diff --git a/curator-framework/pom.xml b/curator-framework/pom.xml
index 660fc15..d71c7fa 100644
--- a/curator-framework/pom.xml
+++ b/curator-framework/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-framework</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>bundle</packaging>
<name>Curator Framework</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/72ce8563/curator-recipes/pom.xml
----------------------------------------------------------------------
diff --git a/curator-recipes/pom.xml b/curator-recipes/pom.xml
index 6f4c81a..5534a52 100644
--- a/curator-recipes/pom.xml
+++ b/curator-recipes/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-recipes</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>bundle</packaging>
<name>Curator Recipes</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/72ce8563/curator-test/pom.xml
----------------------------------------------------------------------
diff --git a/curator-test/pom.xml b/curator-test/pom.xml
index f63fb0a..ff7cd11 100644
--- a/curator-test/pom.xml
+++ b/curator-test/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-test</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<name>Curator Testing</name>
<description>Unit testing utilities.</description>
http://git-wip-us.apache.org/repos/asf/curator/blob/72ce8563/curator-x-discovery-server/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-discovery-server/pom.xml b/curator-x-discovery-server/pom.xml
index b60b0a0..7f7a4c1 100644
--- a/curator-x-discovery-server/pom.xml
+++ b/curator-x-discovery-server/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-x-discovery-server</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>bundle</packaging>
<name>Curator Service Discovery Server</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/72ce8563/curator-x-discovery/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-discovery/pom.xml b/curator-x-discovery/pom.xml
index 7a0890f..7bcb64f 100644
--- a/curator-x-discovery/pom.xml
+++ b/curator-x-discovery/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<artifactId>curator-x-discovery</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>bundle</packaging>
<name>Curator Service Discovery</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/72ce8563/curator-x-rpc/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-rpc/pom.xml b/curator-x-rpc/pom.xml
index d28a02b..8bbce93 100644
--- a/curator-x-rpc/pom.xml
+++ b/curator-x-rpc/pom.xml
@@ -22,12 +22,12 @@
<parent>
<artifactId>apache-curator</artifactId>
<groupId>org.apache.curator</groupId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>curator-x-rpc</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<name>Curator RPC Proxy</name>
<description>A proxy that bridges non-java environments with the Curator framework and recipes</description>
http://git-wip-us.apache.org/repos/asf/curator/blob/72ce8563/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index ea86185..33f22cd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.1-SNAPSHOT</version>
+ <version>2.10.0</version>
<packaging>pom</packaging>
<name>Apache Curator</name>
@@ -98,7 +98,7 @@
<connection>scm:git:https://git-wip-us.apache.org/repos/asf/curator.git</connection>
<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/curator.git
</developerConnection>
- <tag>apache-curator-2.8.0</tag>
+ <tag>apache-curator-2.10.0</tag>
</scm>
<issueManagement>
[2/8] curator git commit: [maven-release-plugin] prepare for next
development iteration
Posted by ra...@apache.org.
[maven-release-plugin] prepare for next development iteration
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/71498909
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/71498909
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/71498909
Branch: refs/heads/CURATOR-3.0
Commit: 71498909f940735b8b0c3c214f2f6ee83b9b555b
Parents: 4956fd9
Author: randgalt <ra...@apache.org>
Authored: Mon Feb 8 13:25:54 2016 -0500
Committer: randgalt <ra...@apache.org>
Committed: Mon Feb 8 13:25:54 2016 -0500
----------------------------------------------------------------------
curator-client/pom.xml | 4 ++--
curator-examples/pom.xml | 2 +-
curator-framework/pom.xml | 4 ++--
curator-recipes/pom.xml | 4 ++--
curator-test/pom.xml | 4 ++--
curator-x-discovery-server/pom.xml | 4 ++--
curator-x-discovery/pom.xml | 4 ++--
curator-x-rpc/pom.xml | 4 ++--
pom.xml | 4 ++--
9 files changed, 17 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/71498909/curator-client/pom.xml
----------------------------------------------------------------------
diff --git a/curator-client/pom.xml b/curator-client/pom.xml
index f25e331..4080eb5 100644
--- a/curator-client/pom.xml
+++ b/curator-client/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-client</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Curator Client</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/71498909/curator-examples/pom.xml
----------------------------------------------------------------------
diff --git a/curator-examples/pom.xml b/curator-examples/pom.xml
index f3a7840..21be8fd 100644
--- a/curator-examples/pom.xml
+++ b/curator-examples/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-examples</artifactId>
http://git-wip-us.apache.org/repos/asf/curator/blob/71498909/curator-framework/pom.xml
----------------------------------------------------------------------
diff --git a/curator-framework/pom.xml b/curator-framework/pom.xml
index d71c7fa..660fc15 100644
--- a/curator-framework/pom.xml
+++ b/curator-framework/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-framework</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Curator Framework</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/71498909/curator-recipes/pom.xml
----------------------------------------------------------------------
diff --git a/curator-recipes/pom.xml b/curator-recipes/pom.xml
index 5534a52..6f4c81a 100644
--- a/curator-recipes/pom.xml
+++ b/curator-recipes/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-recipes</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Curator Recipes</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/71498909/curator-test/pom.xml
----------------------------------------------------------------------
diff --git a/curator-test/pom.xml b/curator-test/pom.xml
index ff7cd11..f63fb0a 100644
--- a/curator-test/pom.xml
+++ b/curator-test/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-test</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<name>Curator Testing</name>
<description>Unit testing utilities.</description>
http://git-wip-us.apache.org/repos/asf/curator/blob/71498909/curator-x-discovery-server/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-discovery-server/pom.xml b/curator-x-discovery-server/pom.xml
index 7f7a4c1..b60b0a0 100644
--- a/curator-x-discovery-server/pom.xml
+++ b/curator-x-discovery-server/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-x-discovery-server</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Curator Service Discovery Server</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/71498909/curator-x-discovery/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-discovery/pom.xml b/curator-x-discovery/pom.xml
index 7bcb64f..7a0890f 100644
--- a/curator-x-discovery/pom.xml
+++ b/curator-x-discovery/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-x-discovery</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Curator Service Discovery</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/71498909/curator-x-rpc/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-rpc/pom.xml b/curator-x-rpc/pom.xml
index 8bbce93..d28a02b 100644
--- a/curator-x-rpc/pom.xml
+++ b/curator-x-rpc/pom.xml
@@ -22,12 +22,12 @@
<parent>
<artifactId>apache-curator</artifactId>
<groupId>org.apache.curator</groupId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>curator-x-rpc</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<name>Curator RPC Proxy</name>
<description>A proxy that bridges non-java environments with the Curator framework and recipes</description>
http://git-wip-us.apache.org/repos/asf/curator/blob/71498909/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 33f22cd..ea86185 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Apache Curator</name>
@@ -98,7 +98,7 @@
<connection>scm:git:https://git-wip-us.apache.org/repos/asf/curator.git</connection>
<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/curator.git
</developerConnection>
- <tag>apache-curator-2.10.0</tag>
+ <tag>apache-curator-2.8.0</tag>
</scm>
<issueManagement>
[5/8] curator git commit: [maven-release-plugin] prepare for next
development iteration
Posted by ra...@apache.org.
[maven-release-plugin] prepare for next development iteration
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/18e912dc
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/18e912dc
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/18e912dc
Branch: refs/heads/CURATOR-3.0
Commit: 18e912dc973f888526352b24db807708c547caa7
Parents: 72ce856
Author: randgalt <ra...@apache.org>
Authored: Wed Feb 10 15:14:36 2016 -0500
Committer: randgalt <ra...@apache.org>
Committed: Wed Feb 10 15:14:36 2016 -0500
----------------------------------------------------------------------
curator-client/pom.xml | 4 ++--
curator-examples/pom.xml | 2 +-
curator-framework/pom.xml | 4 ++--
curator-recipes/pom.xml | 4 ++--
curator-test/pom.xml | 4 ++--
curator-x-discovery-server/pom.xml | 4 ++--
curator-x-discovery/pom.xml | 4 ++--
curator-x-rpc/pom.xml | 4 ++--
pom.xml | 4 ++--
9 files changed, 17 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/18e912dc/curator-client/pom.xml
----------------------------------------------------------------------
diff --git a/curator-client/pom.xml b/curator-client/pom.xml
index f25e331..4080eb5 100644
--- a/curator-client/pom.xml
+++ b/curator-client/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-client</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Curator Client</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/18e912dc/curator-examples/pom.xml
----------------------------------------------------------------------
diff --git a/curator-examples/pom.xml b/curator-examples/pom.xml
index f3a7840..21be8fd 100644
--- a/curator-examples/pom.xml
+++ b/curator-examples/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-examples</artifactId>
http://git-wip-us.apache.org/repos/asf/curator/blob/18e912dc/curator-framework/pom.xml
----------------------------------------------------------------------
diff --git a/curator-framework/pom.xml b/curator-framework/pom.xml
index d71c7fa..660fc15 100644
--- a/curator-framework/pom.xml
+++ b/curator-framework/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-framework</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Curator Framework</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/18e912dc/curator-recipes/pom.xml
----------------------------------------------------------------------
diff --git a/curator-recipes/pom.xml b/curator-recipes/pom.xml
index 5534a52..6f4c81a 100644
--- a/curator-recipes/pom.xml
+++ b/curator-recipes/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-recipes</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Curator Recipes</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/18e912dc/curator-test/pom.xml
----------------------------------------------------------------------
diff --git a/curator-test/pom.xml b/curator-test/pom.xml
index ff7cd11..f63fb0a 100644
--- a/curator-test/pom.xml
+++ b/curator-test/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-test</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<name>Curator Testing</name>
<description>Unit testing utilities.</description>
http://git-wip-us.apache.org/repos/asf/curator/blob/18e912dc/curator-x-discovery-server/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-discovery-server/pom.xml b/curator-x-discovery-server/pom.xml
index 7f7a4c1..b60b0a0 100644
--- a/curator-x-discovery-server/pom.xml
+++ b/curator-x-discovery-server/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-x-discovery-server</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Curator Service Discovery Server</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/18e912dc/curator-x-discovery/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-discovery/pom.xml b/curator-x-discovery/pom.xml
index 7bcb64f..7a0890f 100644
--- a/curator-x-discovery/pom.xml
+++ b/curator-x-discovery/pom.xml
@@ -24,11 +24,11 @@
<parent>
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<artifactId>curator-x-discovery</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Curator Service Discovery</name>
http://git-wip-us.apache.org/repos/asf/curator/blob/18e912dc/curator-x-rpc/pom.xml
----------------------------------------------------------------------
diff --git a/curator-x-rpc/pom.xml b/curator-x-rpc/pom.xml
index 8bbce93..d28a02b 100644
--- a/curator-x-rpc/pom.xml
+++ b/curator-x-rpc/pom.xml
@@ -22,12 +22,12 @@
<parent>
<artifactId>apache-curator</artifactId>
<groupId>org.apache.curator</groupId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>curator-x-rpc</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<name>Curator RPC Proxy</name>
<description>A proxy that bridges non-java environments with the Curator framework and recipes</description>
http://git-wip-us.apache.org/repos/asf/curator/blob/18e912dc/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 33f22cd..ea86185 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
<groupId>org.apache.curator</groupId>
<artifactId>apache-curator</artifactId>
- <version>2.10.0</version>
+ <version>2.10.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Apache Curator</name>
@@ -98,7 +98,7 @@
<connection>scm:git:https://git-wip-us.apache.org/repos/asf/curator.git</connection>
<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/curator.git
</developerConnection>
- <tag>apache-curator-2.10.0</tag>
+ <tag>apache-curator-2.8.0</tag>
</scm>
<issueManagement>