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