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);
}