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 2015/03/06 00:21:39 UTC

qpid-jms git commit: Do a little cleanup from code that originated prior to the proton events feature and make handlers separate so they can be more easily customized.

Repository: qpid-jms
Updated Branches:
  refs/heads/master 31dccb73a -> ff18e5c78


Do a little cleanup from code that originated prior to the proton events
feature and make handlers separate so they can be more easily
customized.  

Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/ff18e5c7
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/ff18e5c7
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/ff18e5c7

Branch: refs/heads/master
Commit: ff18e5c788c9889a1e13af687a97b013542052cf
Parents: 31dccb7
Author: Timothy Bish <ta...@gmail.com>
Authored: Thu Mar 5 18:21:31 2015 -0500
Committer: Timothy Bish <ta...@gmail.com>
Committed: Thu Mar 5 18:21:31 2015 -0500

----------------------------------------------------------------------
 .../jms/provider/amqp/AmqpAbstractResource.java | 52 +++++++++++---------
 .../qpid/jms/provider/amqp/AmqpProvider.java    | 26 ++++++----
 .../qpid/jms/provider/amqp/AmqpResource.java    | 25 ++++++++--
 .../provider/amqp/AmqpTemporaryDestination.java |  9 ----
 4 files changed, 67 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ff18e5c7/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAbstractResource.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAbstractResource.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAbstractResource.java
index 1f4c742..40a94fb 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAbstractResource.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpAbstractResource.java
@@ -252,32 +252,38 @@ public abstract class AmqpAbstractResource<R extends JmsResource, E extends Endp
     }
 
     @Override
-    public void processStateChange(AmqpProvider provider) throws IOException {
-        EndpointState remoteState = getEndpoint().getRemoteState();
+    public void processRemoteOpen(AmqpProvider provider) throws IOException {
+        doOpenCompletion();
+    }
 
-        if (remoteState == EndpointState.ACTIVE) {
-            if (isAwaitingOpen()) {
-                doOpenCompletion();
-            }
-            // Should not receive an ACTIVE event if not awaiting the open state.
-        } else if (remoteState == EndpointState.CLOSED) {
-            if (isAwaitingClose()) {
-                LOG.debug("{} is now closed: ", this);
-                closed();
-            } else if (isAwaitingOpen()) {
-                // Error on Open, create exception and signal failure.
-                LOG.warn("Open of {} failed: ", this);
-                Exception openError;
-                if (hasRemoteError()) {
-                    openError = getRemoteError();
-                } else {
-                    openError = getOpenAbortException();
-                }
-
-                failed(openError);
+    @Override
+    public void processRemoteDetach(AmqpProvider provider) throws IOException {
+        if (isAwaitingClose()) {
+            LOG.debug("{} is now closed: ", this);
+            closed();
+        } else {
+            remotelyClosed(provider);
+        }
+    }
+
+    @Override
+    public void processRemoteClose(AmqpProvider provider) throws IOException {
+        if (isAwaitingClose()) {
+            LOG.debug("{} is now closed: ", this);
+            closed();
+        } else if (isAwaitingOpen()) {
+            // Error on Open, create exception and signal failure.
+            LOG.warn("Open of {} failed: ", this);
+            Exception openError;
+            if (hasRemoteError()) {
+                openError = getRemoteError();
             } else {
-                remotelyClosed(provider);
+                openError = getOpenAbortException();
             }
+
+            failed(openError);
+        } else {
+            remotelyClosed(provider);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ff18e5c7/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
index 3ecea6a..7191ddb 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpProvider.java
@@ -718,28 +718,34 @@ public class AmqpProvider implements Provider, TransportListener {
                 AmqpResource amqpResource = null;
                 switch (protonEvent.getType()) {
                     case CONNECTION_REMOTE_CLOSE:
+                        amqpResource = (AmqpResource) protonEvent.getConnection().getContext();
+                        amqpResource.processRemoteClose(this);
+                        break;
                     case CONNECTION_REMOTE_OPEN:
-                        AmqpConnection connection = (AmqpConnection) protonEvent.getConnection().getContext();
-                        connection.processStateChange(this);
+                        amqpResource = (AmqpResource) protonEvent.getConnection().getContext();
+                        amqpResource.processRemoteOpen(this);
                         break;
                     case SESSION_REMOTE_CLOSE:
+                        amqpResource = (AmqpSession) protonEvent.getSession().getContext();
+                        amqpResource.processRemoteClose(this);
+                        break;
                     case SESSION_REMOTE_OPEN:
-                        AmqpSession session = (AmqpSession) protonEvent.getSession().getContext();
-                        session.processStateChange(this);
+                        amqpResource = (AmqpSession) protonEvent.getSession().getContext();
+                        amqpResource.processRemoteOpen(this);
                         break;
                     case LINK_REMOTE_CLOSE:
                         LOG.info("Link closed: {}", protonEvent.getLink().getContext());
-                        AmqpResource cloedResource = (AmqpResource) protonEvent.getLink().getContext();
-                        cloedResource.processStateChange(this);
+                        amqpResource = (AmqpResource) protonEvent.getLink().getContext();
+                        amqpResource.processRemoteClose(this);
                         break;
                     case LINK_REMOTE_DETACH:
                         LOG.info("Link detach: {}", protonEvent.getLink().getContext());
-                        AmqpResource detachedResource = (AmqpResource) protonEvent.getLink().getContext();
-                        detachedResource.processStateChange(this);
+                        amqpResource = (AmqpResource) protonEvent.getLink().getContext();
+                        amqpResource.processRemoteDetach(this);
                         break;
                     case LINK_REMOTE_OPEN:
-                        AmqpResource resource = (AmqpResource) protonEvent.getLink().getContext();
-                        resource.processStateChange(this);
+                        amqpResource = (AmqpResource) protonEvent.getLink().getContext();
+                        amqpResource.processRemoteOpen(this);
                         break;
                     case LINK_FLOW:
                         amqpResource = (AmqpResource) protonEvent.getLink().getContext();

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ff18e5c7/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpResource.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpResource.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpResource.java
index 175cf39..7985e8f 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpResource.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpResource.java
@@ -103,15 +103,34 @@ public interface AmqpResource {
     void failed(Exception cause);
 
     /**
-     * Called when the Proton Engine signals that the state of the given resource has
-     * changed on the remote side.
+     * Event handler for remote peer open of this resource.
      *
      * @param provider
      *        the AmqpProvider instance for easier access to fire events.
      *
      * @throws IOException if an error occurs while processing the update.
      */
-    void processStateChange(AmqpProvider provider) throws IOException;
+    void processRemoteOpen(AmqpProvider provider) throws IOException;
+
+    /**
+     * Event handler for remote peer detach of this resource.
+     *
+     * @param provider
+     *        the AmqpProvider instance for easier access to fire events.
+     *
+     * @throws IOException if an error occurs while processing the update.
+     */
+    void processRemoteDetach(AmqpProvider provider) throws IOException;
+
+    /**
+     * Event handler for remote peer close of this resource.
+     *
+     * @param provider
+     *        the AmqpProvider instance for easier access to fire events.
+     *
+     * @throws IOException if an error occurs while processing the update.
+     */
+    void processRemoteClose(AmqpProvider provider) throws IOException;
 
     /**
      * Called when the Proton Engine signals an Delivery related event has been triggered

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/ff18e5c7/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpTemporaryDestination.java
----------------------------------------------------------------------
diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpTemporaryDestination.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpTemporaryDestination.java
index d96099a..1f2155b 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpTemporaryDestination.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpTemporaryDestination.java
@@ -16,7 +16,6 @@
  */
 package org.apache.qpid.jms.provider.amqp;
 
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -65,14 +64,6 @@ public class AmqpTemporaryDestination extends AmqpAbstractResource<JmsTemporaryD
     }
 
     @Override
-    public void processStateChange(AmqpProvider provider) throws IOException {
-        // TODO - We might want to check on our producer to see if it becomes closed
-        //        which might indicate that the broker purged the temporary destination.
-
-        super.processStateChange(provider);
-    }
-
-    @Override
     public void opened() {
 
         // Once our producer is opened we can read the updated name from the target address.


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org