// Look for a ManagementObjectRef
ManagementObjectRef ref = (ManagementObjectRef) property.getAnnotations().get(ManagementObjectRef.class.getName());
String moName = (ref != null ? ref.name() : value.getClass().getName());
String moNameType = (ref != null ? ref.type() : "");
ManagedObject mo = mof.initManagedObject((Serializable) value, moName, moNameType);
return new GenericValueSupport(AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE, mo);
}
else if (propertyType.isArray())
{
ArrayMetaType arrayType = ArrayMetaType.class.cast(propertyType);
if (AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE == arrayType.getElementType())
{
Collection<?> cvalue = getAsCollection(value);
ArrayMetaType moType = new ArrayMetaType(1, AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE);
ArrayValueSupport moArrayValue = new ArrayValueSupport(moType);
List<GenericValueSupport> tmp = new ArrayList<GenericValueSupport>();
for(Object element : cvalue)
{
ManagedObject mo = mof.initManagedObject((Serializable) element, null, null);
tmp.add(new GenericValueSupport(AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE, mo));
}
GenericValueSupport[] mos = new GenericValueSupport[tmp.size()];
moArrayValue.setValue(tmp.toArray(mos));
return moArrayValue;
}
}
else if (propertyType.isCollection())
{
CollectionMetaType collectionType = CollectionMetaType.class.cast(propertyType);
if (AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE == collectionType.getElementType())
{
Collection<?> cvalue = getAsCollection(value);
List<GenericValueSupport> tmp = new ArrayList<GenericValueSupport>();
for(Object element : cvalue)
{
ManagedObject mo = mof.initManagedObject((Serializable) element, null, null);
tmp.add(new GenericValueSupport(AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE, mo));
}
GenericValueSupport[] mos = new GenericValueSupport[tmp.size()];
CollectionMetaType moType = new CollectionMetaType(propertyType.getClassName(), AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE);
return new CollectionValueSupport(moType, tmp.toArray(mos));
}