Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 9e62035

Browse files
committed
Remove dependencies to System.Xml and Microsoft.CSharp in PCL builds
1 parent a217ee6 commit 9e62035

File tree

7 files changed

+60
-40
lines changed

7 files changed

+60
-40
lines changed

src/ServiceStack.Text/Common/DateTimeSerializer.cs

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
using System.Globalization;
1515
using System.IO;
1616
using System.Text;
17-
using System.Xml;
1817
using ServiceStack.Text.Json;
18+
using ServiceStack.Text.Support;
1919

2020
namespace ServiceStack.Text.Common
2121
{
@@ -355,13 +355,18 @@ public static string ToLocalXsdDateTimeString(DateTime dateTime)
355355

356356
public static string ToXsdTimeSpanString(TimeSpan timeSpan)
357357
{
358-
var r = XmlConvert.ToString(timeSpan);
358+
#if !PCL
359+
var r = System.Xml.XmlConvert.ToString(timeSpan);
359360
if (Env.IsMono)
360361
{
361362
// Mono returns DT even if time is 00:00:00
362-
if (r.EndsWith("DT")) return r.Substring(0, r.Length - 1);
363+
if (r.EndsWith("DT"))
364+
return r.Substring(0, r.Length - 1);
363365
}
364366
return r;
367+
#else
368+
return TimeSpanConverter.ToXsdDuration(timeSpan);
369+
#endif
365370
}
366371

367372
public static string ToXsdTimeSpanString(TimeSpan? timeSpan)
@@ -390,23 +395,27 @@ public static TimeSpan ParseNSTimeInterval(string doubleInSecs)
390395
return TimeSpan.FromSeconds(secs);
391396
}
392397

393-
public static TimeSpan ParseXsdTimeSpan(string dateTimeStr)
394-
{
395-
return XmlConvert.ToTimeSpan(dateTimeStr);
396-
}
397-
398398
public static TimeSpan? ParseNullableTimeSpan(string dateTimeStr)
399399
{
400400
return string.IsNullOrEmpty(dateTimeStr)
401401
? (TimeSpan?)null
402402
: ParseTimeSpan(dateTimeStr);
403403
}
404404

405+
public static TimeSpan ParseXsdTimeSpan(string dateTimeStr)
406+
{
407+
#if !PCL
408+
return System.Xml.XmlConvert.ToTimeSpan(dateTimeStr);
409+
#else
410+
return TimeSpanConverter.FromXsdDuration(dateTimeStr);
411+
#endif
412+
}
413+
405414
public static TimeSpan? ParseXsdNullableTimeSpan(string dateTimeStr)
406415
{
407-
return String.IsNullOrEmpty(dateTimeStr) ?
416+
return string.IsNullOrEmpty(dateTimeStr) ?
408417
null :
409-
new TimeSpan?(XmlConvert.ToTimeSpan(dateTimeStr));
418+
new TimeSpan?(ParseXsdTimeSpan(dateTimeStr));
410419
}
411420

412421
public static string ToShortestXsdDateTimeString(DateTime dateTime)

src/ServiceStack.Text/HttpUtils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -784,7 +784,7 @@ public static void UploadFile(this WebRequest webRequest, Stream fileStream, str
784784
UploadFile(webRequest, fileStream, fileName, mimeType);
785785
}
786786

787-
#if !XBOX
787+
#if !(XBOX || PCL)
788788
public static string PostXmlToUrl(this string url, object data,
789789
Action<HttpWebRequest> requestFilter = null, Action<HttpWebResponse> responseFilter = null)
790790
{

src/ServiceStack.Text/Pcl.Dynamic.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//Copyright (c) Service Stack LLC. All Rights Reserved.
22
//License: https://raw.github.com/ServiceStack/ServiceStack/master/license.txt
33

4-
#if !PCL
4+
#if !(PCL || __IOS__ || ANDROID)
55

66
using System;
77
using System.Collections.Generic;

src/ServiceStack.Text/PclExport.Net40.cs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
using System.Text;
1818
using System.Text.RegularExpressions;
1919
using System.Threading;
20-
using System.Xml;
2120
using ServiceStack.Text;
2221
using ServiceStack.Text.Common;
2322
using ServiceStack.Text.Json;
@@ -411,23 +410,37 @@ private Expression GetCastOrConvertExpression(Expression expression, Type target
411410

412411
public override string ToXsdDateTimeString(DateTime dateTime)
413412
{
414-
return XmlConvert.ToString(dateTime.ToStableUniversalTime(), XmlDateTimeSerializationMode.Utc);
413+
#if !(__IOS__ || ANDROID)
414+
return System.Xml.XmlConvert.ToString(dateTime.ToStableUniversalTime(), System.Xml.XmlDateTimeSerializationMode.Utc);
415+
#else
416+
return dateTime.ToStableUniversalTime().ToString(DateTimeSerializer.XsdDateTimeFormat);
417+
#endif
415418
}
416419

417420
public override string ToLocalXsdDateTimeString(DateTime dateTime)
418421
{
419-
return XmlConvert.ToString(dateTime, XmlDateTimeSerializationMode.Local);
422+
#if !(__IOS__ || ANDROID)
423+
return System.Xml.XmlConvert.ToString(dateTime, System.Xml.XmlDateTimeSerializationMode.Local);
424+
#else
425+
return dateTime.ToString(DateTimeSerializer.XsdDateTimeFormat);
426+
#endif
420427
}
421428

422429
public override DateTime ParseXsdDateTime(string dateTimeStr)
423430
{
424-
return XmlConvert.ToDateTime(dateTimeStr, XmlDateTimeSerializationMode.Utc);
431+
#if !(__IOS__ || ANDROID)
432+
return System.Xml.XmlConvert.ToDateTime(dateTimeStr, System.Xml.XmlDateTimeSerializationMode.Utc);
433+
#else
434+
return DateTime.ParseExact(dateTimeStr, DateTimeSerializer.XsdDateTimeFormat, CultureInfo.InvariantCulture);
435+
#endif
425436
}
426437

438+
#if !(__IOS__ || ANDROID)
427439
public override DateTime ParseXsdDateTimeAsUtc(string dateTimeStr)
428440
{
429-
return XmlConvert.ToDateTime(dateTimeStr, XmlDateTimeSerializationMode.Utc).Prepare(parsedAsUtc: true);
441+
return System.Xml.XmlConvert.ToDateTime(dateTimeStr, System.Xml.XmlDateTimeSerializationMode.Utc).Prepare(parsedAsUtc: true);
430442
}
443+
#endif
431444

432445
public override DateTime ToStableUniversalTime(DateTime dateTime)
433446
{
@@ -466,11 +479,6 @@ public override ParseStringDelegate GetJsReaderParseMethod<TSerializer>(Type typ
466479
return null;
467480
}
468481

469-
public override XmlSerializer NewXmlSerializer()
470-
{
471-
return new XmlSerializer();
472-
}
473-
474482
public override void InitHttpWebRequest(HttpWebRequest httpReq,
475483
long? contentLength = null, bool allowAutoRedirect = true, bool keepAlive = true)
476484
{
@@ -1214,7 +1222,7 @@ public static void CompressToStream<TXmlDto>(TXmlDto from, Stream stream)
12141222
throw new NotImplementedException("Compression is not supported on this platform");
12151223
#else
12161224
using (var deflateStream = new System.IO.Compression.DeflateStream(stream, System.IO.Compression.CompressionMode.Compress))
1217-
using (var xw = new XmlTextWriter(deflateStream, Encoding.UTF8))
1225+
using (var xw = new System.Xml.XmlTextWriter(deflateStream, Encoding.UTF8))
12181226
{
12191227
var serializer = new DataContractSerializer(from.GetType());
12201228
serializer.WriteObject(xw, from);

src/ServiceStack.Text/PclExport.cs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
using System.Runtime.Serialization;
1313
using System.Text;
1414
using System.Text.RegularExpressions;
15-
using System.Xml;
1615
using ServiceStack.Text;
1716
using ServiceStack.Text.Common;
1817

@@ -353,26 +352,35 @@ public virtual PropertyGetterDelegate GetFieldGetterFn(FieldInfo fieldInfo)
353352

354353
public virtual string ToXsdDateTimeString(DateTime dateTime)
355354
{
356-
return XmlConvert.ToString(dateTime.ToStableUniversalTime(), DateTimeSerializer.XsdDateTimeFormat);
355+
#if !PCL
356+
return System.Xml.XmlConvert.ToString(dateTime.ToStableUniversalTime(), DateTimeSerializer.XsdDateTimeFormat);
357+
#else
358+
return dateTime.ToStableUniversalTime().ToString(DateTimeSerializer.XsdDateTimeFormat);
359+
#endif
357360
}
358361

359362
public virtual string ToLocalXsdDateTimeString(DateTime dateTime)
360363
{
361-
return XmlConvert.ToString(dateTime, DateTimeSerializer.XsdDateTimeFormat);
364+
#if !PCL
365+
return System.Xml.XmlConvert.ToString(dateTime, DateTimeSerializer.XsdDateTimeFormat);
366+
#else
367+
return dateTime.ToString(DateTimeSerializer.XsdDateTimeFormat);
368+
#endif
362369
}
363370

364371
public virtual DateTime ParseXsdDateTime(string dateTimeStr)
365372
{
366-
return XmlConvert.ToDateTimeOffset(dateTimeStr).DateTime;
373+
#if !PCL
374+
return System.Xml.XmlConvert.ToDateTimeOffset(dateTimeStr).DateTime;
375+
#else
376+
return DateTime.ParseExact(dateTimeStr, DateTimeSerializer.XsdDateTimeFormat, CultureInfo.InvariantCulture);
377+
#endif
367378
}
368379

369380
public virtual DateTime ParseXsdDateTimeAsUtc(string dateTimeStr)
370381
{
371-
var knownDateTime = DateTimeSerializer.ParseManual(dateTimeStr);
372-
if (knownDateTime == null)
373-
throw new ArgumentException("Unable to parse unknown format: {0}".Fmt(dateTimeStr));
374-
375-
return knownDateTime.Value;
382+
return DateTimeSerializer.ParseManual(dateTimeStr, DateTimeKind.Utc)
383+
?? DateTime.ParseExact(dateTimeStr, DateTimeSerializer.XsdDateTimeFormat, CultureInfo.InvariantCulture);
376384
}
377385

378386
public virtual DateTime ToStableUniversalTime(DateTime dateTime)
@@ -406,11 +414,6 @@ public virtual ParseStringDelegate GetJsReaderParseMethod<TSerializer>(Type type
406414
return null;
407415
}
408416

409-
public virtual XmlSerializer NewXmlSerializer()
410-
{
411-
return new XmlSerializer();
412-
}
413-
414417
public virtual void InitHttpWebRequest(HttpWebRequest httpReq,
415418
long? contentLength = null, bool allowAutoRedirect = true, bool keepAlive = true)
416419
{

src/ServiceStack.Text/StringExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -998,7 +998,7 @@ public static int CountOccurrencesOf(this string text, char needle)
998998
return count;
999999
}
10001000

1001-
#if !XBOX
1001+
#if !(XBOX || PCL)
10021002
public static string HexEscape(this string text, params char[] anyCharOf)
10031003
{
10041004
if (String.IsNullOrEmpty(text)) return text;

src/ServiceStack.Text/XmlSerializer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#if !XBOX
1+
#if !(XBOX || PCL)
22
using System;
33
using System.IO;
44
using System.Runtime.Serialization;
@@ -12,7 +12,7 @@ public class XmlSerializer
1212
private static readonly XmlWriterSettings XWSettings = new XmlWriterSettings();
1313
private static readonly XmlReaderSettings XRSettings = new XmlReaderSettings();
1414

15-
public static XmlSerializer Instance = PclExport.Instance.NewXmlSerializer();
15+
public static XmlSerializer Instance = new XmlSerializer();
1616

1717
public XmlSerializer(bool omitXmlDeclaration = false, int maxCharsInDocument = 1024 * 1024)
1818
{

0 commit comments

Comments
 (0)