Repository: qpid-jms
Updated Branches:
  refs/heads/master 5ac9504f7 -> 989bce31b


consolidate endpoint close handling into the abstract resource

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

Branch: refs/heads/master
Commit: bcae5e018a83955c7d9f4ef69ad6fc03e85d59a0
Parents: 5ac9504
Author: Timothy Bish <tabish...@gmail.com>
Authored: Mon Feb 23 15:32:46 2015 -0500
Committer: Timothy Bish <tabish...@gmail.com>
Committed: Mon Feb 23 15:32:46 2015 -0500

----------------------------------------------------------------------
 .../java/org/apache/qpid/jms/JmsConnection.java | 10 +++----
 .../jms/provider/amqp/AmqpAbstractResource.java | 12 ++++++--
 .../qpid/jms/provider/amqp/AmqpConnection.java  | 29 ++------------------
 3 files changed, 17 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/bcae5e01/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
index b449bb0..0b73cb4 100644
--- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
+++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnection.java
@@ -1099,6 +1099,11 @@ public class JmsConnection implements Connection, 
TopicConnection, QueueConnecti
         }
     }
 
+    @Override
+    public void onResourceRemotelyClosed(JmsResource resource, Exception 
cause) {
+        LOG.info("A JMS resource has been remotely closed: {}", resource);
+    }
+
     /**
      * Handles any asynchronous errors that occur from the JMS framework 
classes.
      *
@@ -1129,11 +1134,6 @@ public class JmsConnection implements Connection, 
TopicConnection, QueueConnecti
         }
     }
 
-    @Override
-    public void onResourceRemotelyClosed(JmsResource resource, Exception 
cause) {
-        LOG.info("A JMS resource has been remotely closed: {}", resource);
-    }
-
     protected void providerFailed(IOException error) {
         failed.set(true);
         if (firstFailureError == null) {

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/bcae5e01/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 dbadbca..075986f 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
@@ -258,11 +258,17 @@ public abstract class AmqpAbstractResource<R extends 
JmsResource, E extends Endp
             if (isAwaitingClose()) {
                 LOG.debug("{} is now closed: ", this);
                 closed();
-            } else if (isAwaitingOpen() && hasRemoteError()) {
+            } else if (isAwaitingOpen()) {
                 // Error on Open, create exception and signal failure.
                 LOG.warn("Open of {} failed: ", this);
-                Exception remoteError = this.getRemoteError();
-                failed(remoteError);
+                Exception openError;
+                if (hasRemoteError()) {
+                    openError = this.getRemoteError();
+                } else {
+                    openError = new IOException("Open failed unexpectedly.");
+                }
+
+                failed(openError);
             } else {
                 remotelyClosed();
             }

http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/bcae5e01/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java
----------------------------------------------------------------------
diff --git 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java
 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java
index 81bdd21..38d40c6 100644
--- 
a/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java
+++ 
b/qpid-jms-client/src/main/java/org/apache/qpid/jms/provider/amqp/AmqpConnection.java
@@ -16,6 +16,7 @@
  */
 package org.apache.qpid.jms.provider.amqp;
 
+import java.io.IOException;
 import java.net.URI;
 import java.util.HashMap;
 import java.util.Map;
@@ -33,7 +34,6 @@ import org.apache.qpid.jms.provider.AsyncResult;
 import org.apache.qpid.jms.provider.amqp.message.AmqpJmsMessageFactory;
 import org.apache.qpid.jms.util.IOExceptionSupport;
 import org.apache.qpid.proton.engine.Connection;
-import org.apache.qpid.proton.engine.EndpointState;
 import org.apache.qpid.proton.engine.Sasl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -119,7 +119,7 @@ public class AmqpConnection extends 
AmqpAbstractResource<JmsConnectionInfo, Conn
      * side of the Connection.
      */
     @Override
-    public void processStateChange() {
+    public void processStateChange() throws IOException {
 
         if (!connected && isOpen()) {
             connected = true;
@@ -147,30 +147,7 @@ public class AmqpConnection extends 
AmqpAbstractResource<JmsConnectionInfo, Conn
             });
         }
 
-        EndpointState localState = getEndpoint().getLocalState();
-        EndpointState remoteState = getEndpoint().getRemoteState();
-
-        // We are still active (connected or not) and something on the remote 
end has
-        // closed us, signal an error if one was sent.
-        if (localState == EndpointState.ACTIVE && remoteState != 
EndpointState.ACTIVE) {
-            if (getEndpoint().getRemoteCondition().getCondition() != null) {
-                LOG.info("Error condition detected on Connection open {}.", 
getEndpoint().getRemoteCondition().getCondition());
-                Exception remoteError = getRemoteError();
-                if (isAwaitingOpen()) {
-                    doClose();
-                    openRequest.onFailure(remoteError);
-                } else {
-                    doClose();
-                    provider.fireProviderException(remoteError);
-                }
-            }
-        }
-
-        // Transition cleanly to closed state.
-        if (localState == EndpointState.CLOSED && remoteState == 
EndpointState.CLOSED) {
-            LOG.debug("{} has been closed successfully.", this);
-            closed();
-        }
+        super.processStateChange();
     }
 
     public void processSaslAuthentication() {


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

Reply via email to