fix for: https://issues.apache.org/activemq/browse/AMQNET-281
diff --git a/src/main/csharp/ConnectionFactory.cs b/src/main/csharp/ConnectionFactory.cs
index 5946077..9ce897c 100755
--- a/src/main/csharp/ConnectionFactory.cs
+++ b/src/main/csharp/ConnectionFactory.cs
@@ -164,10 +164,14 @@
set
{
brokerUri = new Uri(URISupport.StripPrefix(value.OriginalString, "activemq:"));
-
- if(brokerUri.Query != null)
+
+ if(!String.IsNullOrEmpty(brokerUri.Query) && !brokerUri.OriginalString.EndsWith(")"))
{
- StringDictionary properties = URISupport.ParseQuery(brokerUri.Query);
+ // Since the Uri class will return the end of a Query string found in a Composite
+ // URI we must ensure that we trim that off before we proceed.
+ string query = brokerUri.Query.Substring(brokerUri.Query.LastIndexOf(")") + 1);
+
+ StringDictionary properties = URISupport.ParseQuery(query);
StringDictionary connection = URISupport.ExtractProperties(properties, "connection.");
StringDictionary nms = URISupport.ExtractProperties(properties, "nms.");
diff --git a/src/test/csharp/NMSConnectionFactoryTest.cs b/src/test/csharp/NMSConnectionFactoryTest.cs
index 221676b..b4242af 100644
--- a/src/test/csharp/NMSConnectionFactoryTest.cs
+++ b/src/test/csharp/NMSConnectionFactoryTest.cs
@@ -43,6 +43,9 @@
[TestCase("activemq:failover://(tcp://${activemqhost}:61616)?transport.initialReconnectDelay=100")]
[TestCase("activemq:failover:(tcp://${activemqhost}:61616)?connection.asyncSend=true")]
[TestCase("activemq:failover:(tcp://${activemqhost}:61616)?transport.timeout=100&connection.asyncSend=true")]
+ [TestCase("activemq:failover:tcp://${activemqhost}:61616?keepAlive=false&wireFormat.maxInactivityDuration=1000")]
+ [TestCase("activemq:failover:(tcp://${activemqhost}:61616?keepAlive=false&wireFormat.maxInactivityDuration=1000)")]
+ [TestCase("activemq:failover:(tcp://${activemqhost}:61616?keepAlive=false&wireFormat.maxInactivityDuration=1000)?connection.asyncclose=false")]
#if false
[TestCase("activemq:discovery:multicast://default")]
@@ -81,6 +84,7 @@
using(IConnection connection = factory.CreateConnection("", ""))
{
Assert.IsNotNull(connection);
+ connection.Close();
}
}
@@ -105,6 +109,8 @@
Assert.IsNotNull(this.info);
Assert.AreEqual(username, info.UserName);
Assert.AreEqual(password, info.Password);
+
+ connection.Close();
}
}
@@ -143,7 +149,9 @@
Assert.AreEqual(topicPrefetch, amqConnection.PrefetchPolicy.TopicPrefetch);
Assert.AreEqual(durableTopicPrefetch, amqConnection.PrefetchPolicy.DurableTopicPrefetch);
Assert.AreEqual(maximumPendingMessageLimit, amqConnection.PrefetchPolicy.MaximumPendingMessageLimit);
- }
+
+ connection.Close();
+ }
}
}
}