You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2016/01/05 18:17:32 UTC
svn commit: r1723133 - in
/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src:
main/csharp/Commands/ActiveMQMapMessage.cs
test/csharp/Commands/ActiveMQMapMessageTest.cs
Author: tabish
Date: Tue Jan 5 17:17:31 2016
New Revision: 1723133
URL: http://svn.apache.org/viewvc?rev=1723133&view=rev
Log:
Ensure that the message body is always marshaled. Fixes case of a single message -> receive -> send -> receive which would lose its body on the re-send.
AMQNET-514
Fixes [AMQNET-AMQNET-514]. (See https://issues.apache.org/jira/browse/AMQNET-AMQNET-514)
Modified:
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ActiveMQMapMessage.cs
activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/Commands/ActiveMQMapMessageTest.cs
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ActiveMQMapMessage.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ActiveMQMapMessage.cs?rev=1723133&r1=1723132&r2=1723133&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ActiveMQMapMessage.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ActiveMQMapMessage.cs Tue Jan 5 17:17:31 2016
@@ -91,11 +91,7 @@ namespace Apache.NMS.ActiveMQ.Commands
public override void BeforeMarshall(OpenWireFormat wireFormat)
{
- if(body == null)
- {
- Content = null;
- }
- else
+ if (this.Content == null && this.body != null && this.body.Count > 0)
{
MemoryStream buffer = new MemoryStream();
Stream target = buffer;
Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/Commands/ActiveMQMapMessageTest.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/Commands/ActiveMQMapMessageTest.cs?rev=1723133&r1=1723132&r2=1723133&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/Commands/ActiveMQMapMessageTest.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/Commands/ActiveMQMapMessageTest.cs Tue Jan 5 17:17:31 2016
@@ -19,15 +19,17 @@ using System;
using System.Collections;
using System.Globalization;
using System.Text;
+using Apache.NMS;
+using Apache.NMS.Test;
+using Apache.NMS.Util;
using Apache.NMS.ActiveMQ.Commands;
using NUnit.Framework;
namespace Apache.NMS.ActiveMQ.Test.Commands
{
[TestFixture]
- public class ActiveMQMapMessageTest
+ public class ActiveMQMapMessageTest : NMSTestSupport
{
-
private string name = "testName";
[Test]
@@ -305,7 +307,6 @@ namespace Apache.NMS.ActiveMQ.Test.Comma
catch(MessageFormatException)
{
}
-
}
[Test]
@@ -457,7 +458,8 @@ namespace Apache.NMS.ActiveMQ.Test.Comma
{
}
- try {
+ try
+ {
msg.Body.SetFloat("float", 1.5f);
Assert.Fail("should throw exception");
}
@@ -543,6 +545,47 @@ namespace Apache.NMS.ActiveMQ.Test.Comma
msg.Body.GetShort("short");
msg.Body.GetString("string");
}
-
+
+ [Test]
+ public void TestMessageQueueDequeQueueDequeue()
+ {
+ using (IConnection connection = CreateConnection())
+ using (ISession session = connection.CreateSession())
+ {
+ IDestination destination = session.GetQueue("TestMessageQueueDequeQueueDequeue");
+
+ (connection as Connection).DeleteDestination(destination);
+
+ using (IMessageConsumer consumer = session.CreateConsumer(destination))
+ using (IMessageProducer producer = session.CreateProducer(destination))
+ {
+ connection.Start();
+
+ producer.DeliveryMode = MsgDeliveryMode.Persistent;
+
+ IMapMessage request = session.CreateMapMessage();
+ request.Body.SetString("Unit-Test-Key", "Unit-Test-Value");
+ Assert.IsNotNull(request, "request is null");
+ Assert.IsTrue(request.Body.Contains("Unit-Test-Key"), "Unit-Test-Key does not exist");
+ producer.Send(request);
+
+ // Relay from Queue back again.
+ IMessage received = consumer.Receive(TimeSpan.FromSeconds(2));
+ Assert.IsNotNull(received);
+ IMapMessage mapMessage = received as IMapMessage;
+ Assert.IsNotNull(mapMessage);
+ producer.Send(mapMessage);
+
+ // Read it again and validate.
+ received = consumer.Receive(TimeSpan.FromSeconds(2));
+ Assert.IsNotNull(received);
+ mapMessage = received as IMapMessage;
+ Assert.IsNotNull(mapMessage, "currentMessage is null");
+
+ // This entry in the map message should not be removed
+ Assert.IsTrue(mapMessage.Body.Contains("Unit-Test-Key"), "Unit-Test-Key does not exist");
+ }
+ }
+ }
}
}