Lines Matching defs:field
190 FieldDescriptor field;
191 if (jsonFieldMap.TryGetValue(name, out field))
193 if (field.ContainingOneof != null)
199 if (!seenOneofs.Add(field.ContainingOneof))
201 throw new InvalidProtocolBufferException($"Multiple values specified for oneof {field.ContainingOneof.Name}");
204 MergeField(message, field, tokenizer);
214 throw new InvalidProtocolBufferException("Unknown field: " + name);
220 private void MergeField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer)
225 // Clear the field if we see a null token, unless it's for a singular field of type
229 if (field.IsMap || field.IsRepeated ||
230 !(IsGoogleProtobufValueField(field) || IsGoogleProtobufNullValueField(field)))
232 field.Accessor.Clear(message);
238 if (field.IsMap)
240 MergeMapField(message, field, tokenizer);
242 else if (field.IsRepeated)
244 MergeRepeatedField(message, field, tokenizer);
248 var value = ParseSingleValue(field, tokenizer);
249 field.Accessor.SetValue(message, value);
253 private void MergeRepeatedField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer)
258 throw new InvalidProtocolBufferException("Repeated field value was not an array. Token type: " + token.Type);
261 IList list = (IList) field.Accessor.GetValue(message);
270 object value = ParseSingleValue(field, tokenizer);
273 throw new InvalidProtocolBufferException("Repeated field elements cannot be null");
279 private void MergeMapField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer)
288 var type = field.MessageType;
293 throw new InvalidProtocolBufferException("Invalid map field: " + field.FullName);
295 IDictionary dictionary = (IDictionary) field.Accessor.GetValue(message);
314 private static bool IsGoogleProtobufValueField(FieldDescriptor field)
316 return field.FieldType == FieldType.Message &&
317 field.MessageType.FullName == Value.Descriptor.FullName;
320 private static bool IsGoogleProtobufNullValueField(FieldDescriptor field)
322 return field.FieldType == FieldType.Enum &&
323 field.EnumType.FullName == NullValueDescriptor.FullName;
326 private object ParseSingleValue(FieldDescriptor field, JsonTokenizer tokenizer)
333 if (IsGoogleProtobufValueField(field))
337 if (IsGoogleProtobufNullValueField(field))
344 var fieldType = field.FieldType;
349 if (field.MessageType.IsWrapperType)
351 field = field.MessageType.Fields[WrappersReflection.WrapperValueFieldNumber];
352 fieldType = field.FieldType;
358 IMessage subMessage = NewMessageForField(field);
376 return ParseSingleStringValue(field, token.StringValue);
379 return ParseSingleNumberValue(field, token);
383 throw new InvalidProtocolBufferException("Unsupported JSON token type " + token.Type + " for field type " + fieldType);
466 var field = fields[Value.StructValueFieldNumber];
467 var structMessage = NewMessageForField(field);
470 field.Accessor.SetValue(message, structMessage);
475 var field = fields[Value.ListValueFieldNumber];
476 var list = NewMessageForField(field);
479 field.Accessor.SetValue(message, list);
496 var field = message.Descriptor.Fields[Struct.FieldsFieldNumber];
497 MergeMapField(message, field, tokenizer);
583 private static object ParseMapKey(FieldDescriptor field, string keyText)
585 switch (field.FieldType)
614 throw new InvalidProtocolBufferException("Invalid field type for map: " + field.FieldType);
618 private static object ParseSingleNumberValue(FieldDescriptor field, JsonToken token)
625 switch (field.FieldType)
671 throw new InvalidProtocolBufferException($"Unsupported conversion from JSON number for field type {field.FieldType}");
693 private static object ParseSingleStringValue(FieldDescriptor field, string text)
695 switch (field.FieldType)
731 var enumValue = field.EnumType.FindValueByName(text);
734 throw new InvalidProtocolBufferException($"Invalid enum value: {text} for enum type: {field.EnumType.FullName}");
739 throw new InvalidProtocolBufferException($"Unsupported conversion from JSON string for field type {field.FieldType}");
744 /// Creates a new instance of the message type for the given field.
746 private static IMessage NewMessageForField(FieldDescriptor field)
748 return field.MessageType.Parser.CreateTemplate();
977 throw new InvalidProtocolBufferException($"Invalid field mask: {text}");