Return-Path: Delivered-To: apmail-activemq-commits-archive@www.apache.org Received: (qmail 67307 invoked from network); 10 Nov 2010 01:23:07 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 10 Nov 2010 01:23:07 -0000 Received: (qmail 29648 invoked by uid 500); 10 Nov 2010 01:23:38 -0000 Delivered-To: apmail-activemq-commits-archive@activemq.apache.org Received: (qmail 29590 invoked by uid 500); 10 Nov 2010 01:23:38 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 29583 invoked by uid 99); 10 Nov 2010 01:23:37 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Nov 2010 01:23:37 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 10 Nov 2010 01:23:34 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 5AC13238897F; Wed, 10 Nov 2010 01:22:20 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1033315 - in /activemq/activemq-dotnet: Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ Apache.NMS.ActiveMQ/trunk/src/main/csharp/State/ Apache.NMS.ActiveMQ/trunk/src/test/csharp/ Apache.NMS/trunk/src/test/csharp/ Date: Wed, 10 Nov 2010 01:22:20 -0000 To: commits@activemq.apache.org From: jgomes@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20101110012220.5AC13238897F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: jgomes Date: Wed Nov 10 01:22:19 2010 New Revision: 1033315 URL: http://svn.apache.org/viewvc?rev=1033315&view=rev Log: Add Clone() override that will copy the MessagePropertyIntercepter object. Fixes [AMQNET-292]. (See https://issues.apache.org/activemq/browse/AMQNET-292) Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ActiveMQMessage.cs activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/State/ConnectionState.cs activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/MessageProducerTest.cs activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/ConsumerTest.cs Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ActiveMQMessage.cs URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ActiveMQMessage.cs?rev=1033315&r1=1033314&r2=1033315&view=diff ============================================================================== --- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ActiveMQMessage.cs (original) +++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/Commands/ActiveMQMessage.cs Wed Nov 10 01:22:19 2010 @@ -56,6 +56,14 @@ namespace Apache.NMS.ActiveMQ.Commands return ID_ACTIVEMQMESSAGE; } + public override object Clone() + { + ActiveMQMessage cloneMessage = (ActiveMQMessage) base.Clone(); + + cloneMessage.propertyHelper = new MessagePropertyIntercepter(cloneMessage, cloneMessage.properties, this.ReadOnlyProperties) { AllowByteArrays = false }; + return cloneMessage; + } + public override bool Equals(object that) { if(that is ActiveMQMessage) Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/State/ConnectionState.cs URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/State/ConnectionState.cs?rev=1033315&r1=1033314&r2=1033315&view=diff ============================================================================== --- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/State/ConnectionState.cs (original) +++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/main/csharp/State/ConnectionState.cs Wed Nov 10 01:22:19 2010 @@ -106,7 +106,7 @@ namespace Apache.NMS.ActiveMQ.State return sessions[id]; #if DEBUG } - catch(System.Collections.Generic.KeyNotFoundException ex) + catch(System.Collections.Generic.KeyNotFoundException) { // Useful for dignosing missing session ids string sessionList = string.Empty; Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/MessageProducerTest.cs URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/MessageProducerTest.cs?rev=1033315&r1=1033314&r2=1033315&view=diff ============================================================================== --- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/MessageProducerTest.cs (original) +++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/MessageProducerTest.cs Wed Nov 10 01:22:19 2010 @@ -59,6 +59,61 @@ namespace Apache.NMS.ActiveMQ.Test } } } + + [Test] + public void TestCopyOnSend() + { + Uri uri = new Uri("mock://localhost:61616?connection.CopyMessageOnSend=true"); + + ConnectionFactory factory = new ConnectionFactory(uri); + using(IConnection connection = factory.CreateConnection()) + using(ISession session = connection.CreateSession()) + { + IDestination destination = session.GetTopic("Test"); + using(IMessageProducer producer = session.CreateProducer(destination)) + { + ITextMessage message = session.CreateTextMessage(); + + for(int i = 0; i < 10; ++i) + { + message.Properties["TribbleName"] = "Tribble" + i.ToString(); + message.Text = "The Trouble with Tribbles - " + i.ToString(); + producer.Send(message); + } + } + } + } + + [Test] + public void TestNoCopyOnSend() + { + Uri uri = new Uri("mock://localhost:61616?connection.CopyMessageOnSend=false"); + + ConnectionFactory factory = new ConnectionFactory(uri); + using(IConnection connection = factory.CreateConnection()) + using(ISession session = connection.CreateSession()) + { + IDestination destination = session.GetTopic("Test"); + using(IMessageProducer producer = session.CreateProducer(destination)) + { + ITextMessage message = session.CreateTextMessage(); + + for(int i = 0; i < 10; ++i) + { + try + { + message.Properties["TribbleName"] = "Tribble" + i.ToString(); + message.Text = "The Trouble with Tribbles - " + i.ToString(); + producer.Send(message); + } + catch(MessageNotWriteableException) + { + Assert.Greater(i, 0); + Assert.Less(i, 10); + } + } + } + } + } } } - Modified: activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/ConsumerTest.cs URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/ConsumerTest.cs?rev=1033315&r1=1033314&r2=1033315&view=diff ============================================================================== --- activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/ConsumerTest.cs (original) +++ activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/ConsumerTest.cs Wed Nov 10 01:22:19 2010 @@ -161,7 +161,8 @@ namespace Apache.NMS.Test public void TestDoChangeSentMessage( [Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge, AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)] - AcknowledgementMode ackMode) + AcknowledgementMode ackMode, + [Values(true, false)] bool doClear) { using(IConnection connection = CreateConnection()) { @@ -183,8 +184,11 @@ namespace Apache.NMS.Test producer.Send(message); - message.ClearBody(); - message.ClearProperties(); + if(doClear) + { + message.ClearBody(); + message.ClearProperties(); + } } if(ackMode == AcknowledgementMode.Transactional)