in src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java [723:760]
private void retrieveCollectionField(Session session, CollectionDescriptor collectionDescriptor, Node parentNode, Object object, boolean forceToRetrieve)
{
if (!collectionDescriptor.isAutoRetrieve() && !forceToRetrieve) {
return;
}
CollectionConverter collectionConverter = this.getCollectionConverter(session, collectionDescriptor);
Class collectionFieldClass = ReflectionUtils.getPropertyType(object, collectionDescriptor.getFieldName());
if (collectionDescriptor.isProxy()) {
Object proxy = proxyManager.createCollectionProxy(session, collectionConverter, parentNode,
collectionDescriptor, collectionFieldClass);
ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), proxy);
}
else
{
ManageableObjects objects = collectionConverter.getCollection(session, parentNode, collectionDescriptor, collectionFieldClass);
if (objects==null)
{
ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), null);
}
else
{
// TODO: find another for managing custom ManageableObjects classes
if ( ! objects.getClass().equals(ManageableCollectionImpl.class) &&
! objects.getClass().equals(ManageableMapImpl.class))
{
ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), objects);
}
else
{
ReflectionUtils.setNestedProperty(object, collectionDescriptor.getFieldName(), objects.getObjects());
}
}
}
}