From 5744f1b2c5d7ba7302d35b2fcb5483355d65e933 Mon Sep 17 00:00:00 2001 From: mnichols Date: Mon, 5 Jul 2010 14:54:10 -0700 Subject: [PATCH 1/4] rename specs --- Rhino.ServiceBus.Tests/Rhino.ServiceBus.Tests.csproj | 2 +- ...HeadersToMessage.cs => CanCustomizeMessageConstruction.cs} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename Rhino.ServiceBus.Tests/RhinoQueues/{CanAddHeadersToMessage.cs => CanCustomizeMessageConstruction.cs} (94%) diff --git a/Rhino.ServiceBus.Tests/Rhino.ServiceBus.Tests.csproj b/Rhino.ServiceBus.Tests/Rhino.ServiceBus.Tests.csproj index 98751bc..d07b4f6 100644 --- a/Rhino.ServiceBus.Tests/Rhino.ServiceBus.Tests.csproj +++ b/Rhino.ServiceBus.Tests/Rhino.ServiceBus.Tests.csproj @@ -106,7 +106,7 @@ - + diff --git a/Rhino.ServiceBus.Tests/RhinoQueues/CanAddHeadersToMessage.cs b/Rhino.ServiceBus.Tests/RhinoQueues/CanCustomizeMessageConstruction.cs similarity index 94% rename from Rhino.ServiceBus.Tests/RhinoQueues/CanAddHeadersToMessage.cs rename to Rhino.ServiceBus.Tests/RhinoQueues/CanCustomizeMessageConstruction.cs index e2a5fec..530544d 100644 --- a/Rhino.ServiceBus.Tests/RhinoQueues/CanAddHeadersToMessage.cs +++ b/Rhino.ServiceBus.Tests/RhinoQueues/CanCustomizeMessageConstruction.cs @@ -8,11 +8,11 @@ namespace Rhino.ServiceBus.Tests.RhinoQueues { - public class CanAddHeadersToMessage:IDisposable + public class CanCustomizeMessageConstruction:IDisposable { private WindsorContainer container; - public CanAddHeadersToMessage() + public CanCustomizeMessageConstruction() { container = new WindsorContainer("RhinoQueues/RhinoQueues.config"); From a3a06cb4482fafa8fb6d2512bcb982963d23db11 Mon Sep 17 00:00:00 2001 From: mnichols Date: Mon, 5 Jul 2010 14:54:25 -0700 Subject: [PATCH 2/4] rename specs --- Rhino.ServiceBus.Tests/Rhino.ServiceBus.Tests.csproj | 2 +- ...ssageConstruction.cs => CustomizingMessageConstruction.cs} | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename Rhino.ServiceBus.Tests/RhinoQueues/{CanCustomizeMessageConstruction.cs => CustomizingMessageConstruction.cs} (94%) diff --git a/Rhino.ServiceBus.Tests/Rhino.ServiceBus.Tests.csproj b/Rhino.ServiceBus.Tests/Rhino.ServiceBus.Tests.csproj index d07b4f6..bc30cc2 100644 --- a/Rhino.ServiceBus.Tests/Rhino.ServiceBus.Tests.csproj +++ b/Rhino.ServiceBus.Tests/Rhino.ServiceBus.Tests.csproj @@ -106,7 +106,7 @@ - + diff --git a/Rhino.ServiceBus.Tests/RhinoQueues/CanCustomizeMessageConstruction.cs b/Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs similarity index 94% rename from Rhino.ServiceBus.Tests/RhinoQueues/CanCustomizeMessageConstruction.cs rename to Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs index 530544d..7144bcd 100644 --- a/Rhino.ServiceBus.Tests/RhinoQueues/CanCustomizeMessageConstruction.cs +++ b/Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs @@ -8,11 +8,11 @@ namespace Rhino.ServiceBus.Tests.RhinoQueues { - public class CanCustomizeMessageConstruction:IDisposable + public class CustomizingMessageConstruction:IDisposable { private WindsorContainer container; - public CanCustomizeMessageConstruction() + public CustomizingMessageConstruction() { container = new WindsorContainer("RhinoQueues/RhinoQueues.config"); From fe252b4d845bca1292fe6c0a9517227740ac75bd Mon Sep 17 00:00:00 2001 From: mnichols Date: Mon, 5 Jul 2010 15:05:11 -0700 Subject: [PATCH 3/4] added icustomizeheaders interface --- .../CustomizingMessageConstruction.cs | 57 ++++++++++++------- Rhino.ServiceBus/ICustomizeMessageHeaders.cs | 9 +++ .../{ => Internal}/IMessageBuilder.cs | 0 Rhino.ServiceBus/Rhino.ServiceBus.csproj | 3 +- .../RhinoQueues/RhinoQueuesMessageBuilder.cs | 13 ++++- 5 files changed, 61 insertions(+), 21 deletions(-) create mode 100644 Rhino.ServiceBus/ICustomizeMessageHeaders.cs rename Rhino.ServiceBus/{ => Internal}/IMessageBuilder.cs (100%) diff --git a/Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs b/Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs index 7144bcd..61c327d 100644 --- a/Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs +++ b/Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs @@ -1,4 +1,6 @@ using System; +using System.Collections.Specialized; +using Castle.Core; using Castle.MicroKernel.Registration; using Castle.Windsor; using Rhino.Queues; @@ -8,30 +10,42 @@ namespace Rhino.ServiceBus.Tests.RhinoQueues { - public class CustomizingMessageConstruction:IDisposable + public class CustomizingMessageConstruction { - private WindsorContainer container; - - public CustomizingMessageConstruction() + + [Fact] + public void it_should_add_custom_header_to_headers_collection_using_builder() { - container = new WindsorContainer("RhinoQueues/RhinoQueues.config"); + using( var container = new WindsorContainer("RhinoQueues/RhinoQueues.config")) + { + container.Register(Component.For>().ImplementedBy());//before facility + container.AddFacility("rhino.esb", new RhinoServiceBusFacility()); - container.Register(Component.For>().ImplementedBy()); - container.AddFacility("rhino.esb", new RhinoServiceBusFacility()); - + var builder = container.Resolve>(); + builder.Initialize(new Endpoint { Uri = RhinoQueuesOneWayBus.NullEndpoint }); + var msg = builder.BuildFromMessageBatch("somemsg"); + Assert.NotNull(msg); + Assert.NotEqual(0, msg.Data.Length); + Assert.Equal("mikey", msg.Headers["user-id"]); + } } - [Fact] - public void it_should_add_custom_header_to_headers_collection() + public void it_should_add_custom_header_to_headers_collection_using_interface() { - var builder = container.Resolve>(); - builder.Initialize(new Endpoint {Uri = RhinoQueuesOneWayBus.NullEndpoint}); - var msg = builder.BuildFromMessageBatch("somemsg"); - Assert.NotNull(msg); - Assert.NotEqual(0,msg.Data.Length); - Assert.Equal("mikey",msg.Headers["user-id"]); + using (var container = new WindsorContainer("RhinoQueues/RhinoQueues.config")) + { + container.AddFacility("rhino.esb", new RhinoServiceBusFacility()); + container.Register(Component.For().ImplementedBy().LifeStyle.Is(LifestyleType.Transient)); + + var builder = container.Resolve>(); + builder.Initialize(new Endpoint { Uri = RhinoQueuesOneWayBus.NullEndpoint }); + var msg = builder.BuildFromMessageBatch("somemsg"); + Assert.NotNull(msg); + Assert.NotEqual(0, msg.Data.Length); + Assert.Equal("mikey", msg.Headers["user-id"]); + } } @@ -61,10 +75,15 @@ private static void Contextualize(MessagePayload message) message.Headers.Add("user-id","mikey"); } } - - public void Dispose() + public class AppIdentityCustomizer : ICustomizeMessageHeaders { - container.Dispose(); + public void Customize(NameValueCollection headers) + { + headers.Add("user-id","mikey"); + } } + } + + } \ No newline at end of file diff --git a/Rhino.ServiceBus/ICustomizeMessageHeaders.cs b/Rhino.ServiceBus/ICustomizeMessageHeaders.cs new file mode 100644 index 0000000..66f6295 --- /dev/null +++ b/Rhino.ServiceBus/ICustomizeMessageHeaders.cs @@ -0,0 +1,9 @@ +using System.Collections.Specialized; + +namespace Rhino.ServiceBus +{ + public interface ICustomizeMessageHeaders + { + void Customize(NameValueCollection headers); + } +} \ No newline at end of file diff --git a/Rhino.ServiceBus/IMessageBuilder.cs b/Rhino.ServiceBus/Internal/IMessageBuilder.cs similarity index 100% rename from Rhino.ServiceBus/IMessageBuilder.cs rename to Rhino.ServiceBus/Internal/IMessageBuilder.cs diff --git a/Rhino.ServiceBus/Rhino.ServiceBus.csproj b/Rhino.ServiceBus/Rhino.ServiceBus.csproj index c9d37ee..39c5018 100644 --- a/Rhino.ServiceBus/Rhino.ServiceBus.csproj +++ b/Rhino.ServiceBus/Rhino.ServiceBus.csproj @@ -97,6 +97,7 @@ + @@ -217,7 +218,7 @@ - + diff --git a/Rhino.ServiceBus/RhinoQueues/RhinoQueuesMessageBuilder.cs b/Rhino.ServiceBus/RhinoQueues/RhinoQueuesMessageBuilder.cs index 85747e7..aabcb31 100644 --- a/Rhino.ServiceBus/RhinoQueues/RhinoQueuesMessageBuilder.cs +++ b/Rhino.ServiceBus/RhinoQueues/RhinoQueuesMessageBuilder.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Specialized; using System.IO; using Rhino.Queues; using Rhino.ServiceBus.Internal; @@ -40,9 +41,19 @@ public MessagePayload BuildFromMessageBatch(params object[] msgs) {"source", endpoint.Uri.ToString()}, } }; + + TryCustomizeHeaders(payload.Headers); return payload; } - + + private void TryCustomizeHeaders(NameValueCollection headers) + { + if (MessageHeaders == null) + return; + MessageHeaders.Customize(headers); + } + + public ICustomizeMessageHeaders MessageHeaders { get; set; } public void Initialize(Endpoint source) { endpoint = source; From 47a632984298d3e97cb69e9daf9e346950bd6d7e Mon Sep 17 00:00:00 2001 From: mnichols Date: Mon, 5 Jul 2010 15:05:47 -0700 Subject: [PATCH 4/4] moved message builder interface --- .../RhinoQueues/CustomizingMessageConstruction.cs | 1 + Rhino.ServiceBus/Internal/IMessageBuilder.cs | 2 +- Rhino.ServiceBus/Msmq/MsmqOnewayBus.cs | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs b/Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs index 61c327d..055697c 100644 --- a/Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs +++ b/Rhino.ServiceBus.Tests/RhinoQueues/CustomizingMessageConstruction.cs @@ -5,6 +5,7 @@ using Castle.Windsor; using Rhino.Queues; using Rhino.ServiceBus.Impl; +using Rhino.ServiceBus.Internal; using Rhino.ServiceBus.RhinoQueues; using Xunit; diff --git a/Rhino.ServiceBus/Internal/IMessageBuilder.cs b/Rhino.ServiceBus/Internal/IMessageBuilder.cs index 211f1ac..906291a 100644 --- a/Rhino.ServiceBus/Internal/IMessageBuilder.cs +++ b/Rhino.ServiceBus/Internal/IMessageBuilder.cs @@ -1,4 +1,4 @@ -namespace Rhino.ServiceBus +namespace Rhino.ServiceBus.Internal { public interface IMessageBuilder { diff --git a/Rhino.ServiceBus/Msmq/MsmqOnewayBus.cs b/Rhino.ServiceBus/Msmq/MsmqOnewayBus.cs index 0527b48..a64c206 100644 --- a/Rhino.ServiceBus/Msmq/MsmqOnewayBus.cs +++ b/Rhino.ServiceBus/Msmq/MsmqOnewayBus.cs @@ -1,5 +1,6 @@ using System.Messaging; using Rhino.ServiceBus.Impl; +using Rhino.ServiceBus.Internal; namespace Rhino.ServiceBus.Msmq {