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]

Reply via email to