Beispiel #1
0
	/**
	 * @param string
	 * @param \Doctrine\ORM\Mapping\ClassMetadataInfo
	 */
	public function loadMetadataForClass($className, \Doctrine\ORM\Mapping\ClassMetadataInfo $metadata)
	{
		parent::loadMetadataForClass($className, $metadata);

		if ($metadata instanceof \Nella\Doctrine\Mapping\ClassMetadata) {
			$class = \Nette\Reflection\ClassType::from($className);
			if ($class->hasAnnotation('service')) {
				$service = $class->getAnnotation('service');
				if (!isset($service['class'])) {
					throw new \Doctrine\ORM\Mapping\MappingException("Missing service class.");
				}

				$metadata->setServiceClass($service['class']);
			}
		}
	}
 /**
  * {@inheritDoc}
  */
 public function loadMetadataForClass($className, ClassMetadata $metadata)
 {
     /* @var $metadata \Doctrine\ORM\Mapping\ClassMetadataInfo */
     parent::loadMetadataForClass($className, $metadata);
     $classAnnotations = $this->getClassAnnotations($metadata);
     if (isset($classAnnotations['Pj\\EntityExtendBundle\\Mapping\\ExtendedEntity'])) {
         /** @var ExtendedEntity $annotation */
         $annotation = $classAnnotations['Pj\\EntityExtendBundle\\Mapping\\ExtendedEntity'];
         $extendedEntityClass = $annotation->className;
         $cmf = $this->em->getMetadataFactory();
         /** @var \Doctrine\ORM\Mapping\ClassMetadataInfo $extendedEntityMetadata */
         $extendedEntityMetadata = $cmf->getMetadataFor($extendedEntityClass);
         // Set by parent entity.
         $metadata->setPrimaryTable($extendedEntityMetadata->table);
     }
 }
 /**
  * @group DDC-3272
  */
 public function testMappedSuperclassAnnotationGeneration()
 {
     $metadata = new ClassMetadataInfo($this->_namespace . '\\EntityGeneratorBook');
     $metadata->namespace = $this->_namespace;
     $metadata->isMappedSuperclass = true;
     $this->_generator->setAnnotationPrefix('ORM\\');
     $this->_generator->writeEntityClass($metadata, $this->_tmpDir);
     $this->newInstance($metadata);
     // force instantiation (causes autoloading to kick in)
     $driver = new AnnotationDriver(new AnnotationReader(), array());
     $cm = new ClassMetadata($metadata->name);
     $cm->initializeReflection(new RuntimeReflectionService());
     $driver->loadMetadataForClass($cm->name, $cm);
     $this->assertTrue($cm->isMappedSuperclass);
 }