/** * Ctor. * * @param beanEventType target type * @param properties written properties * @param classpathImportService for resolving write methods * @throws EventBeanManufactureException if the write method lookup fail */ public EventBeanManufacturerBeanForge(BeanEventType beanEventType, WriteablePropertyDescriptor[] properties, ClasspathImportService classpathImportService ) throws EventBeanManufactureException { this.beanEventType = beanEventType; this.properties = properties; this.classpathImportService = classpathImportService; beanInstantiator = BeanInstantiatorFactory.makeInstantiator(beanEventType, classpathImportService); writeMethodsReflection = new Method[properties.length]; boolean primitiveTypeCheck = false; primitiveType = new boolean[properties.length]; for (int i = 0; i < properties.length; i++) { writeMethodsReflection[i] = properties[i].getWriteMethod(); primitiveType[i] = properties[i].getType().isPrimitive(); primitiveTypeCheck |= primitiveType[i]; } hasPrimitiveTypes = primitiveTypeCheck; }
writersMap.put(beanClass, writers); for (WriteablePropertyDescriptor prop : props) { Method writerMethod = prop.getWriteMethod(); writers.put(prop.getPropertyName(), new BeanEventPropertyWriter(beanClass, writerMethod));
writersMap.put(beanClass, writers); for (WriteablePropertyDescriptor prop : props) { Method writerMethod = prop.getWriteMethod(); writers.put(prop.getPropertyName(), new BeanEventPropertyWriter(beanClass, writerMethod));
/** * Ctor. * * @param beanEventType target type * @param service factory for events * @param properties written properties * @param classpathImportService for resolving write methods * @throws EventBeanManufactureException if the write method lookup fail */ public EventBeanManufacturerBean(BeanEventType beanEventType, EventBeanTypedEventFactory service, WriteablePropertyDescriptor[] properties, ClasspathImportService classpathImportService ) throws EventBeanManufactureException { this.beanEventType = beanEventType; this.service = service; beanInstantiator = BeanInstantiatorFactory.makeInstantiator(beanEventType, classpathImportService).getBeanInstantiator(); writeMethodsReflection = new Method[properties.length]; boolean primitiveTypeCheck = false; primitiveType = new boolean[properties.length]; for (int i = 0; i < properties.length; i++) { writeMethodsReflection[i] = properties[i].getWriteMethod(); primitiveType[i] = properties[i].getType().isPrimitive(); primitiveTypeCheck |= primitiveType[i]; } hasPrimitiveTypes = primitiveTypeCheck; }
descriptor.getWriteMethod().invoke(top, new Object[]{coerceProperty}); } catch (IllegalArgumentException e) { throw new ExprValidationException("Illegal argument invoking setter method for property '" + propertyName + "' for class " + applicableClass.getName() + " method " + descriptor.getWriteMethod().getName() + " provided value " + coerceProperty, e); } catch (IllegalAccessException e) { throw new ExprValidationException("Illegal access invoking setter method for property '" + propertyName + "' for class " + applicableClass.getName() + " method " + descriptor.getWriteMethod().getName(), e); } catch (InvocationTargetException e) { throw new ExprValidationException("Exception invoking setter method for property '" + propertyName + "' for class " + applicableClass.getName() + " method " + descriptor.getWriteMethod().getName() + ": " + e.getTargetException().getMessage(), e);
descriptor.getWriteMethod().invoke(top, new Object[]{coerceProperty}); } catch (IllegalArgumentException e) { throw new ExprValidationException("Illegal argument invoking setter method for property '" + propertyName + "' for class " + applicableClass.getName() + " method " + descriptor.getWriteMethod().getName() + " provided value " + coerceProperty, e); } catch (IllegalAccessException e) { throw new ExprValidationException("Illegal access invoking setter method for property '" + propertyName + "' for class " + applicableClass.getName() + " method " + descriptor.getWriteMethod().getName(), e); } catch (InvocationTargetException e) { throw new ExprValidationException("Exception invoking setter method for property '" + propertyName + "' for class " + applicableClass.getName() + " method " + descriptor.getWriteMethod().getName() + ": " + e.getTargetException().getMessage(), e);
private void initializeWriters() { Set<WriteablePropertyDescriptor> writables = PropertyHelper.getWritableProperties(stem.getClazz()); EventPropertyDescriptor[] desc = new EventPropertyDescriptor[writables.size()]; Map<String, Pair<EventPropertyDescriptor, BeanEventPropertyWriter>> writers = new HashMap<String, Pair<EventPropertyDescriptor, BeanEventPropertyWriter>>(); int count = 0; for (final WriteablePropertyDescriptor writable : writables) { EventPropertyDescriptor propertyDesc = new EventPropertyDescriptor(writable.getPropertyName(), writable.getType(), null, false, false, false, false, false); desc[count++] = propertyDesc; writers.put(writable.getPropertyName(), new Pair<>(propertyDesc, new BeanEventPropertyWriter(stem.getClazz(), writable.getWriteMethod()))); } writerMap = writers; writeablePropertyDescriptors = desc; }