in src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java [793:829]
private void updateBeanFields(Session session, Object object, ClassDescriptor classDescriptor, Node objectNode) {
Iterator beanDescriptorIterator = classDescriptor.getBeanDescriptors().iterator();
while (beanDescriptorIterator.hasNext())
{
BeanDescriptor beanDescriptor = (BeanDescriptor) beanDescriptorIterator.next();
if (!beanDescriptor.isAutoUpdate()) {
continue;
}
Object bean = ReflectionUtils.getNestedProperty(object, beanDescriptor.getFieldName());
String converterClassName = null;
if (null == beanDescriptor.getConverter() || "".equals(beanDescriptor.getConverter()))
{
converterClassName = DEFAULT_BEAN_CONVERTER;
}
else
{
converterClassName = beanDescriptor.getConverter();
}
Object[] param = {this.mapper, this, this.atomicTypeConverterProvider };
BeanConverter beanConverter = (BeanConverter) ReflectionUtils.invokeConstructor(converterClassName, param);
Class beanClass = ReflectionUtils.getPropertyType(object, beanDescriptor.getFieldName());
// if the bean is null, remove existing node
if ((bean == null))
{
beanConverter.remove(session, objectNode, beanDescriptor, mapper.getClassDescriptorByClass(beanClass), bean, classDescriptor, object);
} else
{
beanConverter.update(session, objectNode, beanDescriptor, mapper.getClassDescriptorByClass(beanClass), bean, classDescriptor, object);
}
}
}