private Node getNode()

in src/main/java/org/apache/jackrabbit/ocm/manager/objectconverter/impl/ObjectConverterImpl.java [301:321]


	private Node getNode(Node parentNode, ClassDescriptor classDescriptor, String nodeName, Object object) throws RepositoryException{
		if (parentNode == null) return null;
		NodeIterator nodes = parentNode.getNodes(nodeName);
		if (nodes.getSize() == 1) return nodes.nextNode();
		if (classDescriptor.hasUUIdField()){
            String uuidFieldName = classDescriptor.getUuidFieldDescriptor().getFieldName();
            Object objUuid = ReflectionUtils.getNestedProperty(object, uuidFieldName);
        	String currentItemUuid = (objUuid == null) ? null : objUuid.toString();
        	if (currentItemUuid != null){
        		//The Node already exists so we need to update the existing node 
        		//rather than to replace it.
        		return parentNode.getSession().getNodeByIdentifier(currentItemUuid);
        	}
        	else{
        		throw new NullPointerException("Cannot locate the node to update since there is no UUID provided even though, " + classDescriptor.getClassName() + " has been mapped with a UUID field , " + uuidFieldName );
        	}
        		
		}
		return parentNode.getNode(nodeName);
		
	}