Author: rgodfrey
Date: Wed May 15 08:52:06 2013
New Revision: 1482729

URL: http://svn.apache.org/r1482729
Log:
QPID-4845 :  [JMS AMQP 1.0] Client incorrectly reports temporary destinations 
as deleted 

Modified:
    
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java
    
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryQueueImpl.java

Modified: 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java?rev=1482729&r1=1482728&r2=1482729&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java
 Wed May 15 08:52:06 2013
@@ -25,6 +25,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import javax.jms.Destination;
+import javax.jms.ExceptionListener;
 import javax.jms.IllegalStateException;
 import javax.jms.InvalidDestinationException;
 import javax.jms.InvalidSelectorException;
@@ -117,6 +118,29 @@ public class MessageConsumerImpl impleme
         _session = session;
 
         _receiver = createClientReceiver();
+        _receiver.setRemoteErrorListener(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                try
+                {
+                    final ExceptionListener exceptionListener = 
_session.getConnection().getExceptionListener();
+
+                    if(exceptionListener != null)
+                    {
+                        final Error receiverError = _receiver.getError();
+                        exceptionListener.onException(new 
JMSException(receiverError.getDescription(),
+                                
receiverError.getCondition().getValue().toString()));
+
+                    }
+                }
+                catch (JMSException e)
+                {
+
+                }
+            }
+        });
 
 
     }
@@ -125,8 +149,8 @@ public class MessageConsumerImpl impleme
     {
         try
         {
-            return _session.getClientSession(). 
createReceiver(_session.toAddress(_destination), AcknowledgeMode.ALO,
-                                                               _linkName, 
_durable, getFilters(), null);
+            return 
_session.getClientSession().createReceiver(_session.toAddress(_destination), 
AcknowledgeMode.ALO,
+                    _linkName, _durable, getFilters(), null);
         }
         catch (ConnectionErrorException e)
         {

Modified: 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryQueueImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryQueueImpl.java?rev=1482729&r1=1482728&r2=1482729&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryQueueImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryQueueImpl.java
 Wed May 15 08:52:06 2013
@@ -34,6 +34,7 @@ public class TemporaryQueueImpl extends 
     private SessionImpl _session;
     private final Set<MessageConsumer> _consumers =
             Collections.synchronizedSet(new HashSet<MessageConsumer>());
+    private boolean _deleted;
 
     protected TemporaryQueueImpl(String address, Sender sender, SessionImpl 
session)
     {
@@ -56,7 +57,8 @@ public class TemporaryQueueImpl extends 
     {
         if(_consumers.isEmpty())
         {
-           close();
+            close();
+            _deleted = true;
         }
         else
         {
@@ -100,6 +102,6 @@ public class TemporaryQueueImpl extends 
 
     public boolean isDeleted()
     {
-        return _sender == null;
+        return _deleted;
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to