private void updateManagableMap()

in src/main/java/org/apache/jackrabbit/ocm/manager/collectionconverter/impl/DefaultCollectionConverterImpl.java [306:346]


	private void updateManagableMap(Session session, Node parentNode,
									CollectionDescriptor collectionDescriptor,
									ManageableObjects objects, String jcrName)
									throws PathNotFoundException, RepositoryException,
									VersionException, LockException, ConstraintViolationException,
									ItemExistsException {
		
		
		ClassDescriptor elementClassDescriptor = mapper.getClassDescriptorByClass( ReflectionUtils.forName(collectionDescriptor.getElementClassName()));
        Node collectionNode = parentNode.getNode(jcrName);

        Map map = (Map) objects.getObjects(); 
        Map updatedItems = new HashMap();
		for (Object key : map.keySet())
		{
			Object item = map.get(key);
			// Update existing JCR Nodes
            if (collectionNode.hasNode(key.toString())) {
                objectConverter.update(session, collectionNode, key.toString(), item);
            }
            else {
                // Add new collection elements
                objectConverter.insert(session, collectionNode, key.toString(), item);
            } 
            updatedItems.put(key.toString(), item);
		}

		// Delete the nodes that are not present in the Map 
        NodeIterator nodeIterator = collectionNode.getNodes();
        List removeNodes = new ArrayList();
        while (nodeIterator.hasNext()) {
            Node child = nodeIterator.nextNode();
            if (!updatedItems.containsKey(child.getName())) {
                    removeNodes.add(child);
            }
        }
        for(int i = 0; i < removeNodes.size(); i++) {
            ((Node) removeNodes.get(i)).remove();
        }

	}