Author: arnaudsimon
Date: Tue Jul 31 08:08:10 2007
New Revision: 561355
URL: http://svn.apache.org/viewvc?view=rev&rev=561355
Log:
improved implementation
Modified:
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/MessageActor.java
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java
Modified:
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/MessageActor.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/MessageActor.java?view=diff&rev=561355&r1=561354&r2=561355
==============================================================================
---
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/MessageActor.java
(original)
+++
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/MessageActor.java
Tue Jul 31 08:08:10 2007
@@ -83,8 +83,7 @@
{
closeMessageActor();
// notify the session that this message actor is closing
-
- //TODO _session.removeActor(_actorID);
+ _session.closeMessageActor(this);
}
}
Modified:
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java?view=diff&rev=561355&r1=561354&r2=561355
==============================================================================
---
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java
(original)
+++
incubator/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/nclient/jms/SessionImpl.java
Tue Jul 31 08:08:10 2007
@@ -43,14 +43,9 @@
private static final Logger _logger =
LoggerFactory.getLogger(SessionImpl.class);
/**
- * The messageConsumers of this session.
+ * The messageActors of this session.
*/
- private ArrayList<MessageConsumerImpl> _messageConsumers = new
ArrayList<MessageConsumerImpl>();
-
- /**
- * The messageProducers of this session.
- */
- private ArrayList<MessageProducerImpl> _messageProducers = new
ArrayList<MessageProducerImpl>();
+ private ArrayList<MessageActor> _messageActors = new
ArrayList<MessageActor>();
/**
* All the not yet acknoledged messages
@@ -437,7 +432,10 @@
public MessageProducer createProducer(Destination destination) throws
JMSException
{
checkNotClosed();
- return new MessageProducerImpl(this, (DestinationImpl) destination);
+ MessageProducerImpl producer = new MessageProducerImpl(this,
(DestinationImpl) destination);
+ // register this actor with the session
+ _messageActors.add(producer);
+ return producer;
}
/**
@@ -492,7 +490,10 @@
{
checkNotClosed();
checkDestination(destination);
- return new MessageConsumerImpl(this, (DestinationImpl) destination,
messageSelector, noLocal, null);
+ MessageConsumerImpl consumer = new MessageConsumerImpl(this,
(DestinationImpl) destination, messageSelector, noLocal, null);
+ // register this actor with the session
+ _messageActors.add(consumer);
+ return consumer;
}
/**
@@ -577,7 +578,9 @@
{
checkNotClosed();
checkDestination(topic);
- return new TopicSubscriberImpl(this, topic, messageSelector, noLocal,
_connection.getClientID() + ":" + name);
+ TopicSubscriberImpl subscriber = new TopicSubscriberImpl(this, topic,
messageSelector, noLocal, _connection.getClientID() + ":" + name);
+ _messageActors.add(subscriber);
+ return subscriber;
}
/**
@@ -607,7 +610,10 @@
{
checkNotClosed();
checkDestination(queue);
- return new QueueBrowserImpl(this, queue, messageSelector);
+ QueueBrowserImpl browser = new QueueBrowserImpl(this, queue,
messageSelector);
+ // register this actor with the session
+ _messageActors.add(browser);
+ return browser;
}
/**
@@ -651,12 +657,21 @@
public void unsubscribe(String name) throws JMSException
{
checkNotClosed();
-
}
//----- Protected methods
/**
+ * Remove a message actor form this session
+ * <p> This method is called when an actor is independently closed.
+ * @param actor The closed actor.
+ */
+ protected void closeMessageActor(MessageActor actor)
+ {
+ _messageActors.remove(actor);
+ }
+
+ /**
* Start the flow of message to this session.
*
* @throws JMSException If starting the session fails due to some
communication error.
@@ -674,7 +689,7 @@
}
}
- /**
+ /**
* Stop the flow of message to this session.
*
* @throws JMSException If stopping the session fails due to some
communication error.
@@ -816,11 +831,7 @@
*/
private void closeAllActors() throws JMSException
{
- for (MessageActor messageActor : _messageProducers)
- {
- messageActor.closeMessageActor();
- }
- for (MessageActor messageActor : _messageConsumers)
+ for (MessageActor messageActor : _messageActors)
{
messageActor.closeMessageActor();
}