-Fixed HTTP requests when resolving DTD urls in XmlNodeConverter
-Added support for reading BSON UUID bytes as Guid
This commit is contained in:
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -406,7 +406,7 @@ namespace Newtonsoft.Json.Tests.Converters
|
||||
[Test]
|
||||
public void XmlDocumentTypeSerialize()
|
||||
{
|
||||
string xml = @"<?xml version=""1.0"" encoding=""utf-8""?><!DOCTYPE STOCKQUOTE PUBLIC ""-//W3C//DTD StockQuote 1.5//EN"" ""http://www.irxml.org/dtd/stockquote_1.5.dtd""><STOCKQUOTE ROWCOUNT=""2""><RESULT><ROW><ASK>0</ASK><BID>0</BID><CHANGE>-16.310</CHANGE><COMPANYNAME>Dow Jones</COMPANYNAME><DATETIME>2014-04-17 15:50:37</DATETIME><DIVIDEND>0</DIVIDEND><EPS>0</EPS><EXCHANGE></EXCHANGE><HIGH>16460.490</HIGH><LASTDATETIME>2014-04-17 15:50:37</LASTDATETIME><LASTPRICE>16408.540</LASTPRICE><LOW>16368.140</LOW><OPEN>16424.140</OPEN><PCHANGE>-0.099</PCHANGE><PE>0</PE><PREVIOUSCLOSE>16424.850</PREVIOUSCLOSE><SHARES>0</SHARES><TICKER>DJII</TICKER><TRADES>0</TRADES><VOLUME>136188700</VOLUME><YEARHIGH>11309.000</YEARHIGH><YEARLOW>9302.280</YEARLOW><YIELD>0</YIELD></ROW><ROW><ASK>0</ASK><BID>0</BID><CHANGE>9.290</CHANGE><COMPANYNAME>NASDAQ</COMPANYNAME><DATETIME>2014-04-17 15:40:01</DATETIME><DIVIDEND>0</DIVIDEND><EPS>0</EPS><EXCHANGE></EXCHANGE><HIGH>4110.460</HIGH><LASTDATETIME>2014-04-17 15:40:01</LASTDATETIME><LASTPRICE>4095.520</LASTPRICE><LOW>4064.700</LOW><OPEN>4080.300</OPEN><PCHANGE>0.227</PCHANGE><PE>0</PE><PREVIOUSCLOSE>4086.230</PREVIOUSCLOSE><SHARES>0</SHARES><TICKER>COMP</TICKER><TRADES>0</TRADES><VOLUME>1784210100</VOLUME><YEARHIGH>4371.710</YEARHIGH><YEARLOW>3154.960</YEARLOW><YIELD>0</YIELD></ROW></RESULT><STATUS>Couldn't find ticker: SPIC?</STATUS><STATUSCODE>2</STATUSCODE></STOCKQUOTE>";
|
||||
string xml = @"<?xml version=""1.0"" encoding=""utf-8""?><!DOCTYPE STOCKQUOTE PUBLIC ""-//W3C//DTD StockQuote 1.5//EN"" ""http://www.idontexistnopenopewhatnope123.org/dtd/stockquote_1.5.dtd""><STOCKQUOTE ROWCOUNT=""2""><RESULT><ROW><ASK>0</ASK><BID>0</BID><CHANGE>-16.310</CHANGE><COMPANYNAME>Dow Jones</COMPANYNAME><DATETIME>2014-04-17 15:50:37</DATETIME><DIVIDEND>0</DIVIDEND><EPS>0</EPS><EXCHANGE></EXCHANGE><HIGH>16460.490</HIGH><LASTDATETIME>2014-04-17 15:50:37</LASTDATETIME><LASTPRICE>16408.540</LASTPRICE><LOW>16368.140</LOW><OPEN>16424.140</OPEN><PCHANGE>-0.099</PCHANGE><PE>0</PE><PREVIOUSCLOSE>16424.850</PREVIOUSCLOSE><SHARES>0</SHARES><TICKER>DJII</TICKER><TRADES>0</TRADES><VOLUME>136188700</VOLUME><YEARHIGH>11309.000</YEARHIGH><YEARLOW>9302.280</YEARLOW><YIELD>0</YIELD></ROW><ROW><ASK>0</ASK><BID>0</BID><CHANGE>9.290</CHANGE><COMPANYNAME>NASDAQ</COMPANYNAME><DATETIME>2014-04-17 15:40:01</DATETIME><DIVIDEND>0</DIVIDEND><EPS>0</EPS><EXCHANGE></EXCHANGE><HIGH>4110.460</HIGH><LASTDATETIME>2014-04-17 15:40:01</LASTDATETIME><LASTPRICE>4095.520</LASTPRICE><LOW>4064.700</LOW><OPEN>4080.300</OPEN><PCHANGE>0.227</PCHANGE><PE>0</PE><PREVIOUSCLOSE>4086.230</PREVIOUSCLOSE><SHARES>0</SHARES><TICKER>COMP</TICKER><TRADES>0</TRADES><VOLUME>1784210100</VOLUME><YEARHIGH>4371.710</YEARHIGH><YEARLOW>3154.960</YEARLOW><YIELD>0</YIELD></ROW></RESULT><STATUS>Couldn't find ticker: SPIC?</STATUS><STATUSCODE>2</STATUSCODE></STOCKQUOTE>";
|
||||
|
||||
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);
|
||||
|
||||
@@ -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")]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)]
|
||||
|
||||
Reference in New Issue
Block a user