Ejemplo n.º 1
0
        /// <summary>
        /// Ctor.
        /// </summary>
        /// <param name="jsonEventType">target type</param>
        /// <param name="service">factory for events</param>
        /// <param name="properties">written properties</param>
        /// <param name="classpathImportService">for resolving write methods</param>
        /// <throws>EventBeanManufactureException if the write method lookup fail</throws>
        public EventBeanManufacturerJsonProvided(
            JsonEventType jsonEventType,
            EventBeanTypedEventFactory service,
            WriteablePropertyDescriptor[] properties,
            ImportService classpathImportService)
        {
            this._jsonEventType = jsonEventType;
            this._service       = service;

            _beanInstantiator = new BeanInstantiatorForgeByNewInstanceReflection(jsonEventType.UnderlyingType);

            _writeFieldsReflection = new FieldInfo[properties.Length];
            var primitiveTypeCheck = false;

            _primitiveType = new bool[properties.Length];
            for (var i = 0; i < properties.Length; i++)
            {
                var propertyName = properties[i].PropertyName;
                var field        = jsonEventType.Detail.FieldDescriptors.Get(propertyName);
                _writeFieldsReflection[i] = field.OptionalField;
                _primitiveType[i]         = properties[i].PropertyType.IsPrimitive;
                primitiveTypeCheck       |= _primitiveType[i];
            }

            _hasPrimitiveTypes = primitiveTypeCheck;
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Ctor.
        /// </summary>
        /// <param name="beanEventType">target type</param>
        /// <param name="service">factory for events</param>
        /// <param name="properties">written properties</param>
        /// <param name="importService">for resolving write methods</param>
        /// <throws>EventBeanManufactureException if the write method lookup fail</throws>
        public EventBeanManufacturerBean(
            BeanEventType beanEventType,
            EventBeanTypedEventFactory service,
            WriteablePropertyDescriptor[] properties,
            ImportService importService)
        {
            this.beanEventType = beanEventType;
            this.service = service;

            beanInstantiator = BeanInstantiatorFactory.MakeInstantiator(beanEventType, importService)
                .BeanInstantiator;

            writeMembersReflection = new MemberInfo[properties.Length];
            var primitiveTypeCheck = false;
            primitiveType = new bool[properties.Length];
            for (var i = 0; i < properties.Length; i++) {
                writeMembersReflection[i] = properties[i].WriteMember;
                primitiveType[i] = properties[i].PropertyType.IsValueType;
                primitiveTypeCheck |= primitiveType[i];
            }

            hasPrimitiveTypes = primitiveTypeCheck;
        }
Ejemplo n.º 3
0
        /// <summary>Ctor. </summary>
        /// <param name="beanEventType">target type</param>
        /// <param name="service">factory for events</param>
        /// <param name="properties">written properties</param>
        /// <param name="engineImportService">for resolving write methods</param>
        /// <throws>EventBeanManufactureException if the write method lookup fail</throws>
        public EventBeanManufacturerBean(BeanEventType beanEventType,
                                         EventAdapterService service,
                                         IList <WriteablePropertyDescriptor> properties,
                                         EngineImportService engineImportService)
        {
            _beanEventType = beanEventType;
            _service       = service;

            _beanInstantiator = BeanInstantiatorFactory.MakeInstantiator(beanEventType, engineImportService);

            _writeMethodsReflection = new MethodInfo[properties.Count];
            if (beanEventType.FastClass != null)
            {
                _writeMethodsFastClass = new FastMethod[properties.Count];
            }
            else
            {
                _writeMethodsFastClass = null;
            }

            bool primitiveTypeCheck = false;

            _primitiveType = new bool[properties.Count];
            for (int i = 0; i < properties.Count; i++)
            {
                _writeMethodsReflection[i] = properties[i].WriteMethod;
                if (beanEventType.FastClass != null)
                {
                    _writeMethodsFastClass[i] = beanEventType.FastClass.GetMethod(properties[i].WriteMethod);
                }

                _primitiveType[i]   = properties[i].PropertyType.IsPrimitive;
                primitiveTypeCheck |= _primitiveType[i];
            }
            _hasPrimitiveTypes = primitiveTypeCheck;
        }