public void Should_return_metadata_for_a_mapped_type()
 {
     var defaultMessageRegistry = new MessageMetadataRegistry();
     defaultMessageRegistry.RegisterMessageType(typeof(int));
     var messageMetadata = defaultMessageRegistry.GetMessageDefinition(typeof (int));
     Assert.AreEqual(typeof(int),messageMetadata.MessageType);
 }
            public void Should_throw_an_exception_for_a_unmapped_type()
            {
                var defaultMessageRegistry = new MessageMetadataRegistry();
                var exception = Assert.Throws <Exception>(() => defaultMessageRegistry.GetMessageDefinition(typeof(int)));

                Assert.AreEqual("Could not find Metadata for 'System.Int32'. Messages need to implement either 'IMessage', 'IEvent' or 'ICommand'. Alternatively, if you don't want to implement an interface, you can configure 'Unobtrusive Mode Messages' and use convention to configure how messages are mapped.", exception.Message);
            }
            public void Should_return_metadata_for_a_mapped_type()
            {
                var defaultMessageRegistry = new MessageMetadataRegistry();

                defaultMessageRegistry.RegisterMessageType(typeof(int));
                var messageMetadata = defaultMessageRegistry.GetMessageDefinition(typeof(int));

                Assert.AreEqual(typeof(int), messageMetadata.MessageType);
            }
Example #4
0
            public void Should_return_the_correct_parent_hierarchy()
            {
                var defaultMessageRegistry = new MessageMetadataRegistry();

                defaultMessageRegistry.RegisterMessageType(typeof(MyEvent));
                var messageMetadata = defaultMessageRegistry.GetMessageDefinition(typeof(MyEvent));

                Assert.AreEqual(5, messageMetadata.MessageHierarchy.Count());

                Assert.AreEqual(typeof(MyEvent), messageMetadata.MessageHierarchy.ToList()[0]);
                Assert.AreEqual(typeof(InterfaceParent1), messageMetadata.MessageHierarchy.ToList()[1]);
                Assert.AreEqual(typeof(ConcreteParent1), messageMetadata.MessageHierarchy.ToList()[2]);
                Assert.AreEqual(typeof(InterfaceParent1Base), messageMetadata.MessageHierarchy.ToList()[3]);
                Assert.AreEqual(typeof(ConcreteParentBase), messageMetadata.MessageHierarchy.ToList()[4]);
            }
        public void Invoke(SendLogicalMessagesContext context, Action next)
        {
            var sendOptions = context.SendOptions;

            var toSend = new TransportMessage
            {
                MessageIntent  = sendOptions.Intent,
                ReplyToAddress = sendOptions.ReplyToAddress
            };

            if (sendOptions.CorrelationId != null)
            {
                toSend.CorrelationId = sendOptions.CorrelationId;
            }

            //apply static headers
            foreach (var kvp in UnicastBus.OutgoingHeaders)
            {
                toSend.Headers[kvp.Key] = kvp.Value;
            }

            //apply individual headers
            foreach (var kvp in context.LogicalMessages.SelectMany(m => m.Headers))
            {
                toSend.Headers[kvp.Key] = kvp.Value;
            }

            var messageDefinitions = context.LogicalMessages.Select(m => MessageMetadataRegistry.GetMessageDefinition(m.MessageType)).ToList();

            toSend.TimeToBeReceived = messageDefinitions.Min(md => md.TimeToBeReceived);
            toSend.Recoverable      = messageDefinitions.Any(md => md.Recoverable);

            context.Set(toSend);

            PipelineExecutor.InvokeSendPipeline(sendOptions, toSend);

            next();
        }
Example #6
0
        /// <summary>
        /// Wraps the provided messages in an NServiceBus envelope, does not include destination.
        /// Invokes message mutators.
        /// </summary>
        /// <param name="rawMessages">The messages to wrap.</param>
        /// <param name="result">The envelope in which the messages are placed.</param>
        /// <returns>The envelope containing the messages.</returns>
        void MapTransportMessageFor(IList <object> rawMessages, TransportMessage result)
        {
            if (!Configure.SendOnlyMode)
            {
                result.ReplyToAddress = Address.Local;

                if (PropagateReturnAddressOnSend && _messageBeingHandled != null && _messageBeingHandled.ReplyToAddress != null)
                {
                    result.ReplyToAddress = _messageBeingHandled.ReplyToAddress;
                }
            }

            var messages = ApplyOutgoingMessageMutatorsTo(rawMessages).ToArray();


            var messageDefinitions = rawMessages.Select(m => MessageMetadataRegistry.GetMessageDefinition(GetMessageType(m))).ToList();

            result.TimeToBeReceived = messageDefinitions.Min(md => md.TimeToBeReceived);
            result.Recoverable      = messageDefinitions.Any(md => md.Recoverable);

            SerializeMessages(result, messages);

            InvokeOutgoingTransportMessagesMutators(messages, result);
        }
 public void Should_throw_an_exception_for_a_unmapped_type()
 {
     var defaultMessageRegistry = new MessageMetadataRegistry();
     var exception = Assert.Throws<Exception>(() => defaultMessageRegistry.GetMessageDefinition(typeof (int)));
     Assert.AreEqual("Could not find Metadata for 'System.Int32'. Messages need to implement either 'IMessage', 'IEvent' or 'ICommand'. Alternatively, if you don't want to implement an interface, you can configure 'Unobtrusive Mode Messages' and use convention to configure how messages are mapped.", exception.Message);
 }
 public void Should_throw_an_exception_for_a_unmapped_type()
 {
     var defaultMessageRegistry = new MessageMetadataRegistry();
     Assert.Throws<Exception>(() => defaultMessageRegistry.GetMessageDefinition(typeof (int)));
 }
Example #9
0
            public void Should_throw_an_exception_for_a_unmapped_type()
            {
                var defaultMessageRegistry = new MessageMetadataRegistry();

                Assert.Throws <Exception>(() => defaultMessageRegistry.GetMessageDefinition(typeof(int)));
            }