using System; using System.Text; using System.IO; using System.Xml; using Google.ProtocolBuffers.Serialization; namespace Google.ProtocolBuffers { /// /// Extension methods for using serializers on instances of IMessageLite/IBuilderLite /// public static class Extensions { #region IMessageLite Extension /// /// Serializes the message to JSON text. This is a trivial wrapper /// around Serialization.JsonFormatWriter.WriteMessage. /// public static string ToJson(this IMessageLite message) { JsonFormatWriter w = JsonFormatWriter.CreateInstance(); w.WriteMessage(message); return w.ToString(); } /// /// Serializes the message to XML text. This is a trivial wrapper /// around Serialization.XmlFormatWriter.WriteMessage. /// public static string ToXml(this IMessageLite message) { StringWriter w = new StringWriter(new StringBuilder(4096)); XmlFormatWriter.CreateInstance(w).WriteMessage(message); return w.ToString(); } /// /// Serializes the message to XML text using the element name provided. /// This is a trivial wrapper around Serialization.XmlFormatWriter.WriteMessage. /// public static string ToXml(this IMessageLite message, string rootElementName) { StringWriter w = new StringWriter(new StringBuilder(4096)); XmlFormatWriter.CreateInstance(w).WriteMessage(rootElementName, message); return w.ToString(); } #endregion #region IBuilderLite Extensions /// /// Merges a JSON object into this builder and returns /// public static TBuilder MergeFromJson(this TBuilder builder, string jsonText) where TBuilder : IBuilderLite { return JsonFormatReader.CreateInstance(jsonText) .Merge(builder); } /// /// Merges a JSON object into this builder and returns /// public static TBuilder MergeFromJson(this TBuilder builder, TextReader reader) where TBuilder : IBuilderLite { return MergeFromJson(builder, reader, ExtensionRegistry.Empty); } /// /// Merges a JSON object into this builder using the extensions provided and returns /// public static TBuilder MergeFromJson(this TBuilder builder, TextReader reader, ExtensionRegistry extensionRegistry) where TBuilder : IBuilderLite { return JsonFormatReader.CreateInstance(reader) .Merge(builder, extensionRegistry); } /// /// Merges an XML object into this builder and returns /// public static TBuilder MergeFromXml(this TBuilder builder, XmlReader reader) where TBuilder : IBuilderLite { return MergeFromXml(builder, XmlFormatReader.DefaultRootElementName, reader, ExtensionRegistry.Empty); } /// /// Merges an XML object into this builder and returns /// public static TBuilder MergeFromXml(this TBuilder builder, string rootElementName, XmlReader reader) where TBuilder : IBuilderLite { return MergeFromXml(builder, rootElementName, reader, ExtensionRegistry.Empty); } /// /// Merges an XML object into this builder using the extensions provided and returns /// public static TBuilder MergeFromXml(this TBuilder builder, string rootElementName, XmlReader reader, ExtensionRegistry extensionRegistry) where TBuilder : IBuilderLite { return XmlFormatReader.CreateInstance(reader) .Merge(rootElementName, builder, extensionRegistry); } #endregion } }