* @param cascade kind of cascade used for dependent properties
* @param objectsBeingUpdated map containing subgraph of obejcts currently being updated, this is used to avoid loops, and NOT as a cache
* @return updated object
*/
public <DataType> Object performUpdate(BluePrintsBackedFinderService<DataType, ?> service, String objectVertexId, Class<?> valueClass, Map<Property, Collection<CascadeType>> containedProperties, Object toUpdate, CascadeType cascade, Map<String, Object> objectsBeingUpdated) {
IndexableGraph database = service.getDatabase();
Vertex objectVertex = GraphUtils.locateVertex(database, Properties.vertexId, objectVertexId);
// it's in fact an object creation
if(objectVertex==null) {
if (logger.isLoggable(Level.FINER)) {
logger.log(Level.FINER, "object "+objectVertexId.toString()+" has never before been seen in graph, so create central node for it");