in src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/MultiValueCollectionConverterImpl.java [72:106]
protected void doInsertCollection(Session session,
Node parentNode,
CollectionDescriptor collectionDescriptor,
ManageableObjects objects) throws RepositoryException {
try {
if (objects == null) {
return;
}
String jcrName = getCollectionJcrName(collectionDescriptor);
Value[] values = new Value[objects.getSize()];
ValueFactory valueFactory = session.getValueFactory();
Iterator collectionIterator = objects.getIterator();
for (int i = 0; i < objects.getSize(); i++) {
Object fieldValue = collectionIterator.next();
AtomicTypeConverter atomicTypeConverter = (AtomicTypeConverter) atomicTypeConverters
.get(fieldValue.getClass());
//If there is no proper conversion strategy defined for a specific bean type
//then system will make a best effort conversion strategy using UndefinedTypeConverter.
//@author:Boni Gopalan
if (atomicTypeConverter == null){
atomicTypeConverter = new UndefinedTypeConverterImpl();
}
values[i] = atomicTypeConverter.getValue(valueFactory, fieldValue);
}
parentNode.setProperty(jcrName, values);
}
catch(ValueFormatException vfe) {
throw new ObjectContentManagerException("Cannot insert collection field : "
+ collectionDescriptor.getFieldName()
+ " of class "
+ collectionDescriptor.getClassDescriptor().getClassName(), vfe);
}
}