private function resolveParent($document, ClassMetadata $metadata)
{
if (!($parentField = $metadata->parentMapping)) {
throw new \RuntimeException(sprintf('A default parent path has been specified, but no parent mapping has been applied to document "%s"', get_class($document)));
}
if (false === $this->force) {
$actualParent = $metadata->getFieldValue($document, $parentField);
if ($actualParent) {
return;
}
}
$parentDocument = $this->documentManager->find(null, $this->parentPath);
if (true === $this->autocreate && null === $parentDocument) {
NodeHelper::createPath($this->documentManager->getPhpcrSession(), $this->parentPath);
$parentDocument = $this->documentManager->find(null, $this->parentPath);
}
if (null === $parentDocument) {
throw new \RuntimeException(sprintf('Document at default parent path "%s" does not exist. `autocreate` was set to "%s"', $this->parentPath, $this->autocreate ? 'true' : 'false'));
}
$metadata->setFieldValue($document, $parentField, $parentDocument);
}