示例#1
0
        public void NestedMessage()
        {
            var urn = MessageUrn.ForType(typeof(X));

            Assert.AreEqual(urn.AbsolutePath, "message:MassTransit.Tests:MessageUrnSpecs+X");
        }
示例#2
0
 protected void AcceptResponse<T>()
     where T : class
 {
     _accept.Add(MessageUrn.ForTypeString<T>());
 }
示例#3
0
        public void SimpleMessage()
        {
            var urn = MessageUrn.ForType(typeof(PingMessage));

            Assert.AreEqual(urn.AbsolutePath, "message:MassTransit.TestFramework.Messages:PingMessage");
        }
示例#4
0
        public void SimpleMessage()
        {
            var urn = new MessageUrn(typeof(FlingPing));

            Assert.AreEqual(urn.AbsolutePath, "message:MassTransit.Tests:FlingPing");
        }
示例#5
0
 /// <summary>
 /// Transforms the type of message to a normalized string which can be used
 /// for naming a queue on a transport.
 /// </summary>
 /// <param name="messageType">The message class/interface type</param>
 /// <returns>The normalized name for this type</returns>
 public static string ToMessageName(this Type messageType)
 {
     return(MessageUrn.ForType(messageType).ToString());
 }
示例#6
0
 public void Should_have_the_fault_base_message_class_type()
 {
     Assert.That(TypeMetadataCache <Fault <MemberAddressUpdated> > .MessageTypeNames, Contains.Item(MessageUrn.ForType(typeof(Fault <MemberUpdateEvent>))));
 }
示例#7
0
 public void Should_have_the_fault_message_type()
 {
     Assert.That(TypeMetadataCache <Fault <UpdateMemberAddress> > .MessageTypeNames, Contains.Item(MessageUrn.ForType(typeof(Fault <UpdateMemberAddress>))));
 }
示例#8
0
        public void SimpleMessage()
        {
            var urn = new MessageUrn(typeof(Ping));

            Assert.AreEqual(urn.AbsolutePath, "message:MassTransit.TestFramework.Examples.Messages:Ping");
        }
示例#9
0
        public bool HasMessageType(Type messageType)
        {
            var typeUrn = MessageUrn.ForTypeString(messageType);

            return(SupportedMessageTypes?.Any(x => typeUrn.Equals(x, StringComparison.OrdinalIgnoreCase)) ?? false);
        }
示例#10
0
        public void SimpleMessage()
        {
            var urn = new MessageUrn(typeof(Ping));

            Assert.AreEqual(urn.AbsolutePath, "message:Burrows.Tests.Examples.Messages:Ping");
        }
示例#11
0
        public void NestedMessage()
        {
            var urn = new MessageUrn(typeof(X));

            Assert.AreEqual(urn.AbsolutePath, "message:Burrows.Tests:MessageUrnSpecs+X");
        }
示例#12
0
 public string FormatEntityName <T>()
 {
     return(MessageUrn.ForType(typeof(T)).ToString());
 }
        public override bool TryGetMessage <T>(out ConsumeContext <T> message)
        {
            lock (_messageTypes)
            {
                if (_messageTypes.TryGetValue(typeof(T), out var existing))
                {
                    message = existing as ConsumeContext <T>;
                    return(message != null);
                }

                if (typeof(T) == typeof(JToken))
                {
                    _messageTypes[typeof(T)] = message = new MessageConsumeContext <T>(this, _messageToken as T);
                    return(true);
                }

                var typeUrn = MessageUrn.ForTypeString <T>();

                #region Masstransit Deserialize old code
                // Masstransit old code
                // if (_supportedTypes.Any(x => typeUrn.Equals(x, StringComparison.OrdinalIgnoreCase)))
                // {
                //     object obj;
                //     var deserializeType = typeof(T);
                //     if (deserializeType.GetTypeInfo().IsInterface && TypeMetadataCache<T>.IsValidMessageType)
                //         deserializeType = TypeMetadataCache<T>.ImplementationType;
                //
                //     using (var jsonReader = _messageToken.CreateReader())
                //     {
                //         obj = _deserializer.Deserialize(jsonReader, deserializeType);
                //     }
                //
                //     _messageTypes[typeof(T)] = message = new MessageConsumeContext<T>(this, (T)obj);
                //     return true;
                // }
                #endregion


                #region Masstransit Object Deserialize New Code

                var supportedTypesNew = _supportedTypes.Select(_ => _.Split(':').Last()).ToList();
                if (supportedTypesNew.Any(x => typeUrn.Split(':').Last().Contains(x, StringComparison.OrdinalIgnoreCase)))
                {
                    object obj;
                    var    deserializeType = typeof(T);
                    if (deserializeType.GetTypeInfo().IsInterface&& TypeMetadataCache <T> .IsValidMessageType)
                    {
                        deserializeType = TypeMetadataCache <T> .ImplementationType;
                    }

                    using (var jsonReader = _messageToken.CreateReader())
                    {
                        obj = _deserializer.Deserialize(jsonReader, deserializeType);
                    }

                    _messageTypes[typeof(T)] = message = new MessageConsumeContext <T>(this, (T)obj);
                    return(true);
                }

                #endregion

                _messageTypes[typeof(T)] = message = null;
                return(false);
            }
        }
示例#14
0
 static ObjectInfo CreateObjectInfo <T>()
 {
     return(new CachedObjectInfo(MessageUrn.ForTypeString <T>(), () => PropertyInfoCache <T> .Properties));
 }
示例#15
0
 ObjectInfo IObjectInfoCache.GetObjectInfo <T>()
 {
     return(_messageTypes.GetOrAdd(MessageUrn.ForTypeString <T>(), _ => CreateObjectInfo <T>()));
 }
示例#16
0
 public void OpenGenericMessage()
 {
     Assert.That(() => MessageUrn.ForType(typeof(G <>)), Throws.TypeOf <ArgumentException>());
 }