diff --git a/Build/build.ps1 b/Build/build.ps1 index 8aa8f63a..b4115408 100644 --- a/Build/build.ps1 +++ b/Build/build.ps1 @@ -59,7 +59,13 @@ task Build -depends Clean { Write-Host -ForegroundColor Green "Building " $name Write-Host -ForegroundColor Green "Signed " $sign + Write-Host + Write-Host "Restoring" + exec { .\Tools\NuGet\NuGet.exe restore ".\Src\$name.sln" | Out-Default } "Error restoring $name" + + Write-Host + Write-Host "Building" exec { msbuild "/t:Clean;Rebuild" /p:Configuration=Release "/p:Platform=Any CPU" /p:OutputPath=bin\Release\$finalDir\ /p:AssemblyOriginatorKeyFile=$signKeyPath "/p:SignAssembly=$sign" "/p:TreatWarningsAsErrors=$treatWarningsAsErrors" "/p:VisualStudioVersion=12.0" (GetConstants $build.Constants $sign) ".\Src\$name.sln" | Out-Default } "Error building $name" } } diff --git a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs index 344abd11..41ad69f2 100644 --- a/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs +++ b/Src/Newtonsoft.Json.Tests/Bson/BsonReaderTests.cs @@ -150,8 +150,8 @@ namespace Newtonsoft.Json.Tests.Bson Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.Bytes, reader.TokenType); - CollectionAssert.AreEqual(g.ToByteArray(), (byte[])reader.Value); - Assert.AreEqual(typeof(byte[]), reader.ValueType); + Assert.AreEqual(g, reader.Value); + Assert.AreEqual(typeof(Guid), reader.ValueType); Assert.IsTrue(reader.Read()); Assert.AreEqual(JsonToken.EndArray, reader.TokenType); @@ -1603,5 +1603,33 @@ namespace Newtonsoft.Json.Tests.Bson #endif Assert.IsTrue(binder.BindToTypeCalled); } + + [Test] + public void GuidsShouldBeProperlyDeserialised() + { + Guid g = new Guid("822C0CE6-CC42-4753-A3C3-26F0684A4B88"); + + MemoryStream ms = new MemoryStream(); + BsonWriter writer = new BsonWriter(ms); + writer.WriteStartObject(); + writer.WritePropertyName("TheGuid"); + writer.WriteValue(g); + writer.WriteEndObject(); + writer.Flush(); + + byte[] bytes = ms.ToArray(); + + BsonReader reader = new BsonReader(new MemoryStream(bytes)); + Assert.IsTrue(reader.Read()); + Assert.IsTrue(reader.Read()); + + Assert.IsTrue(reader.Read()); + Assert.AreEqual(JsonToken.Bytes, reader.TokenType); + Assert.AreEqual(typeof(Guid), reader.ValueType); + Assert.AreEqual(g, (Guid)reader.Value); + + Assert.IsTrue(reader.Read()); + Assert.IsFalse(reader.Read()); + } } } \ No newline at end of file diff --git a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs index 2e06b80c..ccd41e58 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs @@ -406,7 +406,7 @@ namespace Newtonsoft.Json.Tests.Converters [Test] public void XmlDocumentTypeSerialize() { - string xml = @"00-16.310Dow Jones2014-04-17 15:50:370016460.4902014-04-17 15:50:3716408.54016368.14016424.140-0.099016424.8500DJII013618870011309.0009302.2800009.290NASDAQ2014-04-17 15:40:01004110.4602014-04-17 15:40:014095.5204064.7004080.3000.22704086.2300COMP017842101004371.7103154.9600Couldn't find ticker: SPIC?2"; + string xml = @"00-16.310Dow Jones2014-04-17 15:50:370016460.4902014-04-17 15:50:3716408.54016368.14016424.140-0.099016424.8500DJII013618870011309.0009302.2800009.290NASDAQ2014-04-17 15:40:01004110.4602014-04-17 15:40:014095.5204064.7004080.3000.22704086.2300COMP017842101004371.7103154.9600Couldn't find ticker: SPIC?2"; string expected = @"{ ""?xml"": { @@ -416,7 +416,7 @@ namespace Newtonsoft.Json.Tests.Converters ""!DOCTYPE"": { ""@name"": ""STOCKQUOTE"", ""@public"": ""-//W3C//DTD StockQuote 1.5//EN"", - ""@system"": ""http://www.irxml.org/dtd/stockquote_1.5.dtd"" + ""@system"": ""http://www.idontexistnopenopewhatnope123.org/dtd/stockquote_1.5.dtd"" }, ""STOCKQUOTE"": { ""@ROWCOUNT"": ""2"", @@ -480,6 +480,7 @@ namespace Newtonsoft.Json.Tests.Converters }"; XmlDocument doc1 = new XmlDocument(); + doc1.XmlResolver = null; doc1.LoadXml(xml); string json1 = JsonConvert.SerializeXmlNode(doc1, Formatting.Indented); diff --git a/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs index dd92fe1a..eac7b865 100644 --- a/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs +++ b/Src/Newtonsoft.Json.Tests/Properties/AssemblyInfo.cs @@ -75,4 +75,4 @@ using System.Security; // by using the '*' as shown below: [assembly: AssemblyVersion("6.0.0.0")] -[assembly: AssemblyFileVersion("6.0.3.17312")] +[assembly: AssemblyFileVersion("6.0.3.17414")] diff --git a/Src/Newtonsoft.Json/Bson/BsonReader.cs b/Src/Newtonsoft.Json/Bson/BsonReader.cs index 2a68d583..a5b286d6 100644 --- a/Src/Newtonsoft.Json/Bson/BsonReader.cs +++ b/Src/Newtonsoft.Json/Bson/BsonReader.cs @@ -536,7 +536,14 @@ namespace Newtonsoft.Json.Bson break; } case BsonType.Binary: - SetToken(JsonToken.Bytes, ReadBinary()); + BsonBinaryType binaryType; + byte[] data = ReadBinary(out binaryType); + + object value = (binaryType != BsonBinaryType.Uuid) + ? data + : (object)new Guid(data); + + SetToken(JsonToken.Bytes, value); break; case BsonType.Undefined: SetToken(JsonToken.Undefined); @@ -602,11 +609,11 @@ namespace Newtonsoft.Json.Bson } } - private byte[] ReadBinary() + private byte[] ReadBinary(out BsonBinaryType binaryType) { int dataLength = ReadInt32(); - BsonBinaryType binaryType = (BsonBinaryType)ReadByte(); + binaryType = (BsonBinaryType)ReadByte(); #pragma warning disable 612,618 // the old binary type has the data length repeated in the data for some reason diff --git a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs index 67ba7454..8e8570f9 100644 --- a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs +++ b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs @@ -1261,6 +1261,9 @@ namespace Newtonsoft.Json.Converters throw new JsonSerializationException("XmlNodeConverter only supports deserializing XmlDocuments"); XmlDocument d = new XmlDocument(); + // prevent http request when resolving any DTD references + d.XmlResolver = null; + document = new XmlDocumentWrapper(d); rootNode = document; } diff --git a/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs b/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs index 917f8b38..6db7afc1 100644 --- a/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs +++ b/Src/Newtonsoft.Json/Properties/AssemblyInfo.cs @@ -91,5 +91,5 @@ using System.Security; // by using the '*' as shown below: [assembly: AssemblyVersion("6.0.0.0")] -[assembly: AssemblyFileVersion("6.0.3.17312")] +[assembly: AssemblyFileVersion("6.0.3.17414")] [assembly: CLSCompliant(true)]