public virtual IMessage Deserialize <T>(AmqpMessage amqpMessage) where T : class { IAmqpSerializer amqpDeserializer = this.serializerFactory.CreateSerializer(amqpMessage.Properties.ContentType); T payload = amqpDeserializer.Deserialize <T>(amqpMessage); IDictionary <string, string> headers = this.propertyBuilder.BuildHeadersFromProperties(amqpMessage.Properties); return(new Message <T>(payload, new Dictionary <string, string>(headers))); }
public void CreateAmqpSerializerWithDefaultSerializerIfMessageContentTypeWasNotFilled() { var serializers = GetAmqpSerializers(); var message = A.Fake <IMessage>(); var sut = new AmqpSerializerFactory(new ReadOnlyDictionary <string, IAmqpSerializer>(serializers)); IAmqpSerializer serializer = sut.CreateSerializer(message); serializer.Should().BeOfType <SimpleSerializer>(because: "factory should return default serializer"); }
public virtual AmqpMessage Serialize(IMessage message) { IAmqpProperties properties = this.propertyBuilder.BuildPropertiesFromHeaders(message.Headers); string exchangeName = this.router.GetExchange(message); string routingKey = this.router.GetRoutingKey(message); IAmqpSerializer amqpSerializer = this.serializerFactory.CreateSerializer(message); byte[] payload = amqpSerializer.Serialize(message); return(new AmqpMessage(properties, exchangeName, routingKey, payload)); }
public void DefaultSerializerShouldBeChooIfSerializerByContentTypeWasNowFound() { var serializers = GetAmqpSerializers(); var message = A.Fake <IMessage>(); A.CallTo(() => message.Headers).Returns(new Dictionary <string, string> { { "content-type", "application/x-binary" } }); var sut = new AmqpSerializerFactory(new ReadOnlyDictionary <string, IAmqpSerializer>(serializers)); IAmqpSerializer serializer = sut.CreateSerializer(message); serializer.Should().BeOfType <SimpleSerializer>(because: "factory should return default serializer"); }
public void CreateAmqpSerializerWithCustomSerializerDeterminedByContentType() { var serializers = GetAmqpSerializers(); var message = A.Fake <IMessage>(); A.CallTo(() => message.Headers).Returns(new Dictionary <string, string> { { "content-type", "application/json" } }); var sut = new AmqpSerializerFactory(new ReadOnlyDictionary <string, IAmqpSerializer>(serializers)); IAmqpSerializer serializer = sut.CreateSerializer(message); serializer.Should().BeOfType <JsonSerializer>(because: "factory should not return default serializer"); }
public IAmqpSubscriptionBuilder WithSerializer(string contentType, IAmqpSerializer serializer) { this.Serializers.Add(contentType, serializer); return(this); }
public IAmqpPublishingBuilder WithDeserializer(string contentType, IAmqpSerializer serializer) { this.Serializers.Add(contentType, serializer); return(this); }