/**
* Invokes preUpdate callbacks and events for given document cascading them to embedded documents as well.
*
* @param ClassMetadata $class
* @param object $document
*/
public function preUpdate(ClassMetadata $class, $document)
{
if (!empty($class->lifecycleCallbacks[Events::preUpdate])) {
$class->invokeLifecycleCallbacks(Events::preUpdate, $document, array(new PreUpdateEventArgs($document, $this->dm, $this->uow->getDocumentChangeSet($document))));
$this->uow->recomputeSingleDocumentChangeSet($class, $document);
}
$this->evm->dispatchEvent(Events::preUpdate, new PreUpdateEventArgs($document, $this->dm, $this->uow->getDocumentChangeSet($document)));
$this->cascadePreUpdate($class, $document);
}