blob: 2050c9112957da0f3b39915169c82839615a2b72 [file] [log] [blame]
csharptest0f3540e2011-08-05 20:40:14 -05001using System;
2using System.Text;
3using System.IO;
4using System.Xml;
5using Google.ProtocolBuffers.Serialization;
6
7namespace 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}