Author: jgomes
Date: Wed Aug 20 16:25:00 2008
New Revision: 687504

URL: http://svn.apache.org/viewvc?rev=687504&view=rev
Log:
Modified Session to register/unregister exception handler when 
starting/stopping the dispatchingThread.
Updated SessionUtils to check for proper length of strings when doing 
comparisons.

Modified:
    
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/CommonAssemblyInfo.cs
    
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Session.cs
    
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/CommonAssemblyInfo.cs
    
activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/CommonAssemblyInfo.cs
    
activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/SessionUtils.cs
    
activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/CommonAssemblyInfo.cs

Modified: 
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/CommonAssemblyInfo.cs
URL: 
http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/CommonAssemblyInfo.cs?rev=687504&r1=687503&r2=687504&view=diff
==============================================================================
--- 
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/CommonAssemblyInfo.cs
 (original)
+++ 
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/CommonAssemblyInfo.cs
 Wed Aug 20 16:25:00 2008
@@ -5,7 +5,7 @@
 
//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.1433
+//     Runtime Version:2.0.50727.3053
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.

Modified: 
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Session.cs
URL: 
http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Session.cs?rev=687504&r1=687503&r2=687504&view=diff
==============================================================================
--- 
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Session.cs 
(original)
+++ 
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Session.cs 
Wed Aug 20 16:25:00 2008
@@ -30,6 +30,7 @@
                private readonly IDictionary consumers = 
Hashtable.Synchronized(new Hashtable());
                private readonly IDictionary producers = 
Hashtable.Synchronized(new Hashtable());
                private readonly DispatchingThread dispatchingThread;
+               private DispatchingThread.ExceptionHandler 
dispatchingThread_ExceptionHandler;
                private readonly SessionInfo info;
                private long producerCounter;
                internal bool startedAsyncDelivery = false;
@@ -46,7 +47,7 @@
                        this.PrefetchSize = 1000;
                        this.TransactionContext = new TransactionContext(this);
                        this.dispatchingThread = new DispatchingThread(new 
DispatchingThread.DispatchFunction(DispatchAsyncMessages));
-                       this.dispatchingThread.ExceptionListener += new 
DispatchingThread.ExceptionHandler(dispatchingThread_ExceptionListener);
+                       this.dispatchingThread_ExceptionHandler = new 
DispatchingThread.ExceptionHandler(dispatchingThread_ExceptionListener);
                }
 
                ~Session()
@@ -411,7 +412,16 @@
 
                private void dispatchingThread_ExceptionListener(Exception 
exception)
                {
-                       Connection.OnSessionException(this, exception);
+                       if(null != Connection)
+                       {
+                               try
+                               {
+                                       Connection.OnSessionException(this, 
exception);
+                               }
+                               catch
+                               {
+                               }
+                       }
                }
 
                protected void CreateTemporaryDestination(ActiveMQDestination 
tempDestination)
@@ -591,6 +601,7 @@
                {
                        if(startedAsyncDelivery)
                        {
+                               this.dispatchingThread.ExceptionListener -= 
this.dispatchingThread_ExceptionHandler;
                                dispatchingThread.Stop(5000);
                                startedAsyncDelivery = false;
                        }
@@ -603,8 +614,12 @@
                                
dispatcher.SetAsyncDelivery(dispatchingThread.EventHandle);
                        }
 
-                       dispatchingThread.Start();
-                       startedAsyncDelivery = true;
+                       if(!startedAsyncDelivery)
+                       {
+                               this.dispatchingThread.ExceptionListener += 
this.dispatchingThread_ExceptionHandler;
+                               dispatchingThread.Start();
+                               startedAsyncDelivery = true;
+                       }
                }
        }
 }

Modified: 
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/CommonAssemblyInfo.cs
URL: 
http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/CommonAssemblyInfo.cs?rev=687504&r1=687503&r2=687504&view=diff
==============================================================================
--- 
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/CommonAssemblyInfo.cs
 (original)
+++ 
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/CommonAssemblyInfo.cs
 Wed Aug 20 16:25:00 2008
@@ -5,7 +5,7 @@
 
//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.1433
+//     Runtime Version:2.0.50727.3053
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.

Modified: 
activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/CommonAssemblyInfo.cs
URL: 
http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/CommonAssemblyInfo.cs?rev=687504&r1=687503&r2=687504&view=diff
==============================================================================
--- 
activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/CommonAssemblyInfo.cs 
(original)
+++ 
activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/CommonAssemblyInfo.cs 
Wed Aug 20 16:25:00 2008
@@ -5,7 +5,7 @@
 
//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.1433
+//     Runtime Version:2.0.50727.3053
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.

Modified: 
activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/SessionUtils.cs
URL: 
http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/SessionUtils.cs?rev=687504&r1=687503&r2=687504&view=diff
==============================================================================
--- 
activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/SessionUtils.cs 
(original)
+++ 
activemq/activemq-dotnet/Apache.NMS/trunk/src/main/csharp/Util/SessionUtils.cs 
Wed Aug 20 16:25:00 2008
@@ -66,35 +66,48 @@
                        IDestination destination = null;
                        DestinationType destinationType = defaultType;
 
-                       if(0 == String.Compare(destinationName.Substring(0, 
QueuePrefix.Length), QueuePrefix, false))
+                       if(null != destinationName)
                        {
-                               destinationType = DestinationType.Queue;
-                               destinationName = 
destinationName.Substring(QueuePrefix.Length);
-                       }
-                       else if(0 == 
String.Compare(destinationName.Substring(0, TopicPrefix.Length), TopicPrefix, 
false))
-                       {
-                               destinationType = DestinationType.Topic;
-                               destinationName = 
destinationName.Substring(TopicPrefix.Length);
-                       }
-                       else if(0 == 
String.Compare(destinationName.Substring(0, TempQueuePrefix.Length), 
TempQueuePrefix, false))
-                       {
-                               destinationType = 
DestinationType.TemporaryQueue;
-                               destinationName = 
destinationName.Substring(TempQueuePrefix.Length);
-                       }
-                       else if(0 == 
String.Compare(destinationName.Substring(0, TempTopicPrefix.Length), 
TempTopicPrefix, false))
-                       {
-                               destinationType = 
DestinationType.TemporaryTopic;
-                               destinationName = 
destinationName.Substring(TempTopicPrefix.Length);
+                               if(destinationName.Length > QueuePrefix.Length
+                                       && 0 == 
String.Compare(destinationName.Substring(0, QueuePrefix.Length), QueuePrefix, 
false))
+                               {
+                                       destinationType = DestinationType.Queue;
+                                       destinationName = 
destinationName.Substring(QueuePrefix.Length);
+                               }
+                               else if(destinationName.Length > 
TopicPrefix.Length
+                                       && 0 == 
String.Compare(destinationName.Substring(0, TopicPrefix.Length), TopicPrefix, 
false))
+                               {
+                                       destinationType = DestinationType.Topic;
+                                       destinationName = 
destinationName.Substring(TopicPrefix.Length);
+                               }
+                               else if(destinationName.Length > 
TempQueuePrefix.Length
+                                       && 0 == 
String.Compare(destinationName.Substring(0, TempQueuePrefix.Length), 
TempQueuePrefix, false))
+                               {
+                                       destinationType = 
DestinationType.TemporaryQueue;
+                                       destinationName = 
destinationName.Substring(TempQueuePrefix.Length);
+                               }
+                               else if(destinationName.Length > 
TempTopicPrefix.Length
+                                       && 0 == 
String.Compare(destinationName.Substring(0, TempTopicPrefix.Length), 
TempTopicPrefix, false))
+                               {
+                                       destinationType = 
DestinationType.TemporaryTopic;
+                                       destinationName = 
destinationName.Substring(TempTopicPrefix.Length);
+                               }
                        }
 
                        switch(destinationType)
                        {
                        case DestinationType.Queue:
-                               destination = session.GetQueue(destinationName);
+                               if(null != destinationName)
+                               {
+                                       destination = 
session.GetQueue(destinationName);
+                               }
                        break;
 
                        case DestinationType.Topic:
-                               destination = session.GetTopic(destinationName);
+                               if(null != destinationName)
+                               {
+                                       destination = 
session.GetTopic(destinationName);
+                               }
                        break;
 
                        case DestinationType.TemporaryQueue:

Modified: 
activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/CommonAssemblyInfo.cs
URL: 
http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/CommonAssemblyInfo.cs?rev=687504&r1=687503&r2=687504&view=diff
==============================================================================
--- 
activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/CommonAssemblyInfo.cs 
(original)
+++ 
activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/CommonAssemblyInfo.cs 
Wed Aug 20 16:25:00 2008
@@ -5,7 +5,7 @@
 
//------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.1433
+//     Runtime Version:2.0.50727.3053
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.


Reply via email to