From 86dbddd596da0671552fcc9871a0fdb19bdd9df3 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 8 Jul 2012 14:58:06 +0200 Subject: [PATCH] Updating to reflect latest Doctrine Common changes Also, changing logic so that the SimpleAnnotationReader is no more the default one. An additional parameter for the method will allow using it. The CS fixes that were additionally implemented (along with other minor changes that do not affect BC compatibility are caused by a CS sniff via IDE. --- lib/Doctrine/ORM/Configuration.php | 78 ++++++++----------- lib/Doctrine/ORM/ORMException.php | 17 +++- .../Tests/Mocks/EntityManagerMock.php | 2 +- .../Functional/Locking/LockAgentWorker.php | 2 +- .../Doctrine/Tests/OrmFunctionalTestCase.php | 2 +- tests/Doctrine/Tests/OrmTestCase.php | 2 +- 6 files changed, 52 insertions(+), 51 deletions(-) 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');