/// <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; }
/// <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; }
/// <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; }