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]