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