/**
  * Executes the queued restorations.
  */
 private function executeRestores()
 {
     $deletedFieldName = $this->configuration->getDeletedFieldName();
     $persisters = array();
     foreach ($this->restoreBy as $className => $criterias) {
         $persister = $this->getDocumentPersister($className);
         $persisters[$className] = $persister;
         foreach ($criterias as $criteria) {
             $persister->addRestoreBy($criteria);
         }
     }
     $documentRestores = array();
     foreach ($this->documentRestores as $document) {
         $className = get_class($document);
         $documentRestores[$className][] = $document;
         $persister = $this->getDocumentPersister($className);
         $persisters[$className] = $persister;
         $persister->addRestore($document);
     }
     foreach ($persisters as $className => $persister) {
         $persister->executeRestores();
         $class = $this->dm->getClassMetadata($className);
         if (isset($documentRestores[$className])) {
             $documents = $documentRestores[$className];
             foreach ($documents as $document) {
                 $class->setFieldValue($document, $deletedFieldName, null);
                 if ($this->eventManager->hasListeners(Events::postRestore)) {
                     $this->eventManager->dispatchEvent(Events::postRestore, new Event\LifecycleEventArgs($document, $this));
                 }
             }
         }
     }
 }
 public function testSetDeletedFieldName()
 {
     $configuration = new Configuration();
     $configuration->setDeletedFieldName('test');
     $this->assertEquals('test', $configuration->getDeletedFieldName());
 }