aboutsummaryrefslogtreecommitdiff
path: root/src/ProtocolBuffers/GeneratedMessage.cs
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2011-06-11 10:41:57 -0500
committerrogerk <devnull@localhost>2011-06-11 10:41:57 -0500
commitf292523df9d3a754e496f90bc26c0995a1d332a4 (patch)
treefba719d05650571b8f7f62bbe6bbcb8ff0032244 /src/ProtocolBuffers/GeneratedMessage.cs
parent7fc785c1d463c4424cf3e3c8d7fbe796e0197b70 (diff)
downloadprotobuf-f292523df9d3a754e496f90bc26c0995a1d332a4.tar.gz
protobuf-f292523df9d3a754e496f90bc26c0995a1d332a4.tar.bz2
protobuf-f292523df9d3a754e496f90bc26c0995a1d332a4.zip
Added convenience methods for to/from xml and json
Diffstat (limited to 'src/ProtocolBuffers/GeneratedMessage.cs')
-rw-r--r--src/ProtocolBuffers/GeneratedMessage.cs32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/ProtocolBuffers/GeneratedMessage.cs b/src/ProtocolBuffers/GeneratedMessage.cs
index 0ec02e88..d030a17f 100644
--- a/src/ProtocolBuffers/GeneratedMessage.cs
+++ b/src/ProtocolBuffers/GeneratedMessage.cs
@@ -50,7 +50,7 @@ namespace Google.ProtocolBuffers
/// </summary>
public abstract class GeneratedMessage<TMessage, TBuilder> : AbstractMessage<TMessage, TBuilder>
where TMessage : GeneratedMessage<TMessage, TBuilder>
- where TBuilder : GeneratedBuilder<TMessage, TBuilder>
+ where TBuilder : GeneratedBuilder<TMessage, TBuilder>, new()
{
private UnknownFieldSet unknownFields = UnknownFieldSet.DefaultInstance;
@@ -175,5 +175,35 @@ namespace Google.ProtocolBuffers
{
unknownFields = fieldSet;
}
+
+ public static TMessage ParseFromJson(string jsonText)
+ {
+ return Serialization.JsonFormatReader.CreateInstance(jsonText)
+ .Merge(new TBuilder())
+ .Build();
+ }
+
+ public static TMessage ParseFromJson(System.IO.TextReader reader)
+ { return ParseFromJson(reader, ExtensionRegistry.Empty); }
+
+ public static TMessage ParseFromJson(System.IO.TextReader reader, ExtensionRegistry extensionRegistry)
+ {
+ return Serialization.JsonFormatReader.CreateInstance(reader)
+ .Merge(new TBuilder(), extensionRegistry)
+ .Build();
+ }
+
+ public static TMessage ParseFromXml(System.Xml.XmlReader reader)
+ { return ParseFromXml(Serialization.XmlFormatReader.DefaultRootElementName, reader, ExtensionRegistry.Empty); }
+
+ public static TMessage ParseFromXml(string rootElementName, System.Xml.XmlReader reader)
+ { return ParseFromXml(rootElementName, reader, ExtensionRegistry.Empty); }
+
+ public static TMessage ParseFromXml(string rootElementName, System.Xml.XmlReader reader, ExtensionRegistry extensionRegistry)
+ {
+ return Serialization.XmlFormatReader.CreateInstance(reader)
+ .Merge(rootElementName, new TBuilder(), extensionRegistry)
+ .Build();
+ }
}
} \ No newline at end of file