/** * @inheritDoc */ public function hasMetadataFor($className) { if ($className == self::REVISION_ENTITY) { return false; } return $this->wrapped->hasMetadataFor($className); }
/** * Builds a Hierarchy of every entity in the Class metadata. * @param ClassMetadataFactory $metadataFactory * @return MetadataNode[] */ protected function buildHierarchy(ClassMetadataFactory $metadataFactory) { $this->hierarchy = array(); $stack = new SplStack(); foreach ($metadataFactory->getAllMetadata() as $metadata) { $stack->push($metadata->getName()); } while (!$stack->isEmpty()) { $meta = $metadataFactory->getMetadataFor($stack->pop()); $name = $meta->getName(); $node = $this->getNode($name); $parent = $meta->getReflectionClass()->getParentClass(); if ($parent != null && $metadataFactory->hasMetadataFor($parent->getName())) { $parentNode = $this->getNode($metadataFactory->getMetadataFor($parent->getName())->getName()); $node->setParent($parentNode); $parentNode->addChild($node); } } return $this->hierarchy; }
/** * @param ClassMetadataFactory $factory * @param string $entityFQCN Class name * * @return mixed */ protected function getDiscriminatorValue(ClassMetadataFactory $factory, $entityFQCN) { if (!array_key_exists($entityFQCN, $this->collectedValues)) { $value = null; if ($factory->hasMetadataFor($entityFQCN)) { /** @var ClassMetadata $metadata */ $metadata = $factory->getMetadataFor($entityFQCN); $value = $metadata->discriminatorValue; } else { $ref = new \ReflectionClass($entityFQCN); $annotation = $this->annotationReader->getClassAnnotation($ref, self::ANNOTATION_DISCRIMINATOR_VALUE); if ($annotation instanceof DiscriminatorValue) { $value = $annotation->getValue(); } } $this->collectedValues[$entityFQCN] = $value; } return $this->collectedValues[$entityFQCN]; }