aboutsummaryrefslogtreecommitdiff
path: root/csharp/ProtocolBuffers
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2008-08-14 20:35:24 +0100
committerJon Skeet <skeet@pobox.com>2008-08-14 20:35:24 +0100
commitba02091ef822ffa9248fdd6450703e5ff045838e (patch)
tree9ca66f702a890ec4f8740a69857d87cf6e439280 /csharp/ProtocolBuffers
parentbef2caf5e49dbcf6b926d01cfb0948dedee49c93 (diff)
downloadprotobuf-ba02091ef822ffa9248fdd6450703e5ff045838e.tar.gz
protobuf-ba02091ef822ffa9248fdd6450703e5ff045838e.tar.bz2
protobuf-ba02091ef822ffa9248fdd6450703e5ff045838e.zip
New unit tests and corresponding bug fixes.
Diffstat (limited to 'csharp/ProtocolBuffers')
-rw-r--r--csharp/ProtocolBuffers/Descriptors/MessageDescriptor.cs7
-rw-r--r--csharp/ProtocolBuffers/Descriptors/MethodDescriptor.cs2
-rw-r--r--csharp/ProtocolBuffers/Descriptors/ServiceDescriptor.cs9
-rw-r--r--csharp/ProtocolBuffers/DynamicMessage.cs4
-rw-r--r--csharp/ProtocolBuffers/FieldSet.cs9
5 files changed, 28 insertions, 3 deletions
diff --git a/csharp/ProtocolBuffers/Descriptors/MessageDescriptor.cs b/csharp/ProtocolBuffers/Descriptors/MessageDescriptor.cs
index b733fb93..02343937 100644
--- a/csharp/ProtocolBuffers/Descriptors/MessageDescriptor.cs
+++ b/csharp/ProtocolBuffers/Descriptors/MessageDescriptor.cs
@@ -34,6 +34,13 @@ namespace Google.ProtocolBuffers.Descriptors {
}
/// <value>
+ /// If this is a nested type, get the outer descriptor, otherwise null.
+ /// </value>
+ public MessageDescriptor ContainingType {
+ get { return containingType; }
+ }
+
+ /// <value>
/// An unmodifiable list of this message type's fields.
/// </value>
public IList<FieldDescriptor> Fields {
diff --git a/csharp/ProtocolBuffers/Descriptors/MethodDescriptor.cs b/csharp/ProtocolBuffers/Descriptors/MethodDescriptor.cs
index efc3fa4c..4b4dc707 100644
--- a/csharp/ProtocolBuffers/Descriptors/MethodDescriptor.cs
+++ b/csharp/ProtocolBuffers/Descriptors/MethodDescriptor.cs
@@ -28,7 +28,7 @@ namespace Google.ProtocolBuffers.Descriptors {
/// The method's input type.
/// </value>
public MessageDescriptor OutputType {
- get { return inputType; }
+ get { return outputType; }
}
internal MethodDescriptor(MethodDescriptorProto proto, FileDescriptor file,
diff --git a/csharp/ProtocolBuffers/Descriptors/ServiceDescriptor.cs b/csharp/ProtocolBuffers/Descriptors/ServiceDescriptor.cs
index d7c6f3a3..67ef0418 100644
--- a/csharp/ProtocolBuffers/Descriptors/ServiceDescriptor.cs
+++ b/csharp/ProtocolBuffers/Descriptors/ServiceDescriptor.cs
@@ -27,6 +27,15 @@ namespace Google.ProtocolBuffers.Descriptors {
public IList<MethodDescriptor> Methods {
get { return methods; }
}
+
+ /// <summary>
+ /// Finds a method by name.
+ /// </summary>
+ /// <param name="name">The unqualified name of the method (e.g. "Foo").</param>
+ /// <returns>The method's decsriptor, or null if not found.</returns>
+ public MethodDescriptor FindMethodByName(String name) {
+ return File.DescriptorPool.FindSymbol<MethodDescriptor>(FullName + "." + name);
+ }
internal void CrossLink() {
foreach (MethodDescriptor method in methods) {
diff --git a/csharp/ProtocolBuffers/DynamicMessage.cs b/csharp/ProtocolBuffers/DynamicMessage.cs
index 5b22d38b..5ffbdfbb 100644
--- a/csharp/ProtocolBuffers/DynamicMessage.cs
+++ b/csharp/ProtocolBuffers/DynamicMessage.cs
@@ -233,6 +233,10 @@ namespace Google.ProtocolBuffers {
this.unknownFields = UnknownFieldSet.DefaultInstance;
}
+ public DynamicMessage Build() {
+ return (DynamicMessage)((IBuilder)this).Build();
+ }
+
public override IBuilder Clear() {
fields.Clear();
return this;
diff --git a/csharp/ProtocolBuffers/FieldSet.cs b/csharp/ProtocolBuffers/FieldSet.cs
index bca7e5b5..4f660533 100644
--- a/csharp/ProtocolBuffers/FieldSet.cs
+++ b/csharp/ProtocolBuffers/FieldSet.cs
@@ -325,8 +325,13 @@ namespace Google.ProtocolBuffers {
if (fields.TryGetValue(field, out result)) {
return result;
}
-
- // This will just do the right thing
+ if (field.MappedType == MappedType.Message) {
+ if (field.IsRepeated) {
+ return new List<object>();
+ } else {
+ return null;
+ }
+ }
return field.DefaultValue;
}
set {