Пример #1
0
        public override EventBeanWriter GetWriter(string[] properties)
        {
            if (_writablePropertyDescriptors == null) {
                InitializeWriters();
            }

            var allSimpleProps = true;
            var writers = new MapEventBeanPropertyWriter[properties.Length];
            for (var i = 0; i < properties.Length; i++) {
                var writerPair = _propertyWriters.Get(properties[i]);
                if (writerPair != null) {
                    writers[i] = writerPair.Second;
                }
                else {
                    writers[i] = (MapEventBeanPropertyWriter) GetWriter(properties[i]);
                    if (writers[i] == null) {
                        return null;
                    }

                    allSimpleProps = false;
                }
            }

            if (allSimpleProps) {
                return new MapEventBeanWriterSimpleProps(properties);
            }

            return new MapEventBeanWriterPerProp(writers);
        }
Пример #2
0
        private void InitializeWriters()
        {
            IList<EventPropertyDescriptor> writeableProps = new List<EventPropertyDescriptor>();
            IDictionary<string, Pair<EventPropertyDescriptor, MapEventBeanPropertyWriter>> propertWritersMap =
                new Dictionary<string, Pair<EventPropertyDescriptor, MapEventBeanPropertyWriter>>();
            foreach (var prop in PropertyDescriptors) {
                writeableProps.Add(prop);
                var propertyName = prop.PropertyName;
                var eventPropertyWriter = new MapEventBeanPropertyWriter(propertyName);
                propertWritersMap.Put(
                    propertyName,
                    new Pair<EventPropertyDescriptor, MapEventBeanPropertyWriter>(prop, eventPropertyWriter));
            }

            _propertyWriters = propertWritersMap;
            _writablePropertyDescriptors = writeableProps.ToArray();
        }