private void addUuidProperties()

in src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/BeanReferenceMapConverterImpl.java [179:220]


    private void addUuidProperties(Session session, Node parentNode,
                                   CollectionDescriptor collectionDescriptor,
                                   ManageableMap manageableMap)
            throws UnsupportedRepositoryOperationException, RepositoryException, VersionException, LockException, ConstraintViolationException {
        try {
            if (manageableMap == null) {
                return;
            }

            String jcrName = getCollectionJcrName(collectionDescriptor);
            Value[] values = new Value[manageableMap.getSize()];
            ValueFactory valueFactory = session.getValueFactory();
            Map map = (Map) manageableMap.getObjects(); 
            Iterator keyIterator = map.keySet().iterator();
            
            for (int i = 0; i < manageableMap.getSize(); i++) {
                String key = (String) keyIterator.next();
                Object object = map.get(key);
                if (object != null) {
                    ClassDescriptor classDescriptor = mapper.getClassDescriptorByClass(object.getClass());

                    FieldDescriptor fieldDescriptor = classDescriptor.getUuidFieldDescriptor();
                    if (fieldDescriptor == null) {
                        throw new JcrMappingException("The bean doesn't have an uuid - classdescriptor : "
                                + classDescriptor.getClassName());
                    }

                    String uuid = (String) ReflectionUtils.getNestedProperty(object, fieldDescriptor.getFieldName());
                    values[i] = valueFactory.createValue(MapReferenceValueEncoder.encodeKeyAndReference(key, uuid), PropertyType.STRING);
                }
            }

            parentNode.setProperty(jcrName, values);

        }
        catch (Exception e) {
            throw new ObjectContentManagerException("Cannot insert collection field : "
                    + collectionDescriptor.getFieldName()
                    + " of class "
                    + collectionDescriptor.getClassDescriptor().getClassName(), e);
        }
    }