public override EventPropertyWriterSPI GetWriter(string propertyName) { if (writablePropertyDescriptors == null) { InitializeWriters(); } var pair = propertyWriters.Get(propertyName); if (pair != null) { return pair.Second; } var property = PropertyParser.ParseAndWalkLaxToSimple(propertyName); if (property is MappedProperty) { var mapProp = (MappedProperty) property; if (!PropertiesIndexes.TryGetValue(mapProp.PropertyNameAtomic, out var index)) { return null; } return new ObjectArrayEventBeanPropertyWriterMapProp(index, mapProp.Key); } if (property is IndexedProperty) { var indexedProp = (IndexedProperty) property; if (!PropertiesIndexes.TryGetValue(indexedProp.PropertyNameAtomic, out var index)) { return null; } return new ObjectArrayEventBeanPropertyWriterIndexedProp(index, indexedProp.Index); } return null; }
public override EventPropertyWriter GetWriter(String propertyName) { if (_writablePropertyDescriptors == null) { InitializeWriters(); } Pair <EventPropertyDescriptor, ObjectArrayEventBeanPropertyWriter> pair = _propertyWriters.Get(propertyName); if (pair != null) { return(pair.Second); } Property property = PropertyParser.ParseAndWalk(propertyName, false); if (property is MappedProperty) { var mapProp = (MappedProperty)property; int index; if (!PropertiesIndexes.TryGetValue(mapProp.PropertyNameAtomic, out index)) { return(null); } return(new ObjectArrayEventBeanPropertyWriterMapProp(index, mapProp.Key)); } if (property is IndexedProperty) { var indexedProp = (IndexedProperty)property; int index; if (!PropertiesIndexes.TryGetValue(indexedProp.PropertyNameAtomic, out index)) { return(null); } return(new ObjectArrayEventBeanPropertyWriterIndexedProp(index, indexedProp.Index)); } return(null); }
private void InitializeWriters() { IList<EventPropertyDescriptor> writeableProps = new List<EventPropertyDescriptor>(); IDictionary<string, Pair<EventPropertyDescriptor, ObjectArrayEventBeanPropertyWriter>> propertyWritersMap = new Dictionary<string, Pair<EventPropertyDescriptor, ObjectArrayEventBeanPropertyWriter>>(); foreach (var prop in PropertyDescriptors) { writeableProps.Add(prop); var propertyName = prop.PropertyName; if (!PropertiesIndexes.TryGetValue(prop.PropertyName, out var index)) { continue; } var eventPropertyWriter = new ObjectArrayEventBeanPropertyWriter(index); propertyWritersMap.Put( propertyName, new Pair<EventPropertyDescriptor, ObjectArrayEventBeanPropertyWriter>(prop, eventPropertyWriter)); } propertyWriters = propertyWritersMap; writablePropertyDescriptors = writeableProps.ToArray(); }