Skip to content
Browse files

added custom Json & Bson serializers to cope with payloads that conta…

…in messages as interfaces
  • Loading branch information...
1 parent b095ea5 commit bbef003f181d0839617d7f6cce5144c6e51de925 @elliotritchie committed
Showing with 41,203 additions and 33 deletions.
  1. +1 −1 sample/NES.Sample.Web/Global.asax.cs
  2. +1 −2 sample/NES.Sample/EndpointConfig.cs
  3. +2 −2 src/NES/EventFactory.cs
  4. +41 −0 src/NES/EventStore/BsonSerializer.cs
  5. +6 −6 src/NES/EventStore/{Serializer.cs → CompositeSerializer.cs}
  6. +32 −0 src/NES/EventStore/EventContractResolver.cs
  7. +28 −0 src/NES/EventStore/EventSerializationBinder.cs
  8. +80 −0 src/NES/EventStore/JsonSerializer.cs
  9. +25 −6 src/NES/EventStore/NESWireup.cs
  10. +1 −1 src/NES/EventStore/{WireupExtensions.cs → NESWireupExtensions.cs}
  11. +17 −0 src/NES/EventStore/NullObjectSerializer.cs
  12. +1 −0 src/NES/IEventFactory.cs
  13. +9 −0 src/NES/IEventMapper.cs
  14. +12 −2 src/NES/NES.csproj
  15. +1 −2 src/NES/NServiceBus/BusAdapter.cs
  16. +3 −1 src/NES/NServiceBus/ConfigureNES.cs
  17. +25 −0 src/NES/NServiceBus/MessageCreatorAdapter.cs
  18. +4 −8 src/NES/NServiceBus/MessageMapperAdapter.cs
  19. +1 −2 src/NES/NServiceBus/MessageSerializerAdapter.cs
  20. +1 −0 src/NES/packages.config
  21. BIN src/packages/Newtonsoft.Json.4.0.8/Newtonsoft.Json.4.0.8.nupkg
  22. BIN src/packages/Newtonsoft.Json.4.0.8/lib/net20/Newtonsoft.Json.dll
  23. BIN src/packages/Newtonsoft.Json.4.0.8/lib/net20/Newtonsoft.Json.pdb
  24. +7,722 −0 src/packages/Newtonsoft.Json.4.0.8/lib/net20/Newtonsoft.Json.xml
  25. BIN src/packages/Newtonsoft.Json.4.0.8/lib/net35/Newtonsoft.Json.dll
  26. BIN src/packages/Newtonsoft.Json.4.0.8/lib/net35/Newtonsoft.Json.pdb
  27. +6,845 −0 src/packages/Newtonsoft.Json.4.0.8/lib/net35/Newtonsoft.Json.xml
  28. BIN src/packages/Newtonsoft.Json.4.0.8/lib/net40/Newtonsoft.Json.dll
  29. BIN src/packages/Newtonsoft.Json.4.0.8/lib/net40/Newtonsoft.Json.pdb
  30. +7,004 −0 src/packages/Newtonsoft.Json.4.0.8/lib/net40/Newtonsoft.Json.xml
  31. BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl3-wp/Newtonsoft.Json.dll
  32. BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl3-wp/Newtonsoft.Json.pdb
  33. +6,437 −0 src/packages/Newtonsoft.Json.4.0.8/lib/sl3-wp/Newtonsoft.Json.xml
  34. BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl4-windowsphone71/Newtonsoft.Json.dll
  35. BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl4-windowsphone71/Newtonsoft.Json.pdb
  36. +6,437 −0 src/packages/Newtonsoft.Json.4.0.8/lib/sl4-windowsphone71/Newtonsoft.Json.xml
  37. BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl4/Newtonsoft.Json.dll
  38. BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl4/Newtonsoft.Json.pdb
  39. +6,467 −0 src/packages/Newtonsoft.Json.4.0.8/lib/sl4/Newtonsoft.Json.xml
View
2 sample/NES.Sample.Web/Global.asax.cs
@@ -22,7 +22,7 @@ private void RegisterBus()
Bus = Configure.WithWeb()
.Log4Net()
.DefaultBuilder()
- .XmlSerializer()
+ .JsonSerializer()
.MsmqTransport()
.IsTransactional(false)
.PurgeOnStartup(false)
View
3 sample/NES.Sample/EndpointConfig.cs
@@ -11,14 +11,13 @@ public void Init()
{
Wireup.Init()
.UsingInMemoryPersistence()
- .UsingBinarySerialization()
.NES()
.Build();
Configure.With()
.Log4Net()
.DefaultBuilder()
- .XmlSerializer("http://getnes.net")
+ .JsonSerializer()
.NES();
}
}
View
4 src/NES/EventFactory.cs
@@ -8,7 +8,7 @@ namespace NES
{
/// <summary>
/// Based on the MessageMapper implementation in NServiceBus
- /// https://www.github.com/NServiceBus/NServiceBus/blob/master/src/impl/messageInterfaces/NServiceBus.MessageInterfaces.MessageMapper.Reflection/MessageMapper.cs
+ /// https://github.com/NServiceBus/NServiceBus/blob/master/src/impl/messageInterfaces/NServiceBus.MessageInterfaces.MessageMapper.Reflection/MessageMapper.cs
/// </summary>
public class EventFactory : IEventFactory
{
@@ -34,7 +34,7 @@ public T Create<T>(Action<T> action)
return @event;
}
- private object Create(Type type)
+ public object Create(Type type)
{
return FormatterServices.GetUninitializedObject(GetConcreteType(type));
}
View
41 src/NES/EventStore/BsonSerializer.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections;
+using System.IO;
+using EventStore.Logging;
+using Newtonsoft.Json.Bson;
+
+namespace NES.EventStore
+{
+ /// <summary>
+ /// Based on the JsonSerializer implementation in EventStore
+ /// https://github.com/joliver/EventStore/blob/master/src/proj/EventStore.Serialization.Json/BsonSerializer.cs
+ /// </summary>
+ public class BsonSerializer : JsonSerializer
+ {
+ private static readonly ILog _logger = LogFactory.BuildLogger(typeof(BsonSerializer));
+
+ public BsonSerializer(Func<IEventMapper> eventMapperFunc, Func<IEventFactory> eventFactoryFunc)
+ : base(eventMapperFunc, eventFactoryFunc)
+ {
+ }
+
+ public override void Serialize<T>(Stream output, T graph)
+ {
+ Serialize(new BsonWriter(output) { DateTimeKindHandling = DateTimeKind.Utc }, graph);
+ }
+
+ public override T Deserialize<T>(Stream input)
+ {
+ return Deserialize<T>(new BsonReader(input, IsArray(typeof(T)), DateTimeKind.Utc));
+ }
+
+ private static bool IsArray(Type type)
+ {
+ var array = typeof(IEnumerable).IsAssignableFrom(type) && !typeof(IDictionary).IsAssignableFrom(type);
+
+ _logger.Verbose(string.Format("Objects of type '{0}' are considered to be an array: '{1}'.", type, array));
+
+ return array;
+ }
+ }
+}
View
12 src/NES/EventStore/Serializer.cs → src/NES/EventStore/CompositeSerializer.cs
@@ -7,15 +7,15 @@
namespace NES.EventStore
{
- public class Serializer : ISerialize
+ public class CompositeSerializer : ISerialize
{
private readonly ISerialize _inner;
- private readonly Func<IEventSerializer> _eventSerializerFactory;
+ private readonly Func<IEventSerializer> _eventSerializerFunc;
- public Serializer(ISerialize inner, Func<IEventSerializer> eventSerializerFactory)
+ public CompositeSerializer(ISerialize inner, Func<IEventSerializer> eventSerializerFunc)
{
_inner = inner;
- _eventSerializerFactory = eventSerializerFactory;
+ _eventSerializerFunc = eventSerializerFunc;
}
public void Serialize<T>(Stream output, T graph)
@@ -28,7 +28,7 @@ public void Serialize<T>(Stream output, T graph)
foreach (var eventMessage in eventMessages)
{
- eventMessage.Body = _eventSerializerFactory().Serialize(eventMessage.Body);
+ eventMessage.Body = _eventSerializerFunc().Serialize(eventMessage.Body);
}
_inner.Serialize(output, graph);
@@ -53,7 +53,7 @@ public T Deserialize<T>(Stream input)
{
foreach (var eventMessage in eventMessages)
{
- eventMessage.Body = _eventSerializerFactory().Deserialize((string)eventMessage.Body);
+ eventMessage.Body = _eventSerializerFunc().Deserialize((string)eventMessage.Body);
}
}
View
32 src/NES/EventStore/EventContractResolver.cs
@@ -0,0 +1,32 @@
+using System;
+using Newtonsoft.Json.Serialization;
+
+namespace NES.EventStore
+{
+ public class EventContractResolver : DefaultContractResolver
+ {
+ private readonly IEventMapper _eventMapper;
+ private readonly IEventFactory _eventFactory;
+
+ public EventContractResolver(IEventMapper eventMapper, IEventFactory eventFactory)
+ : base(true)
+ {
+ _eventMapper = eventMapper;
+ _eventFactory = eventFactory;
+ }
+
+ protected override JsonObjectContract CreateObjectContract(Type objectType)
+ {
+ var mappedType = _eventMapper.GetMappedTypeFor(objectType);
+
+ if (mappedType == null)
+ return base.CreateObjectContract(objectType);
+
+ var jsonObjectContract = base.CreateObjectContract(mappedType);
+
+ jsonObjectContract.DefaultCreator = () => _eventFactory.Create(mappedType);
+
+ return jsonObjectContract;
+ }
+ }
+}
View
28 src/NES/EventStore/EventSerializationBinder.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Runtime.Serialization;
+
+namespace NES.EventStore
+{
+ public class EventSerializationBinder : SerializationBinder
+ {
+ private readonly IEventMapper _eventMapper;
+
+ public EventSerializationBinder(IEventMapper eventMapper)
+ {
+ _eventMapper = eventMapper;
+ }
+
+ public override void BindToName(Type serializedType, out string assemblyName, out string typeName)
+ {
+ var mappedType = _eventMapper.GetMappedTypeFor(serializedType) ?? serializedType;
+
+ assemblyName = null;
+ typeName = mappedType.AssemblyQualifiedName;
+ }
+
+ public override Type BindToType(string assemblyName, string typeName)
+ {
+ throw new NotImplementedException();
+ }
+ }
+}
View
80 src/NES/EventStore/JsonSerializer.cs
@@ -0,0 +1,80 @@
+using System;
+using System.IO;
+using System.Runtime.Serialization.Formatters;
+using System.Text;
+using EventStore.Logging;
+using EventStore.Serialization;
+using Newtonsoft.Json;
+using JsonNetSerializer = Newtonsoft.Json.JsonSerializer;
+
+namespace NES.EventStore
+{
+ /// <summary>
+ /// Based on the JsonSerializer implementation in EventStore
+ /// https://github.com/joliver/EventStore/blob/master/src/proj/EventStore.Serialization.Json/JsonSerializer.cs
+ /// </summary>
+ public class JsonSerializer : ISerialize
+ {
+ private static readonly ILog _logger = LogFactory.BuildLogger(typeof(JsonSerializer));
+
+ private readonly JsonSerializerSettings _settings = new JsonSerializerSettings
+ {
+ TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple,
+ TypeNameHandling = TypeNameHandling.Auto,
+ DefaultValueHandling = DefaultValueHandling.Ignore,
+ NullValueHandling = NullValueHandling.Ignore
+ };
+
+ private readonly Func<IEventMapper> _eventMapperFunc;
+ private readonly Func<IEventFactory> _eventFactoryFunc;
+
+ public JsonSerializer(Func<IEventMapper> eventMapperFunc, Func<IEventFactory> eventFactoryFunc)
+ {
+ _eventMapperFunc = eventMapperFunc;
+ _eventFactoryFunc = eventFactoryFunc;
+ }
+
+ public virtual void Serialize<T>(Stream output, T graph)
+ {
+ _logger.Verbose("Serializing object graph of type '" + typeof(T) + "'.");
+
+ using (var streamWriter = new StreamWriter(output, Encoding.UTF8))
+ {
+ Serialize(new JsonTextWriter(streamWriter), graph);
+ }
+ }
+
+ protected virtual void Serialize(JsonWriter writer, object graph)
+ {
+ using (writer)
+ {
+ var serializer = JsonNetSerializer.Create(_settings);
+
+ serializer.Binder = new EventSerializationBinder(_eventMapperFunc());
+ serializer.Serialize(writer, graph);
+ }
+ }
+
+ public virtual T Deserialize<T>(Stream input)
+ {
+ _logger.Verbose("Deserializing stream to object of type '" + typeof(T) + "'.");
+
+ using (var streamReader = new StreamReader(input, Encoding.UTF8))
+ {
+ return Deserialize<T>(new JsonTextReader(streamReader));
+ }
+ }
+
+ protected virtual T Deserialize<T>(JsonReader reader)
+ {
+ using (reader)
+ {
+ var serializer = JsonNetSerializer.Create(_settings);
+
+ serializer.ContractResolver = new EventContractResolver(_eventMapperFunc(), _eventFactoryFunc());
+
+ return (T)serializer.Deserialize(reader, typeof(T));
+ }
+ }
+ }
+}
View
31 src/NES/EventStore/NESWireup.cs
@@ -12,23 +12,42 @@ public class NESWireup : Wireup
{
private static readonly ILog _logger = LogFactory.BuildLogger(typeof(NESWireup));
- public NESWireup(Wireup wireup)
+ public NESWireup(Wireup wireup)
: base(wireup)
{
- _logger.Debug("Configuring serializer to cope with payloads that contain messages as interfaces.");
- _logger.Debug("Wrapping serializer of type '" + Container.Resolve<ISerialize>().GetType() + "' in '" + typeof(Serializer) + "'");
+ var serializer = Container.Resolve<ISerialize>();
+
+ if (serializer != null)
+ {
+ _logger.Debug("Configuring custom NES serializer to cope with payloads that contain messages as interfaces.");
+ _logger.Debug("Wrapping serializer of type '" + serializer.GetType() + "' in '" + typeof(CompositeSerializer) + "'");
+
+ Container.Register<ISerialize>(new CompositeSerializer(serializer, () => DI.Current.Resolve<IEventSerializer>()));
+ }
- Container.Register<ISerialize>(new Serializer(Container.Resolve<ISerialize>(), () => DI.Current.Resolve<IEventSerializer>()));
-
_logger.Debug("Configuring the store to dispatch messages synchronously.");
_logger.Debug("Registering dispatcher of type '" + typeof(MessageDispatcher) + "'.");
Container.Register<IScheduleDispatches>(c => new SynchronousDispatchScheduler(new MessageDispatcher(() => DI.Current.Resolve<IEventPublisher>()), c.Resolve<IPersistStreams>()));
-
+
DI.Current.Register<IEventStore, IStoreEvents>(eventStore => new EventStoreAdapter(eventStore));
DI.Current.Register(() => Container.Resolve<IStoreEvents>());
}
+ public SerializationWireup UsingJsonSerialization()
+ {
+ _logger.Debug("Configuring custom NES Json serializer to cope with payloads that contain messages as interfaces.");
+
+ return new SerializationWireup(this, new JsonSerializer(() => DI.Current.Resolve<IEventMapper>(), () => DI.Current.Resolve<IEventFactory>()));
+ }
+
+ public SerializationWireup UsingBsonSerialization()
+ {
+ _logger.Debug("Configuring custom NES Bson serializer to cope with payloads that contain messages as interfaces.");
+
+ return new SerializationWireup(this, new BsonSerializer(() => DI.Current.Resolve<IEventMapper>(), () => DI.Current.Resolve<IEventFactory>()));
+ }
+
public override IStoreEvents Build()
{
_logger.Debug("Configuring the store to upconvert events when fetched.");
View
2 src/NES/EventStore/WireupExtensions.cs → src/NES/EventStore/NESWireupExtensions.cs
@@ -2,7 +2,7 @@
namespace NES.EventStore
{
- public static class WireupExtensions
+ public static class NESWireupExtensions
{
public static NESWireup NES(this Wireup wireup)
{
View
17 src/NES/EventStore/NullObjectSerializer.cs
@@ -0,0 +1,17 @@
+using System.IO;
+using EventStore.Serialization;
+
+namespace NES.EventStore
+{
+ public class NullObjectSerializer : ISerialize
+ {
+ public void Serialize<T>(Stream output, T graph)
+ {
+ }
+
+ public T Deserialize<T>(Stream input)
+ {
+ return default(T);
+ }
+ }
+}
View
1 src/NES/IEventFactory.cs
@@ -5,5 +5,6 @@ namespace NES
public interface IEventFactory
{
T Create<T>(Action<T> action);
+ object Create(Type type);
}
}
View
9 src/NES/IEventMapper.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace NES
+{
+ public interface IEventMapper
+ {
+ Type GetMappedTypeFor(Type type);
+ }
+}
View
14 src/NES/NES.csproj
@@ -43,6 +43,9 @@
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.1.2.10\lib\2.0\log4net.dll</HintPath>
</Reference>
+ <Reference Include="Newtonsoft.Json, Version=4.0.8.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <HintPath>..\packages\Newtonsoft.Json.4.0.8\lib\net40\Newtonsoft.Json.dll</HintPath>
+ </Reference>
<Reference Include="NServiceBus, Version=3.0.0.0, Culture=neutral, PublicKeyToken=9fc386479f8a226c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\NServiceBus.3.0.0\lib\net40\NServiceBus.dll</HintPath>
@@ -67,7 +70,12 @@
</Compile>
<Compile Include="AggregateBase.cs" />
<Compile Include="CommandContext.cs" />
+ <Compile Include="EventStore\BsonSerializer.cs" />
+ <Compile Include="EventStore\EventContractResolver.cs" />
<Compile Include="EventStore\EventConverterPipelineHook.cs" />
+ <Compile Include="EventStore\EventSerializationBinder.cs" />
+ <Compile Include="EventStore\JsonSerializer.cs" />
+ <Compile Include="EventStore\NullObjectSerializer.cs" />
<Compile Include="Global.cs" />
<Compile Include="ConflictingCommandException.cs" />
<Compile Include="DependencyInjectionContainer.cs" />
@@ -82,14 +90,15 @@
<Compile Include="EventStore\EventStoreAdapter.cs" />
<Compile Include="EventStore\MessageDispatcher.cs" />
<Compile Include="EventStore\NESWireup.cs" />
- <Compile Include="EventStore\Serializer.cs" />
- <Compile Include="EventStore\WireupExtensions.cs" />
+ <Compile Include="EventStore\CompositeSerializer.cs" />
+ <Compile Include="EventStore\NESWireupExtensions.cs" />
<Compile Include="GuidComb.cs" />
<Compile Include="ICommandContextProvider.cs" />
<Compile Include="IEventConversionRunner.cs" />
<Compile Include="IEventConverterFactory.cs" />
<Compile Include="IEventFactory.cs" />
<Compile Include="IEventHandlerFactory.cs" />
+ <Compile Include="IEventMapper.cs" />
<Compile Include="IEventPublisher.cs" />
<Compile Include="IDependencyInjectionContainer.cs" />
<Compile Include="IEventSerializer.cs" />
@@ -103,6 +112,7 @@
<Compile Include="NServiceBus\BusAdapter.cs" />
<Compile Include="NServiceBus\CommandContextProvider.cs" />
<Compile Include="NServiceBus\ConfigureNES.cs" />
+ <Compile Include="NServiceBus\MessageCreatorAdapter.cs" />
<Compile Include="NServiceBus\MessageMapperAdapter.cs" />
<Compile Include="NServiceBus\MessageModule.cs" />
<Compile Include="NServiceBus\MessageSerializerAdapter.cs" />
View
3 src/NES/NServiceBus/BusAdapter.cs
@@ -1,5 +1,4 @@
using System.Collections.Generic;
-using System.Linq;
using NServiceBus;
namespace NES.NServiceBus
@@ -20,7 +19,7 @@ public void Publish(IEnumerable<object> events, Dictionary<string, object> heade
_bus.OutgoingHeaders[header.Key] = header.Value != null ? header.Value.ToString() : null;
}
- foreach (var @event in events.Cast<IMessage>())
+ foreach (var @event in events)
{
foreach (var header in eventHeaders[@event])
{
View
4 src/NES/NServiceBus/ConfigureNES.cs
@@ -14,8 +14,10 @@ public static Configure NES(this Configure config)
config.Configurer.ConfigureComponent<UnitOfWorkManager>(DependencyLifecycle.InstancePerUnitOfWork);
DI.Current.Register<ICommandContextProvider, IBus>(bus => new CommandContextProvider(bus));
- DI.Current.Register<IEventFactory, IMessageMapper>(messageMapper => new MessageMapperAdapter(messageMapper));
+ DI.Current.Register<IEventMapper, IMessageMapper>(messageMapper => new MessageMapperAdapter(messageMapper));
+ DI.Current.Register<IEventFactory, IMessageCreator>(messageCreator => new MessageCreatorAdapter(messageCreator));
DI.Current.Register(() => config.Builder.Build<IMessageMapper>());
+ DI.Current.Register(() => config.Builder.Build<IMessageCreator>());
DI.Current.Register<IEventPublisher, IBus>(bus => new BusAdapter(bus));
DI.Current.Register(() => config.Builder.Build<IBus>());
DI.Current.Register<IEventSerializer, IMessageSerializer>(messageSerializer => new MessageSerializerAdapter(messageSerializer));
View
25 src/NES/NServiceBus/MessageCreatorAdapter.cs
@@ -0,0 +1,25 @@
+using System;
+using NServiceBus;
+
+namespace NES.NServiceBus
+{
+ public class MessageCreatorAdapter : IEventFactory
+ {
+ private readonly IMessageCreator _messageCreator;
+
+ public MessageCreatorAdapter(IMessageCreator messageCreator)
+ {
+ _messageCreator = messageCreator;
+ }
+
+ public T Create<T>(Action<T> action)
+ {
+ return _messageCreator.CreateInstance(action);
+ }
+
+ public object Create(Type type)
+ {
+ return _messageCreator.CreateInstance(type);
+ }
+ }
+}
View
12 src/NES/NServiceBus/MessageMapperAdapter.cs
@@ -1,9 +1,9 @@
-using System;
+using System;
using NServiceBus.MessageInterfaces;
namespace NES.NServiceBus
{
- public class MessageMapperAdapter : IEventFactory
+ public class MessageMapperAdapter : IEventMapper
{
private readonly IMessageMapper _messageMapper;
@@ -12,13 +12,9 @@ public MessageMapperAdapter(IMessageMapper messageMapper)
_messageMapper = messageMapper;
}
- public T Create<T>(Action<T> action)
+ public Type GetMappedTypeFor(Type type)
{
- var @event = (T)_messageMapper.CreateInstance(typeof(T));
-
- action(@event);
-
- return @event;
+ return _messageMapper.GetMappedTypeFor(type);
}
}
}
View
3 src/NES/NServiceBus/MessageSerializerAdapter.cs
@@ -1,5 +1,4 @@
using System.IO;
-using NServiceBus;
using NServiceBus.Serialization;
namespace NES.NServiceBus
@@ -19,7 +18,7 @@ public string Serialize(object @event)
{
var reader = new StreamReader(stream);
- _messageSerializer.Serialize(new[] { (IMessage)@event }, stream);
+ _messageSerializer.Serialize(new[] { @event }, stream);
stream.Position = 0;
return reader.ReadToEnd();
View
1 src/NES/packages.config
@@ -2,5 +2,6 @@
<packages>
<package id="EventStore" version="3.0.11326.44" />
<package id="log4net" version="1.2.10" />
+ <package id="Newtonsoft.Json" version="4.0.8" />
<package id="NServiceBus" version="3.0.0" />
</packages>
View
BIN src/packages/Newtonsoft.Json.4.0.8/Newtonsoft.Json.4.0.8.nupkg
Binary file not shown.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/net20/Newtonsoft.Json.dll
Binary file not shown.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/net20/Newtonsoft.Json.pdb
Binary file not shown.
View
7,722 src/packages/Newtonsoft.Json.4.0.8/lib/net20/Newtonsoft.Json.xml
7,722 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/net35/Newtonsoft.Json.dll
Binary file not shown.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/net35/Newtonsoft.Json.pdb
Binary file not shown.
View
6,845 src/packages/Newtonsoft.Json.4.0.8/lib/net35/Newtonsoft.Json.xml
6,845 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/net40/Newtonsoft.Json.dll
Binary file not shown.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/net40/Newtonsoft.Json.pdb
Binary file not shown.
View
7,004 src/packages/Newtonsoft.Json.4.0.8/lib/net40/Newtonsoft.Json.xml
7,004 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl3-wp/Newtonsoft.Json.dll
Binary file not shown.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl3-wp/Newtonsoft.Json.pdb
Binary file not shown.
View
6,437 src/packages/Newtonsoft.Json.4.0.8/lib/sl3-wp/Newtonsoft.Json.xml
6,437 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl4-windowsphone71/Newtonsoft.Json.dll
Binary file not shown.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl4-windowsphone71/Newtonsoft.Json.pdb
Binary file not shown.
View
6,437 src/packages/Newtonsoft.Json.4.0.8/lib/sl4-windowsphone71/Newtonsoft.Json.xml
6,437 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl4/Newtonsoft.Json.dll
Binary file not shown.
View
BIN src/packages/Newtonsoft.Json.4.0.8/lib/sl4/Newtonsoft.Json.pdb
Binary file not shown.
View
6,467 src/packages/Newtonsoft.Json.4.0.8/lib/sl4/Newtonsoft.Json.xml
6,467 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.

0 comments on commit bbef003

Please sign in to comment.
Something went wrong with that request. Please try again.