You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by mi...@apache.org on 2019/08/12 13:26:12 UTC

[activemq-nms-amqp] branch master updated: AMQNET-599: Changing Message NMSDeliveryMode property should set Amqp.Message Header durable field

This is an automated email from the ASF dual-hosted git repository.

michaelpearce pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-nms-amqp.git


The following commit(s) were added to refs/heads/master by this push:
     new d5796a8  AMQNET-599: Changing Message NMSDeliveryMode property should set Amqp.Message Header durable field
     new 5a71589  Merge pull request #18 from Havret/AMQNET-599
d5796a8 is described below

commit d5796a8d9b97c6b8f83b38ced1fa10465eeb4031
Author: Havret <h4...@gmail.com>
AuthorDate: Sat Aug 10 19:20:56 2019 +0200

    AMQNET-599: Changing Message NMSDeliveryMode property should set Amqp.Message Header durable field
    
    (cherry picked from commit 3ce0c9779093e4c3db467d0e81ef190d42d7c31b)
---
 src/NMS.AMQP/Message/Facade/INmsMessageFacade.cs       |  7 ++++++-
 src/NMS.AMQP/Message/NmsMessage.cs                     | 18 ++++++++++++++++--
 .../Provider/Amqp/Message/AmqpNmsMessageFacade.cs      |  8 ++++++--
 .../Message/Facade/NmsTestMessageFacade.cs             |  3 ++-
 .../Provider/Amqp/AmqpNmsMessageFacadeTest.cs          |  4 ++--
 5 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/src/NMS.AMQP/Message/Facade/INmsMessageFacade.cs b/src/NMS.AMQP/Message/Facade/INmsMessageFacade.cs
index 34bffd9..f610a6f 100644
--- a/src/NMS.AMQP/Message/Facade/INmsMessageFacade.cs
+++ b/src/NMS.AMQP/Message/Facade/INmsMessageFacade.cs
@@ -30,7 +30,6 @@ namespace Apache.NMS.AMQP.Message.Facade
         string NMSCorrelationID { get; set; }
         IDestination NMSDestination { get; set; }
         TimeSpan NMSTimeToLive { get; set; }
-        MsgDeliveryMode NMSDeliveryMode { get; set; }
         MsgPriority NMSPriority { get; set; }
         bool NMSRedelivered { get; set; }
         IDestination NMSReplyTo { get; set; }
@@ -40,6 +39,12 @@ namespace Apache.NMS.AMQP.Message.Facade
         uint GroupSequence { get; set; }
         DateTime Expiration { get; set; }
         sbyte JmsMsgType { get; }
+        
+        /// <summary>
+        /// True if this message is tagged as being persistent
+        /// </summary>
+        bool IsPersistent { get; set; }
+        
         INmsMessageFacade Copy();
     }
 }
\ No newline at end of file
diff --git a/src/NMS.AMQP/Message/NmsMessage.cs b/src/NMS.AMQP/Message/NmsMessage.cs
index 9f9c1c9..c8cba84 100644
--- a/src/NMS.AMQP/Message/NmsMessage.cs
+++ b/src/NMS.AMQP/Message/NmsMessage.cs
@@ -61,8 +61,22 @@ namespace Apache.NMS.AMQP.Message
 
         public MsgDeliveryMode NMSDeliveryMode
         {
-            get => Facade.NMSDeliveryMode;
-            set => Facade.NMSDeliveryMode = value;
+            get => Facade.IsPersistent ? MsgDeliveryMode.Persistent : MsgDeliveryMode.NonPersistent;
+            set
+            {
+                CheckReadOnly();
+                switch (value)
+                {
+                    case MsgDeliveryMode.Persistent:
+                        Facade.IsPersistent = true;
+                        break;
+                    case MsgDeliveryMode.NonPersistent:
+                        Facade.IsPersistent = false;
+                        break;
+                    default:
+                        throw new NMSException($"Invalid DeliveryMode specified: {value}");
+                }
+            }
         }
 
         public MsgPriority NMSPriority
diff --git a/src/NMS.AMQP/Provider/Amqp/Message/AmqpNmsMessageFacade.cs b/src/NMS.AMQP/Provider/Amqp/Message/AmqpNmsMessageFacade.cs
index 8e14526..29ec18c 100644
--- a/src/NMS.AMQP/Provider/Amqp/Message/AmqpNmsMessageFacade.cs
+++ b/src/NMS.AMQP/Provider/Amqp/Message/AmqpNmsMessageFacade.cs
@@ -158,8 +158,12 @@ namespace Apache.NMS.AMQP.Provider.Amqp.Message
             get => amqpTimeToLiveOverride ?? TimeSpan.FromMilliseconds(Header.Ttl);
             set => amqpTimeToLiveOverride = value;
         }
-
-        public MsgDeliveryMode NMSDeliveryMode { get; set; }
+        
+        public bool IsPersistent
+        {
+            get => Message.Header.Durable;
+            set => Message.Header.Durable = value;
+        }
 
         public MsgPriority NMSPriority
         {
diff --git a/test/Apache-NMS-AMQP-Test/Message/Facade/NmsTestMessageFacade.cs b/test/Apache-NMS-AMQP-Test/Message/Facade/NmsTestMessageFacade.cs
index 4f04440..d7f3e09 100644
--- a/test/Apache-NMS-AMQP-Test/Message/Facade/NmsTestMessageFacade.cs
+++ b/test/Apache-NMS-AMQP-Test/Message/Facade/NmsTestMessageFacade.cs
@@ -67,7 +67,6 @@ namespace NMS.AMQP.Test.Message.Facade
         public string NMSCorrelationID { get; set; }
         public IDestination NMSDestination { get; set; }
         public TimeSpan NMSTimeToLive { get; set; }
-        public MsgDeliveryMode NMSDeliveryMode { get; set; }
         public MsgPriority NMSPriority { get; set; }
         public bool NMSRedelivered { get; set; }
         public IDestination NMSReplyTo { get; set; }
@@ -77,6 +76,8 @@ namespace NMS.AMQP.Test.Message.Facade
         public uint GroupSequence { get; set; }
         public DateTime Expiration { get; set; }
         public sbyte JmsMsgType { get; }
+        public bool IsPersistent { get; set; }
+
         public INmsMessageFacade Copy()
         {
             return null;
diff --git a/test/Apache-NMS-AMQP-Test/Provider/Amqp/AmqpNmsMessageFacadeTest.cs b/test/Apache-NMS-AMQP-Test/Provider/Amqp/AmqpNmsMessageFacadeTest.cs
index 8bc878a..0da7b33 100644
--- a/test/Apache-NMS-AMQP-Test/Provider/Amqp/AmqpNmsMessageFacadeTest.cs
+++ b/test/Apache-NMS-AMQP-Test/Provider/Amqp/AmqpNmsMessageFacadeTest.cs
@@ -1330,7 +1330,7 @@ namespace NMS.AMQP.Test.Provider.Amqp
             source.NMSMessageId = "ID:TEST-MESSAGEID";
             source.NMSPriority = MsgPriority.High;
             source.RedeliveryCount = 12;
-            source.NMSDeliveryMode = MsgDeliveryMode.Persistent;
+            source.IsPersistent = true;
             source.NMSTimestamp = DateTime.UtcNow;
             source.NMSTimeToLive = TimeSpan.FromDays(1);
             source.UserId = "Cookie-Monster";
@@ -1349,7 +1349,7 @@ namespace NMS.AMQP.Test.Provider.Amqp
             Assert.AreEqual(source.NMSMessageId, copy.NMSMessageId);
             Assert.AreEqual(source.NMSPriority, copy.NMSPriority);
             Assert.AreEqual(source.RedeliveryCount, copy.RedeliveryCount);
-            Assert.AreEqual(source.NMSDeliveryMode, copy.NMSDeliveryMode);
+            Assert.AreEqual(source.IsPersistent, copy.IsPersistent);
             Assert.AreEqual(source.UserId, copy.UserId);
             Assert.AreEqual(source.NMSTimeToLive, copy.NMSTimeToLive);
             Assert.IsTrue(Math.Abs((copy.Expiration - source.Expiration).TotalMilliseconds) < 1);