You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ta...@apache.org on 2014/10/17 22:12:44 UTC
git commit: Extract some common bits into a utility base class.
Repository: qpid-jms
Updated Branches:
refs/heads/master badfb1b4d -> 375b05503
Extract some common bits into a utility base class.
Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/375b0550
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/375b0550
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/375b0550
Branch: refs/heads/master
Commit: 375b05503411a84030a142e0c42b98830cf6629b
Parents: badfb1b
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Oct 17 16:12:35 2014 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Oct 17 16:12:35 2014 -0400
----------------------------------------------------------------------
.../qpid/jms/provider/ProviderFuture.java | 15 ++---
.../qpid/jms/provider/WrappedAsyncResult.java | 59 ++++++++++++++++++++
.../provider/amqp/AmqpAnonymousProducer.java | 23 +++-----
.../jms/provider/failover/FailoverProvider.java | 6 +-
4 files changed, 76 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/375b0550/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/ProviderFuture.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/ProviderFuture.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/ProviderFuture.java
index 7a52ad3..417d185 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/ProviderFuture.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/ProviderFuture.java
@@ -25,18 +25,17 @@ import org.apache.qpid.jms.util.IOExceptionSupport;
/**
* Asynchronous Provider Future class.
*/
-public class ProviderFuture implements AsyncResult {
+public class ProviderFuture extends WrappedAsyncResult {
protected final CountDownLatch latch = new CountDownLatch(1);
protected Throwable error;
- protected final AsyncResult watcher;
public ProviderFuture() {
- this.watcher = null;
+ super(null);
}
public ProviderFuture(AsyncResult watcher) {
- this.watcher = watcher;
+ super(watcher);
}
@Override
@@ -48,17 +47,13 @@ public class ProviderFuture implements AsyncResult {
public void onFailure(Throwable result) {
error = result;
latch.countDown();
- if (watcher != null) {
- watcher.onFailure(error);
- }
+ super.onFailure(result);
}
@Override
public void onSuccess() {
latch.countDown();
- if (watcher != null) {
- watcher.onSuccess();
- }
+ super.onSuccess();
}
/**
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/375b0550/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/WrappedAsyncResult.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/WrappedAsyncResult.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/WrappedAsyncResult.java
new file mode 100644
index 0000000..f54c81a
--- /dev/null
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/WrappedAsyncResult.java
@@ -0,0 +1,59 @@
+/**
+ * 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.qpid.jms.provider;
+
+/**
+ * Base class used to wrap one AsyncResult with another.
+ */
+public abstract class WrappedAsyncResult implements AsyncResult {
+
+ protected final AsyncResult wrapped;
+
+ /**
+ * Create a new WrappedAsyncResult for the target AsyncResult
+ */
+ public WrappedAsyncResult(AsyncResult wrapped) {
+ this.wrapped = wrapped;
+ }
+
+ @Override
+ public void onFailure(Throwable result) {
+ if (wrapped != null) {
+ wrapped.onFailure(result);
+ }
+ }
+
+ @Override
+ public void onSuccess() {
+ if (wrapped != null) {
+ wrapped.onSuccess();
+ }
+ }
+
+ @Override
+ public boolean isComplete() {
+ if (wrapped != null) {
+ return wrapped.isComplete();
+ }
+
+ return false;
+ }
+
+ public AsyncResult getWrappedRequest() {
+ return wrapped;
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/375b0550/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAnonymousProducer.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAnonymousProducer.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAnonymousProducer.java
index 3547b15..e7dceb0 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAnonymousProducer.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAnonymousProducer.java
@@ -26,6 +26,7 @@ import org.apache.qpid.jms.message.JmsOutboundMessageDispatch;
import org.apache.qpid.jms.meta.JmsProducerId;
import org.apache.qpid.jms.meta.JmsProducerInfo;
import org.apache.qpid.jms.provider.AsyncResult;
+import org.apache.qpid.jms.provider.WrappedAsyncResult;
import org.apache.qpid.jms.util.IdGenerator;
import org.apache.qpid.jms.util.LRUCache;
import org.apache.qpid.proton.engine.EndpointState;
@@ -140,23 +141,17 @@ public class AmqpAnonymousProducer extends AmqpProducer {
return new JmsProducerId(producerIdKey, -1, producerIdCount++);
}
- private abstract class AnonymousRequest implements AsyncResult {
+ private abstract class AnonymousRequest extends WrappedAsyncResult {
- protected final AsyncResult sendResult;
protected final AmqpProducer producer;
protected final JmsOutboundMessageDispatch envelope;
public AnonymousRequest(AsyncResult sendResult, AmqpProducer producer, JmsOutboundMessageDispatch envelope) {
- this.sendResult = sendResult;
+ super(sendResult);
this.producer = producer;
this.envelope = envelope;
}
- @Override
- public boolean isComplete() {
- return sendResult.isComplete();
- }
-
/**
* In all cases of the chain of events that make up the send for an anonymous
* producer a failure will trigger the original send request to fail.
@@ -164,7 +159,7 @@ public class AmqpAnonymousProducer extends AmqpProducer {
@Override
public void onFailure(Throwable result) {
LOG.debug("Send failed during {} step in chain: {}", this.getClass().getName(), getProducerId());
- sendResult.onFailure(result);
+ super.onFailure(result);
}
}
@@ -181,7 +176,7 @@ public class AmqpAnonymousProducer extends AmqpProducer {
try {
producer.send(envelope, send);
} catch (Exception e) {
- sendResult.onFailure(e);
+ super.onFailure(e);
}
}
}
@@ -189,7 +184,7 @@ public class AmqpAnonymousProducer extends AmqpProducer {
private final class AnonymousSendRequest extends AnonymousRequest {
public AnonymousSendRequest(AnonymousOpenRequest open) {
- super(open.sendResult, open.producer, open.envelope);
+ super(open.getWrappedRequest(), open.producer, open.envelope);
}
@Override
@@ -206,7 +201,7 @@ public class AmqpAnonymousProducer extends AmqpProducer {
AnonymousCloseRequest close = new AnonymousCloseRequest(this);
producer.close(close);
} else {
- sendResult.onSuccess();
+ super.onSuccess();
}
}
}
@@ -214,13 +209,13 @@ public class AmqpAnonymousProducer extends AmqpProducer {
private final class AnonymousCloseRequest extends AnonymousRequest {
public AnonymousCloseRequest(AnonymousSendRequest send) {
- super(send.sendResult, send.producer, send.envelope);
+ super(send.getWrappedRequest(), send.producer, send.envelope);
}
@Override
public void onSuccess() {
LOG.trace("Close phase of anonymous send complete: {} ", getProducerId());
- sendResult.onSuccess();
+ super.onSuccess();
}
}
http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/375b0550/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProvider.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProvider.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProvider.java
index 77820a6..4539687 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProvider.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/failover/FailoverProvider.java
@@ -788,7 +788,7 @@ public class FailoverProvider extends DefaultProviderListener implements Provide
if (provider == null) {
if (failureWhenOffline()) {
requests.remove(id);
- watcher.onFailure(new IOException("Provider disconnected"));
+ getWrappedRequest().onFailure(new IOException("Provider disconnected"));
} else if (succeedsWhenOffline()) {
onSuccess();
}
@@ -798,7 +798,7 @@ public class FailoverProvider extends DefaultProviderListener implements Provide
doTask();
} catch (UnsupportedOperationException e) {
requests.remove(id);
- watcher.onFailure(e);
+ getWrappedRequest().onFailure(e);
} catch (Exception e) {
// TODO Should we let JMSException through?
LOG.debug("Caught exception while executing task: {}", e.getMessage());
@@ -859,7 +859,7 @@ public class FailoverProvider extends DefaultProviderListener implements Provide
* Captures the initial request to create a JmsConnectionInfo based resources and ensures
* that if the connection is successfully established that the connection established event
* is triggered once before moving on to sending only connection interrupted and restored
- * events.
+ * events.
*/
protected abstract class CreateConnectionRequest extends FailoverRequest {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org