public function generate($document, ClassMetadata $class, DocumentManagerInterface $dm, $parent = null)
    {
        if (null === $parent) {
            $parent = $class->parentMapping ? $class->getFieldValue($document, $class->parentMapping) : null;
        }

        $id = $class->getFieldValue($document, $class->identifier);
        if (empty($id) && null === $parent) {
            throw IdException::noIdNoParent($document, $class->parentMapping);
        }

        if (empty($parent)) {
            return $id;
        }

        try {
            $parentNode = $dm->getNodeForDocument($parent);
            $existingNames = (array) $parentNode->getNodeNames();
        } catch (RepositoryException $e) {
            // this typically happens while cascading persisting documents
            $existingNames = [];
        }
        $name = NodeHelper::generateAutoNodeName(
            $existingNames,
            $dm->getPhpcrSession()->getWorkspace()->getNamespaceRegistry()->getNamespaces(),
            '',
            ''
        );

        return $this->buildName($document, $class, $dm, $parent, $name);
    }
public function generate($document, ClassMetadata $class, DocumentManagerInterface $dm, $parent = null)
    {
        if (null === $parent) {
            $parent = $class->parentMapping ? $class->getFieldValue($document, $class->parentMapping) : null;
        }

        $id = $class->getFieldValue($document, $class->identifier);
        if (empty($id) && null === $parent) {
            throw IdException::noIdNoParent($document, $class->parentMapping);
        }

        if (empty($parent)) {
            return $id;
        }

        try {
            $parentNode = $dm->getNodeForDocument($parent);
            $existingNames = (array) $parentNode->getNodeNames();
        } catch (RepositoryException $e) {
            // this typically happens while cascading persisting documents
            $existingNames = [];
        }
        $name = NodeHelper::generateAutoNodeName(
            $existingNames,
            $dm->getPhpcrSession()->getWorkspace()->getNamespaceRegistry()->getNamespaces(),
            '',
            ''
        );

        return $this->buildName($document, $class, $dm, $parent, $name);
    }
public function generate ( $ document , ClassMetadata $ class , DocumentManagerInterface $ dm , $ parent = null ) { if ( null === $ parent ) { $ parent = $ class -> parentMapping ? $ class -> getFieldValue ( $ document , $ class -> parentMapping ) : null ; } $ id = $ class -> getFieldValue ( $ document , $ class -> identifier ) ; if ( empty ( $ id ) && null === $ parent ) { throw IdException :: noIdNoParent ( $ document , $ class -> parentMapping ) ; } if ( empty ( $ parent ) ) { return $ id ; } try { $ parentNode = $ dm -> getNodeForDocument ( $ parent ) ; $ existingNames = ( array ) $ parentNode -> getNodeNames ( ) ; } catch ( RepositoryException $ e ) { // this typically happens while cascading persisting documents $ existingNames = [ ] ; } $ name = NodeHelper :: generateAutoNodeName ( $ existingNames , $ dm -> getPhpcrSession ( ) -> getWorkspace ( ) -> getNamespaceRegistry ( ) -> getNamespaces ( ) , '' , '' ) ; return $ this -> buildName ( $ document , $ class , $ dm , $ parent , $ name ) ; }
Use the parent field together with an auto generated name to generate the id.

{@inheritdoc}
Use the parent field together with an auto generated name to generate the id .