private void retrieveCollectionField()

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());
			    }
			}

		}


	}