/** * Registers set injection point. * * @param beanName bean name * @param property set property name */ public void registerPetiteSetInjectionPoint(final String beanName, final String property) { BeanDefinition beanDefinition = lookupExistingBeanDefinition(beanName); ClassDescriptor cd = ClassIntrospector.get().lookup(beanDefinition.type); PropertyDescriptor propertyDescriptor = cd.getPropertyDescriptor(property, true); if (propertyDescriptor == null) { throw new PetiteException("Property not found: " + beanDefinition.type.getName() + '#' + property); } SetInjectionPoint sip = new SetInjectionPoint(propertyDescriptor); beanDefinition.addSetInjectionPoint(sip); }
protected void wireSets() { for (final SetInjectionPoint sip : definition().sets) { String[] beanNames = pc.resolveBeanNamesForType(sip.targetClass); Collection beans = sip.createSet(beanNames.length); for (String beanName : beanNames) { if (!beanName.equals(definition().name)) { Object value = pc.getBean(beanName); beans.add(value); } } //BeanUtil.setDeclaredProperty(bean, sip.field.getName(), beans); final Setter setter = sip.propertyDescriptor.getSetter(true); try { setter.invokeSetter(bean, beans); } catch (Exception ex) { throw new PetiteException("Wiring failed", ex); } } }
public SetInjectionPoint(final PropertyDescriptor propertyDescriptor) { Objects.requireNonNull(propertyDescriptor); this.propertyDescriptor = propertyDescriptor; this.type = resolveSetType(propertyDescriptor); // resolve component type Class targetClass = null; MethodDescriptor writeMethodDescriptor = propertyDescriptor.getWriteMethodDescriptor(); FieldDescriptor fieldDescriptor = propertyDescriptor.getFieldDescriptor(); if (writeMethodDescriptor != null) { targetClass = writeMethodDescriptor.getSetterRawComponentType(); } if (targetClass == null && fieldDescriptor != null) { targetClass = fieldDescriptor.getRawComponentType(); } this.targetClass = targetClass; if (targetClass == null) { throw new PetiteException("Unknown Petite set component type " + type.getSimpleName() + '.' + propertyDescriptor.getName()); } }
list.add(new SetInjectionPoint(propertyDescriptor));
protected void wireSets() { for (final SetInjectionPoint sip : definition().sets) { String[] beanNames = pc.resolveBeanNamesForType(sip.targetClass); Collection beans = sip.createSet(beanNames.length); for (String beanName : beanNames) { if (!beanName.equals(definition().name)) { Object value = pc.getBean(beanName); beans.add(value); } } //BeanUtil.setDeclaredProperty(bean, sip.field.getName(), beans); final Setter setter = sip.propertyDescriptor.getSetter(true); try { setter.invokeSetter(bean, beans); } catch (Exception ex) { throw new PetiteException("Wiring failed", ex); } } }
public SetInjectionPoint(final PropertyDescriptor propertyDescriptor) { Objects.requireNonNull(propertyDescriptor); this.propertyDescriptor = propertyDescriptor; this.type = resolveSetType(propertyDescriptor); // resolve component type Class targetClass = null; MethodDescriptor writeMethodDescriptor = propertyDescriptor.getWriteMethodDescriptor(); FieldDescriptor fieldDescriptor = propertyDescriptor.getFieldDescriptor(); if (writeMethodDescriptor != null) { targetClass = writeMethodDescriptor.getSetterRawComponentType(); } if (targetClass == null && fieldDescriptor != null) { targetClass = fieldDescriptor.getRawComponentType(); } this.targetClass = targetClass; if (targetClass == null) { throw new PetiteException("Unknown Petite set component type " + type.getSimpleName() + '.' + propertyDescriptor.getName()); } }
/** * Registers set injection point. * * @param beanName bean name * @param property set property name */ public void registerPetiteSetInjectionPoint(final String beanName, final String property) { BeanDefinition beanDefinition = lookupExistingBeanDefinition(beanName); ClassDescriptor cd = ClassIntrospector.get().lookup(beanDefinition.type); PropertyDescriptor propertyDescriptor = cd.getPropertyDescriptor(property, true); if (propertyDescriptor == null) { throw new PetiteException("Property not found: " + beanDefinition.type.getName() + '#' + property); } SetInjectionPoint sip = new SetInjectionPoint(propertyDescriptor); beanDefinition.addSetInjectionPoint(sip); }
list.add(new SetInjectionPoint(propertyDescriptor));