diff --git a/Obvs.Serialization.MessagePack/Configuration/FluentConfigExtensions.cs b/Obvs.Serialization.MessagePack/Configuration/FluentConfigExtensions.cs index 4f2aeb8f..5e0d06cb 100644 --- a/Obvs.Serialization.MessagePack/Configuration/FluentConfigExtensions.cs +++ b/Obvs.Serialization.MessagePack/Configuration/FluentConfigExtensions.cs @@ -1,9 +1,11 @@ -using Obvs.Configuration; +using System; +using Obvs.Configuration; namespace Obvs.Serialization.MessagePack.Configuration { public static class FluentConfigExtensions { + [Obsolete("MsgPack.Cli is no longer maintained; use SerializedAsMessagePackCSharp() from Obvs.Serialization.MessagePack-CSharp instead")] public static ICanCreateEndpointAsClientOrServer SerializedAsMsgPack(this ICanSpecifyEndpointSerializers config) where TMessage : class where TCommand : class, TMessage diff --git a/Obvs.Serialization.MessagePack/MsgPackMessageDeserializer.cs b/Obvs.Serialization.MessagePack/MsgPackMessageDeserializer.cs index 0c27685b..12bd8c9e 100644 --- a/Obvs.Serialization.MessagePack/MsgPackMessageDeserializer.cs +++ b/Obvs.Serialization.MessagePack/MsgPackMessageDeserializer.cs @@ -1,8 +1,10 @@ +using System; using System.IO; using MsgPack.Serialization; namespace Obvs.Serialization.MessagePack { + [Obsolete("MsgPack.Cli is no longer maintained; use Obvs.Serialization.MessagePack-CSharp instead")] public class MsgPackMessageDeserializer : MessageDeserializerBase where TMessage : class { diff --git a/Obvs.Serialization.MessagePack/MsgPackMessageDeserializerFactory.cs b/Obvs.Serialization.MessagePack/MsgPackMessageDeserializerFactory.cs index 0d9fe041..f25cde94 100644 --- a/Obvs.Serialization.MessagePack/MsgPackMessageDeserializerFactory.cs +++ b/Obvs.Serialization.MessagePack/MsgPackMessageDeserializerFactory.cs @@ -6,6 +6,7 @@ namespace Obvs.Serialization.MessagePack { + [Obsolete("MsgPack.Cli is no longer maintained; use Obvs.Serialization.MessagePack-CSharp instead")] public class MsgPackMessageDeserializerFactory : IMessageDeserializerFactory { public IEnumerable> Create(Func assemblyFilter = null, Func typeFilter = null) diff --git a/Obvs.Serialization.MessagePack/MsgPackMessageSerializer.cs b/Obvs.Serialization.MessagePack/MsgPackMessageSerializer.cs index 04c6cbdb..d678bd6d 100644 --- a/Obvs.Serialization.MessagePack/MsgPackMessageSerializer.cs +++ b/Obvs.Serialization.MessagePack/MsgPackMessageSerializer.cs @@ -1,8 +1,10 @@ -using System.IO; +using System; +using System.IO; using MsgPack.Serialization; namespace Obvs.Serialization.MessagePack { + [Obsolete("MsgPack.Cli is no longer maintained; use Obvs.Serialization.MessagePack-CSharp instead")] public class MsgPackMessageSerializer : IMessageSerializer { public void Serialize(Stream destination, object message) diff --git a/Obvs.Serialization.MessagePack/Obvs.Serialization.MessagePack.csproj b/Obvs.Serialization.MessagePack/Obvs.Serialization.MessagePack.csproj index 8d147a57..96631365 100644 --- a/Obvs.Serialization.MessagePack/Obvs.Serialization.MessagePack.csproj +++ b/Obvs.Serialization.MessagePack/Obvs.Serialization.MessagePack.csproj @@ -7,8 +7,8 @@ 1.0.0 http://christopherread.github.io/Obvs - Minor dependency update - MessagePack serialization for Obvs + Deprecated: MsgPack.Cli is no longer maintained. Use Obvs.Serialization.MessagePack-CSharp instead. + Deprecated: use Obvs.Serialization.MessagePack-CSharp. MessagePack serialization for Obvs using MsgPack.Cli, which is no longer maintained. diff --git a/Obvs.Serialization.Tests/TestMsgPackSerialization.cs b/Obvs.Serialization.Tests/TestMsgPackSerialization.cs index 1e8cb804..77516b22 100644 --- a/Obvs.Serialization.Tests/TestMsgPackSerialization.cs +++ b/Obvs.Serialization.Tests/TestMsgPackSerialization.cs @@ -1,4 +1,8 @@ +// These tests exercise the deprecated MsgPack.Cli serializer on purpose +#pragma warning disable CS0618 + using System; +using System.Reflection; using FakeItEasy; using Xunit; using Obvs.Configuration; @@ -11,6 +15,30 @@ namespace Obvs.Serialization.Tests public class TestMsgPackSerialization { + [Theory] + [InlineData(typeof(MsgPackMessageSerializer))] + [InlineData(typeof(MsgPackMessageDeserializer<>))] + [InlineData(typeof(MsgPackMessageDeserializerFactory))] + public void ShouldBeObsoleteInFavourOfMessagePackCSharp(Type type) + { + var obsolete = type.GetCustomAttribute(); + + Assert.NotNull(obsolete); + Assert.False(obsolete.IsError); + Assert.Contains("Obvs.Serialization.MessagePack-CSharp", obsolete.Message); + } + + [Fact] + public void FluentConfigShouldBeObsoleteInFavourOfMessagePackCSharp() + { + // Obvs.Serialization.MessagePack-CSharp has a class with the same full name, so look it up in this package's assembly + var extensions = typeof(MsgPackMessageSerializer).Assembly.GetType("Obvs.Serialization.MessagePack.Configuration.FluentConfigExtensions"); + var obsolete = extensions.GetMethod("SerializedAsMsgPack").GetCustomAttribute(); + + Assert.NotNull(obsolete); + Assert.Contains("SerializedAsMessagePackCSharp", obsolete.Message); + } + [Fact] public void ShouldSerializeToMsgPack() { diff --git a/README.md b/README.md index 7b37ded7..01410af4 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ ### Extensions * Transports: ActiveMQ / RabbitMQ / NetMQ / AzureServiceBus / Kafka / EventStore -* Serialization: XML / JSON.Net / NetJson / ProtoBuf / MsgPack +* Serialization: XML / JSON.Net / NetJson / ProtoBuf / MessagePack (via MessagePack-CSharp; the MsgPack.Cli-based package is deprecated) * Logging: NLog / log4net * Monitoring: Performance Counters / ElasticSearch