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();
         }


Reply via email to