Repository: qpid-jms Updated Branches: refs/heads/master 7335e5547 -> ec5c3e754
check temporary destinations have not been deleted before sending Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/89c79425 Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/89c79425 Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/89c79425 Branch: refs/heads/master Commit: 89c7942595c1d58692683e9d3bfaf0a4afb37497 Parents: e1c1de7 Author: Robert Gemmell <[email protected]> Authored: Tue Jan 13 13:24:16 2015 +0000 Committer: Robert Gemmell <[email protected]> Committed: Tue Jan 13 16:02:08 2015 +0000 ---------------------------------------------------------------------- .../main/java/org/apache/qpid/jms/JmsConnection.java | 4 ++++ .../src/main/java/org/apache/qpid/jms/JmsSession.java | 5 +++++ .../org/apache/qpid/jms/JmsTemporaryDestination.java | 14 ++++++++++++++ 3 files changed, 23 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/89c79425/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 51c238d..f926916 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 @@ -596,6 +596,10 @@ public class JmsConnection implements Connection, TopicConnection, QueueConnecti } } + protected boolean isTemporaryDestinationDeleted(JmsDestination destination) { + return !tempDestinations.containsKey(destination); + } + protected void checkClosed() throws IllegalStateException { if (this.closed.get()) { throw new IllegalStateException("The Connection is closed"); http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/89c79425/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsSession.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsSession.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsSession.java index 185dd36..e98f59b 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsSession.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsSession.java @@ -622,6 +622,11 @@ public class JmsSession implements Session, QueueSession, TopicSession, JmsMessa protected void send(JmsMessageProducer producer, Destination dest, Message msg, int deliveryMode, int priority, long timeToLive, boolean disableMsgId, boolean disableTimestamp) throws JMSException { JmsDestination destination = JmsMessageTransformation.transformDestination(connection, dest); + + if(destination.isTemporary() && ((JmsTemporaryDestination) destination).isDeleted()) { + throw new IllegalStateException("Temporary destination has been deleted"); + } + send(producer, destination, msg, deliveryMode, priority, timeToLive, disableMsgId, disableTimestamp); } http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/89c79425/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryDestination.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryDestination.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryDestination.java index 9e3234d..5afb030 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryDestination.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsTemporaryDestination.java @@ -26,6 +26,8 @@ import org.apache.qpid.jms.meta.JmsResourceVistor; */ public abstract class JmsTemporaryDestination extends JmsDestination implements JmsResource { + private boolean deleted; + public JmsTemporaryDestination() { this(null, false); } @@ -52,6 +54,18 @@ public abstract class JmsTemporaryDestination extends JmsDestination implements if (connection != null) { connection.deleteDestination(this); } + + deleted = true; + } + + protected boolean isDeleted() throws JMSException { + boolean result = deleted; + + if (!result && connection != null) { + result = connection.isTemporaryDestinationDeleted(this); + } + + return result; } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
