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