csharptest | 0f3540e | 2011-08-05 20:40:14 -0500 | [diff] [blame^] | 1 | using System;
|
| 2 | using System.Text;
|
| 3 | using System.IO;
|
| 4 | using System.Xml;
|
| 5 | using Google.ProtocolBuffers.Serialization;
|
| 6 |
|
| 7 | namespace Google.ProtocolBuffers
|
| 8 | {
|
| 9 | /// <summary>
|
| 10 | /// Extension methods for using serializers on instances of IMessageLite/IBuilderLite
|
| 11 | /// </summary>
|
| 12 | public static class Extensions
|
| 13 | {
|
| 14 | #region IMessageLite Extension
|
| 15 | /// <summary>
|
| 16 | /// Serializes the message to JSON text. This is a trivial wrapper
|
| 17 | /// around Serialization.JsonFormatWriter.WriteMessage.
|
| 18 | /// </summary>
|
| 19 | public static string ToJson(this IMessageLite message)
|
| 20 | {
|
| 21 | JsonFormatWriter w = JsonFormatWriter.CreateInstance();
|
| 22 | w.WriteMessage(message);
|
| 23 | return w.ToString();
|
| 24 | }
|
| 25 | /// <summary>
|
| 26 | /// Serializes the message to XML text. This is a trivial wrapper
|
| 27 | /// around Serialization.XmlFormatWriter.WriteMessage.
|
| 28 | /// </summary>
|
| 29 | public static string ToXml(this IMessageLite message)
|
| 30 | {
|
| 31 | StringWriter w = new StringWriter(new StringBuilder(4096));
|
| 32 | XmlFormatWriter.CreateInstance(w).WriteMessage(message);
|
| 33 | return w.ToString();
|
| 34 | }
|
| 35 | /// <summary>
|
| 36 | /// Serializes the message to XML text using the element name provided.
|
| 37 | /// This is a trivial wrapper around Serialization.XmlFormatWriter.WriteMessage.
|
| 38 | /// </summary>
|
| 39 | public static string ToXml(this IMessageLite message, string rootElementName)
|
| 40 | {
|
| 41 | StringWriter w = new StringWriter(new StringBuilder(4096));
|
| 42 | XmlFormatWriter.CreateInstance(w).WriteMessage(rootElementName, message);
|
| 43 | return w.ToString();
|
| 44 | }
|
| 45 |
|
| 46 | #endregion
|
| 47 | #region IBuilderLite Extensions
|
| 48 | /// <summary>
|
| 49 | /// Merges a JSON object into this builder and returns
|
| 50 | /// </summary>
|
| 51 | public static TBuilder MergeFromJson<TBuilder>(this TBuilder builder, string jsonText) where TBuilder : IBuilderLite
|
| 52 | {
|
| 53 | return JsonFormatReader.CreateInstance(jsonText)
|
| 54 | .Merge(builder);
|
| 55 | }
|
| 56 | /// <summary>
|
| 57 | /// Merges a JSON object into this builder and returns
|
| 58 | /// </summary>
|
| 59 | public static TBuilder MergeFromJson<TBuilder>(this TBuilder builder, TextReader reader) where TBuilder : IBuilderLite
|
| 60 | {
|
| 61 | return MergeFromJson(builder, reader, ExtensionRegistry.Empty);
|
| 62 | }
|
| 63 | /// <summary>
|
| 64 | /// Merges a JSON object into this builder using the extensions provided and returns
|
| 65 | /// </summary>
|
| 66 | public static TBuilder MergeFromJson<TBuilder>(this TBuilder builder, TextReader reader, ExtensionRegistry extensionRegistry) where TBuilder : IBuilderLite
|
| 67 | {
|
| 68 | return JsonFormatReader.CreateInstance(reader)
|
| 69 | .Merge(builder, extensionRegistry);
|
| 70 | }
|
| 71 |
|
| 72 | /// <summary>
|
| 73 | /// Merges an XML object into this builder and returns
|
| 74 | /// </summary>
|
| 75 | public static TBuilder MergeFromXml<TBuilder>(this TBuilder builder, XmlReader reader) where TBuilder : IBuilderLite
|
| 76 | {
|
| 77 | return MergeFromXml(builder, XmlFormatReader.DefaultRootElementName, reader, ExtensionRegistry.Empty);
|
| 78 | }
|
| 79 |
|
| 80 | /// <summary>
|
| 81 | /// Merges an XML object into this builder and returns
|
| 82 | /// </summary>
|
| 83 | public static TBuilder MergeFromXml<TBuilder>(this TBuilder builder, string rootElementName, XmlReader reader) where TBuilder : IBuilderLite
|
| 84 | {
|
| 85 | return MergeFromXml(builder, rootElementName, reader, ExtensionRegistry.Empty);
|
| 86 | }
|
| 87 |
|
| 88 | /// <summary>
|
| 89 | /// Merges an XML object into this builder using the extensions provided and returns
|
| 90 | /// </summary>
|
| 91 | public static TBuilder MergeFromXml<TBuilder>(this TBuilder builder, string rootElementName, XmlReader reader,
|
| 92 | ExtensionRegistry extensionRegistry) where TBuilder : IBuilderLite
|
| 93 | {
|
| 94 | return XmlFormatReader.CreateInstance(reader)
|
| 95 | .Merge(rootElementName, builder, extensionRegistry);
|
| 96 | }
|
| 97 |
|
| 98 | #endregion
|
| 99 | }
|
| 100 | }
|