/** * Overwrite to set the node name if not set * * @param EntityInterface $entity * @throws \RuntimeException * @return bool|void */ public function store(EntityInterface $entity) { /** @var $meta \Doctrine\ODM\PHPCR\Mapping\ClassMetadata */ $meta = $this->om->getClassMetaData(get_class($entity->getObject())); if (!property_exists($entity->getObject(), $meta->nodename)) { throw new RuntimeException('nodename need to be mapped to ' . get_class($entity->getObject())); } $nodename = $meta->getFieldValue($entity->getObject(), $meta->nodename); if (empty($nodename)) { //in case of node creation the nodename is empty $name = $this->generateNodeName($entity); //set a guessed nodename $meta->setFieldValue($entity->getObject(), $meta->nodename, $name); } try { return parent::store($entity); } catch (ItemExistsException $iee) { //an item with the same title already exists return false; } }