/**
  * @group DDC-268
  */
 public function testLoadMetadataForNonEntityThrowsException()
 {
     $cm = new ClassMetadata('stdClass');
     $reader = new \Doctrine\Common\Annotations\AnnotationReader(new \Doctrine\Common\Cache\ArrayCache());
     $annotationDriver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader);
     $this->setExpectedException('Doctrine\\ORM\\Mapping\\MappingException');
     $annotationDriver->loadMetadataForClass('stdClass', $cm);
 }
 /**
  * @group DDC-268
  */
 public function testColumnWithMissingTypeDefaultsToString()
 {
     $cm = new ClassMetadata('Doctrine\\Tests\\ORM\\Mapping\\ColumnWithoutType');
     $reader = new \Doctrine\Common\Annotations\AnnotationReader(new \Doctrine\Common\Cache\ArrayCache());
     $reader->setDefaultAnnotationNamespace('Doctrine\\ORM\\Mapping\\');
     $annotationDriver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader);
     $annotationDriver->loadMetadataForClass('Doctrine\\Tests\\ORM\\Mapping\\InvalidColumn', $cm);
     $this->assertEquals('string', $cm->fieldMappings['id']['type']);
 }
 public function testHasGetMetadata_NamespaceSeperatorIsNotNormalized()
 {
     require_once __DIR__ . "/../../Models/Global/GlobalNamespaceModel.php";
     $reader = new \Doctrine\Common\Annotations\AnnotationReader(new \Doctrine\Common\Cache\ArrayCache());
     $reader->setDefaultAnnotationNamespace('Doctrine\\ORM\\Mapping\\');
     $metadataDriver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader);
     $metadataDriver->addPaths(array(__DIR__ . '/../../Models/Global/'));
     $entityManager = $this->_createEntityManager($metadataDriver);
     $mf = $entityManager->getMetadataFactory();
     $m1 = $mf->getMetadataFor("DoctrineGlobal_Article");
     $h1 = $mf->hasMetadataFor("DoctrineGlobal_Article");
     $h2 = $mf->hasMetadataFor("\\DoctrineGlobal_Article");
     $m2 = $mf->getMetadataFor("\\DoctrineGlobal_Article");
     $this->assertNotSame($m1, $m2);
     $this->assertFalse($h2);
     $this->assertTrue($h1);
 }
 public function testLoadPrefixedMetadata()
 {
     $this->_generator->setAnnotationPrefix('ORM\\');
     $metadata = $this->generateBookEntityFixture();
     $reader = new \Doctrine\Common\Annotations\AnnotationReader();
     $driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader, array());
     $book = $this->newInstance($metadata);
     $cm = new \Doctrine\ORM\Mapping\ClassMetadata($metadata->name);
     $cm->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService());
     $driver->loadMetadataForClass($cm->name, $cm);
     $this->assertEquals($cm->columnNames, $metadata->columnNames);
     $this->assertEquals($cm->getTableName(), $metadata->getTableName());
     $this->assertEquals($cm->lifecycleCallbacks, $metadata->lifecycleCallbacks);
     $this->assertEquals($cm->identifier, $metadata->identifier);
     $this->assertEquals($cm->idGenerator, $metadata->idGenerator);
     $this->assertEquals($cm->customRepositoryClassName, $metadata->customRepositoryClassName);
 }
 /**
  * Setup the metadata driver if necessary options are set. Otherwise Doctrine defaults are used (AnnotationReader).
  *
  * @param array $options
  * @param Doctrine\ORM\Configuration $config
  * @param Doctrine\Common\Cache\AbstractCache $cache
  * @param Doctrine\DBAL\Connection $conn
  */
 protected function _setupMetadataDriver($options, $config, $cache, $conn)
 {
     $driver = false;
     if (isset($options['metadata'])) {
         if (isset($options['metadata']['driver'])) {
             $driverName = $options['metadata']['driver'];
             switch (strtolower($driverName)) {
                 case 'annotation':
                     $driverName = 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver';
                     break;
                 case 'yaml':
                     $driverName = 'Doctrine\\ORM\\Mapping\\Driver\\YamlDriver';
                     break;
                 case 'xml':
                     $driverName = 'Doctrine\\ORM\\Mapping\\Driver\\XmlDriver';
                     break;
                 case 'php':
                     $driverName = 'Doctrine\\ORM\\Mapping\\Driver\\PhpDriver';
                     break;
                 case 'database':
                     $driverName = 'Doctrine\\ORM\\Mapping\\Driver\\DatabaseDriver';
                     break;
             }
             if (!class_exists($driverName)) {
                 throw new ZendX_Doctrine2_Exception("MetadataDriver class '" . $driverName . "' does not exist");
             }
             if (in_array('Doctrine\\ORM\\Mapping\\Driver\\AbstractFileDriver', class_parents($driverName))) {
                 if (!isset($options['metadata']['paths'])) {
                     throw new ZendX_Doctrine2_Exception("Metadata Driver is file based, but no config file paths were given.");
                 }
                 if (!isset($options['metadata']['mode'])) {
                     $options['metadata']['mode'] = \Doctrine\ORM\Mapping\Driver\AbstractFileDriver::FILE_PER_CLASS;
                 }
                 $driver = new $driverName($options['metadata']['paths'], $options['metadata']['mode']);
             } elseif ($driverName == 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver') {
                 $reader = new \Doctrine\Common\Annotations\AnnotationReader($cache);
                 $reader->setDefaultAnnotationNamespace('Doctrine\\ORM\\Mapping\\');
                 $driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader);
                 if (isset($options['metadata']['classDirectory'])) {
                     $driver->addPaths(array($options['metadata']['classDirectory']));
                 } else {
                     throw new ZendX_Doctrine2_Exception("Doctrine Annotation Driver requires to set a class directory for the entities.");
                 }
                 //$driverImpl = $config->newDefaultAnnotationDriver("var/www/zfbench/application/models"));
                 //$config->setMetadataDriverImpl($driverImpl);
             } elseif ($driverName == 'Doctrine\\ORM\\Mapping\\Driver\\DatabaseDriver') {
                 $schemaManager = $conn->getSchemaManager();
                 $driver = new \Doctrine\ORM\Mapping\Driver\DatabaseDriver($schemaManager);
             }
             if (!$driver instanceof \Doctrine\ORM\Mapping\Driver\Driver) {
                 throw new ZendX_Doctrine2_Exception("No metadata driver could be loaded.");
             }
             $config->setMetadataDriverImpl($driver);
         }
     }
 }
 public function testLoadPrefixedMetadata()
 {
     $this->_generator->setAnnotationPrefix('orm:');
     $metadata = $this->generateBookEntityFixture();
     $book = $this->newInstance($metadata);
     $cm = new \Doctrine\ORM\Mapping\ClassMetadata($metadata->name);
     $reader = new \Doctrine\Common\Annotations\AnnotationReader();
     $reader->setAnnotationNamespaceAlias("Doctrine\\ORM\\Mapping\\", "orm");
     $driver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($reader);
     $driver->loadMetadataForClass($cm->name, $cm);
     $this->assertEquals($cm->columnNames, $metadata->columnNames);
     $this->assertEquals($cm->getTableName(), $metadata->getTableName());
     $this->assertEquals($cm->lifecycleCallbacks, $metadata->lifecycleCallbacks);
     $this->assertEquals($cm->identifier, $metadata->identifier);
     $this->assertEquals($cm->idGenerator, $metadata->idGenerator);
     $this->assertEquals($cm->customRepositoryClassName, $metadata->customRepositoryClassName);
 }