diff --git a/lib/Doctrine/ORM/Configuration.php b/lib/Doctrine/ORM/Configuration.php index 4e8fba4ea..4a0c7c3ba 100644 --- a/lib/Doctrine/ORM/Configuration.php +++ b/lib/Doctrine/ORM/Configuration.php @@ -28,7 +28,9 @@ use Doctrine\Common\Cache\Cache, Doctrine\ORM\Mapping\QuoteStrategy, Doctrine\ORM\Mapping\DefaultQuoteStrategy, Doctrine\ORM\Mapping\NamingStrategy, - Doctrine\ORM\Mapping\DefaultNamingStrategy; + Doctrine\ORM\Mapping\DefaultNamingStrategy, + Doctrine\Common\Annotations\SimpleAnnotationReader, + Doctrine\Common\Annotations\CachedReader; /** * Configuration container for all configuration options of Doctrine. @@ -124,45 +126,29 @@ class Configuration extends \Doctrine\DBAL\Configuration } /** - * Add a new default annotation driver with a correctly configured annotation reader. + * Add a new default annotation driver with a correctly configured annotation reader. If $useDefaultNamespace is + * to true, the notation `@Entity` will work, otherwise, the notation `@ORM\Entity` will be supported. * * @param array $paths - * @return Mapping\Driver\AnnotationDriver + * @param bool $useDefaultNamespace + * @return AnnotationDriver */ - public function newDefaultAnnotationDriver($paths = array()) + public function newDefaultAnnotationDriver($paths = array(), $useDefaultNamespace = false) { - switch (true) { - case (version_compare(\Doctrine\Common\Version::VERSION, '2.2.0-DEV', '>=')): - // Register the ORM Annotations in the AnnotationRegistry - AnnotationRegistry::registerFile(__DIR__ . '/Mapping/Driver/DoctrineAnnotations.php'); + AnnotationRegistry::registerFile(__DIR__ . '/Mapping/Driver/DoctrineAnnotations.php'); - $reader = new \Doctrine\Common\Annotations\SimpleAnnotationReader(); - $reader->addNamespace('Doctrine\ORM\Mapping'); - - $reader = new \Doctrine\Common\Annotations\CachedReader($reader, new ArrayCache()); - break; - - case (version_compare(\Doctrine\Common\Version::VERSION, '2.1.0-DEV', '>=')): - // Register the ORM Annotations in the AnnotationRegistry - AnnotationRegistry::registerFile(__DIR__ . '/Mapping/Driver/DoctrineAnnotations.php'); - - $reader = new AnnotationReader(); - $reader->setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\'); - $reader->setIgnoreNotImportedAnnotations(true); - $reader->setEnableParsePhpImports(false); - - $reader = new \Doctrine\Common\Annotations\CachedReader( - new \Doctrine\Common\Annotations\IndexedReader($reader), new ArrayCache() - ); - break; - - default: - $reader = new AnnotationReader(); - $reader->setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\'); - break; + if ($useDefaultNamespace) { + // Register the ORM Annotations in the AnnotationRegistry + $reader = new SimpleAnnotationReader(); + $reader->addNamespace('Doctrine\ORM\Mapping'); + $cachedReader = new CachedReader($reader, new ArrayCache()); + return new AnnotationDriver($cachedReader, (array) $paths); } - return new AnnotationDriver($reader, (array) $paths); + return new AnnotationDriver( + new CachedReader(new AnnotationReader(), new ArrayCache()), + (array) $paths + ); } /** @@ -180,8 +166,8 @@ class Configuration extends \Doctrine\DBAL\Configuration * Resolves a registered namespace alias to the full namespace. * * @param string $entityNamespaceAlias + * @throws ORMException * @return string - * @throws MappingException */ public function getEntityNamespace($entityNamespaceAlias) { @@ -195,8 +181,7 @@ class Configuration extends \Doctrine\DBAL\Configuration /** * Set the entity alias map * - * @param array $entityAliasMap - * @return void + * @param array $entityNamespaces */ public function setEntityNamespaces(array $entityNamespaces) { @@ -307,6 +292,7 @@ class Configuration extends \Doctrine\DBAL\Configuration * Gets a previously registered named DQL query. * * @param string $name The name of the query. + * @throws ORMException * @return string The DQL query. */ public function getNamedQuery($name) @@ -321,9 +307,9 @@ class Configuration extends \Doctrine\DBAL\Configuration /** * Adds a named native query to the configuration. * - * @param string $name The name of the query. - * @param string $sql The native SQL query string. - * @param ResultSetMapping $rsm The ResultSetMapping used for the results of the SQL query. + * @param string $name The name of the query. + * @param string $sql The native SQL query string. + * @param Query\ResultSetMapping $rsm The ResultSetMapping used for the results of the SQL query. */ public function addNamedNativeQuery($name, $sql, Query\ResultSetMapping $rsm) { @@ -333,9 +319,10 @@ class Configuration extends \Doctrine\DBAL\Configuration /** * Gets the components of a previously registered named native query. * - * @param string $name The name of the query. - * @return array A tuple with the first element being the SQL string and the second - * element being the ResultSetMapping. + * @param string $name The name of the query. + * @throws ORMException + * @return array A tuple with the first element being the SQL string and the second + * element being the ResultSetMapping. */ public function getNamedNativeQuery($name) { @@ -377,6 +364,7 @@ class Configuration extends \Doctrine\DBAL\Configuration * * @param string $name * @param string $className + * @throws ORMException */ public function addCustomStringFunction($name, $className) { @@ -428,6 +416,7 @@ class Configuration extends \Doctrine\DBAL\Configuration * * @param string $name * @param string $className + * @throws ORMException */ public function addCustomNumericFunction($name, $className) { @@ -479,6 +468,7 @@ class Configuration extends \Doctrine\DBAL\Configuration * * @param string $name * @param string $className + * @throws ORMException */ public function addCustomDatetimeFunction($name, $className) { @@ -548,7 +538,7 @@ class Configuration extends \Doctrine\DBAL\Configuration /** * Set a class metadata factory. * - * @param string $cmf + * @param string $cmfName */ public function setClassMetadataFactoryName($cmfName) { @@ -646,7 +636,7 @@ class Configuration extends \Doctrine\DBAL\Configuration if ( ! isset($this->_attributes['namingStrategy'])) { $this->_attributes['namingStrategy'] = new DefaultNamingStrategy(); } - + return $this->_attributes['namingStrategy']; } diff --git a/lib/Doctrine/ORM/ORMException.php b/lib/Doctrine/ORM/ORMException.php index 15ffb638c..9a91a955e 100644 --- a/lib/Doctrine/ORM/ORMException.php +++ b/lib/Doctrine/ORM/ORMException.php @@ -32,7 +32,17 @@ class ORMException extends Exception public static function missingMappingDriverImpl() { return new self("It's a requirement to specify a Metadata Driver and pass it ". - "to Doctrine\ORM\Configuration::setMetadataDriverImpl()."); + "to Doctrine\\ORM\\Configuration::setMetadataDriverImpl()."); + } + + public static function namedQueryNotFound($queryName) + { + return new self('Could not find a named query by the name "' . $queryName . '"'); + } + + public static function namedNativeQueryNotFound($nativeQueryName) + { + return new self('Could not find a named native query by the name "' . $nativeQueryName . '"'); } public static function entityMissingForeignAssignedId($entity, $relatedEntity) @@ -54,6 +64,7 @@ class ORMException extends Exception "you need to adjust the metadata mapping accordingly." ); } + public static function unrecognizedField($field) { return new self("Unrecognized field: $field"); @@ -110,7 +121,7 @@ class ORMException extends Exception } public static function invalidResultCacheDriver() { - return new self("Invalid result cache driver; it must implement \Doctrine\Common\Cache\Cache."); + return new self("Invalid result cache driver; it must implement Doctrine\\Common\\Cache\\Cache."); } public static function notSupported() { @@ -142,7 +153,7 @@ class ORMException extends Exception public static function invalidEntityRepository($className) { return new self("Invalid repository class '".$className."'. ". - "it must be a Doctrine\ORM\EntityRepository."); + "it must be a Doctrine\\ORM\\EntityRepository."); } public static function missingIdentifierField($className, $fieldName) diff --git a/tests/Doctrine/Tests/Mocks/EntityManagerMock.php b/tests/Doctrine/Tests/Mocks/EntityManagerMock.php index 04b038d85..ca49410ad 100644 --- a/tests/Doctrine/Tests/Mocks/EntityManagerMock.php +++ b/tests/Doctrine/Tests/Mocks/EntityManagerMock.php @@ -78,7 +78,7 @@ class EntityManagerMock extends \Doctrine\ORM\EntityManager $config = new \Doctrine\ORM\Configuration(); $config->setProxyDir(__DIR__ . '/../Proxies'); $config->setProxyNamespace('Doctrine\Tests\Proxies'); - $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver()); + $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(array(), true)); } if (is_null($eventManager)) { $eventManager = new \Doctrine\Common\EventManager(); diff --git a/tests/Doctrine/Tests/ORM/Functional/Locking/LockAgentWorker.php b/tests/Doctrine/Tests/ORM/Functional/Locking/LockAgentWorker.php index 146f2db4d..2db6cce12 100644 --- a/tests/Doctrine/Tests/ORM/Functional/Locking/LockAgentWorker.php +++ b/tests/Doctrine/Tests/ORM/Functional/Locking/LockAgentWorker.php @@ -95,7 +95,7 @@ class LockAgentWorker $config->setProxyNamespace('MyProject\Proxies'); $config->setAutoGenerateProxyClasses(true); - $annotDriver = $config->newDefaultAnnotationDriver(array(__DIR__ . '/../../../Models/')); + $annotDriver = $config->newDefaultAnnotationDriver(array(__DIR__ . '/../../../Models/'), true); $config->setMetadataDriverImpl($annotDriver); $cache = new \Doctrine\Common\Cache\ArrayCache(); diff --git a/tests/Doctrine/Tests/OrmFunctionalTestCase.php b/tests/Doctrine/Tests/OrmFunctionalTestCase.php index bcbc0721c..0e9343671 100644 --- a/tests/Doctrine/Tests/OrmFunctionalTestCase.php +++ b/tests/Doctrine/Tests/OrmFunctionalTestCase.php @@ -342,7 +342,7 @@ abstract class OrmFunctionalTestCase extends OrmTestCase $config->setProxyDir(__DIR__ . '/Proxies'); $config->setProxyNamespace('Doctrine\Tests\Proxies'); - $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver()); + $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(array(), true)); $conn = static::$_sharedConn; $conn->getConfiguration()->setSQLLogger($this->_sqlLoggerStack); diff --git a/tests/Doctrine/Tests/OrmTestCase.php b/tests/Doctrine/Tests/OrmTestCase.php index b9f7b6be5..4ad60d68b 100644 --- a/tests/Doctrine/Tests/OrmTestCase.php +++ b/tests/Doctrine/Tests/OrmTestCase.php @@ -76,7 +76,7 @@ abstract class OrmTestCase extends DoctrineTestCase $config = new \Doctrine\ORM\Configuration(); $config->setMetadataCacheImpl($metadataCache); - $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver()); + $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver(array(), true)); $config->setQueryCacheImpl(self::getSharedQueryCacheImpl()); $config->setProxyDir(__DIR__ . '/Proxies'); $config->setProxyNamespace('Doctrine\Tests\Proxies');