예제 #1
0
 /**
  * @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;
 }
예제 #3
0
 /**
  * @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];
 }