Skip to content

Loading…

DDC-1893 - Updating configuration to reflect latest Doctrine Common changes #396

Merged
merged 6 commits into from

4 participants

@Ocramius
Doctrine member

This PR fixes DDC-1893 (http://www.doctrine-project.org/jira/browse/DDC-1893).

The getDefaultAnnotationDriver method was changes to stop supporting older incompatible Doctrine Common versions in favour of the newer logic.

Also, changing logic so that the SimpleAnnotationReader is no more the
default one. An additional parameter for the method will allow using it (this is a BC break!)

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.

@beberlei beberlei commented on an outdated diff
lib/Doctrine/ORM/Configuration.php
((35 lines not shown))
- $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());
@beberlei Doctrine member
beberlei added a note

space missing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@beberlei beberlei commented on an outdated diff
lib/Doctrine/ORM/Configuration.php
((12 lines not shown))
*/
- public function newDefaultAnnotationDriver($paths = array())
+ public function newDefaultAnnotationDriver($paths = array(), $useDefaultNamespace = false)
@beberlei Doctrine member
beberlei added a note

i would rename this to $useSimpleAnnotationReader

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@beberlei beberlei commented on the diff
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)
+ {
@beberlei Doctrine member
beberlei added a note

where are those coming from?

@Ocramius Doctrine member
Ocramius added a note

They're called in ORM\Configuration

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@beberlei
Doctrine member

Can you add a line to UPGRADE.md?

@stof stof commented on the diff
lib/Doctrine/ORM/Configuration.php
((52 lines not shown))
}
- return new AnnotationDriver($reader, (array) $paths);
+ return new AnnotationDriver(
+ new CachedReader(new AnnotationReader(), new ArrayCache()),
+ (array) $paths
+ );
@stof Doctrine member
stof added a note

you could make it simpler by sharing the definition of the cachedReader and the driver and using the if only to create the inner reader.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@stof
Doctrine member

@Ocramius you need to rebase as the Upgrade files have just been concatenated into a single file so the file you edited does not exist anymore

@travisbot

This pull request fails (merged e0bbad95 into 5adc8be).

@Ocramius
Doctrine member

@stof still doing other stuff :)

Ocramius added some commits
@Ocramius Ocramius 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.
86dbddd
@Ocramius Ocramius Updating upgrade docs and fixes suggested by @beberlei fc00d5f
@Ocramius Ocramius Adding tests for configuration object (also to ensure defaults for BC…
… break early discovery)
7c2e5ae
@travisbot

This pull request fails (merged 7c2e5ae into 5adc8be).

@stof stof commented on an outdated diff
UPGRADE.md
@@ -1,5 +1,33 @@
# Upgrade to 2.3
+## Configuration *BC Break*
+
+The default annotation syntax has been changed from `@Entity` to `@ORM\Entity`. If you still want to use the simplified
@stof Doctrine member
stof added a note

you should wrap the lines shorter to be consistent with the other parts of the file

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@travisbot

This pull request fails (merged b67140f into 5adc8be).

@beberlei beberlei commented on an outdated diff
UPGRADE.md
@@ -1,5 +1,33 @@
# Upgrade to 2.3
+## Configuration *BC Break*
+
+The default annotation syntax has been changed from `@Entity` to `@ORM\Entity`. If you still want to use the simplified
+version, you should use `Doctrine\Common\Annotations\SimpleAnnotationReader` for your AnnotationDriver or call
+`Doctrine\ORM\Configuration#newDefaultAnnotationDriver` with its second parameter set to `true`.
@beberlei Doctrine member
beberlei added a note

Can you add the parameter to Doctrine\ORM\Tools\Setup class as well?

Also we have to default this parameter to true everywhere i think, because otherwise we have to update the documentation as well.

@Ocramius Doctrine member
Ocramius added a note

I'm going through the docs looking for what would need update

@stof Doctrine member
stof added a note

all places showing an example with annotations :)

@Ocramius Doctrine member
Ocramius added a note

@stof yeah, @beberlei stopped me, I was going to do that :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
@travisbot

This pull request passes (merged 245d906 into 5adc8be).

@travisbot

This pull request passes (merged 346e34a into 5adc8be).

@beberlei beberlei merged commit 3b04cf5 into doctrine:master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Jul 8, 2012
  1. @Ocramius

    Updating to reflect latest Doctrine Common changes

    Ocramius committed
    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.
  2. @Ocramius
  3. @Ocramius
  4. @Ocramius
  5. @Ocramius
  6. @Ocramius
View
8 UPGRADE.md
@@ -315,7 +315,7 @@ the association. Example:
private $user;
//...
}
-
+
// SINCE BETA1
// User class DOES NOT CHANGE
class Address
@@ -325,7 +325,7 @@ the association. Example:
private $user;
//...
}
-
+
Thus, the inversedBy attribute is the counterpart to the mappedBy attribute. This change
was necessary to enable some simplifications and further performance improvements. We
apologize for the inconvenience.
@@ -344,7 +344,7 @@ had a DQL query like this:
[sql]
SELECT u.id, u.name FROM User u
-
+
Since BETA1, simple state field path expressions in the select clause are used to select
object fields as plain scalar values (something that was not possible before).
To achieve the same result as previously (that is, a partial object with only id and name populated)
@@ -427,7 +427,7 @@ With new required method AbstractTask::buildDocumentation, its implementation de
# Upgrade from 2.0-ALPHA2 to 2.0-ALPHA3
This section details the changes made to Doctrine 2.0-ALPHA3 to make it easier for you
-to upgrade your projects to use this version.
+to upgrade your projects to use this version.
## CLI Changes
View
77 lib/Doctrine/ORM/Configuration.php
@@ -28,7 +28,9 @@
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,30 @@ public function setMetadataDriverImpl(MappingDriver $driverImpl)
}
/**
- * 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 $useSimpleAnnotationReader
+ * is true, the notation `@Entity` will work, otherwise, the notation `@ORM\Entity` will be supported.
*
* @param array $paths
- * @return Mapping\Driver\AnnotationDriver
+ * @param bool $useSimpleAnnotationReader
+ * @return AnnotationDriver
*/
- public function newDefaultAnnotationDriver($paths = array())
+ public function newDefaultAnnotationDriver($paths = array(), $useSimpleAnnotationReader = true)
{
- 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');
+ if ($useSimpleAnnotationReader) {
+ // Register the ORM Annotations in the AnnotationRegistry
+ $reader = new SimpleAnnotationReader();
+ $reader->addNamespace('Doctrine\ORM\Mapping');
+ $cachedReader = new CachedReader($reader, new ArrayCache());
- $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;
+ return new AnnotationDriver($cachedReader, (array) $paths);
}
- return new AnnotationDriver($reader, (array) $paths);
+ return new AnnotationDriver(
+ new CachedReader(new AnnotationReader(), new ArrayCache()),
+ (array) $paths
+ );
@stof Doctrine member
stof added a note

you could make it simpler by sharing the definition of the cachedReader and the driver and using the if only to create the inner reader.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
}
/**
@@ -180,8 +167,8 @@ public function addEntityNamespace($alias, $namespace)
* Resolves a registered namespace alias to the full namespace.
*
* @param string $entityNamespaceAlias
+ * @throws ORMException
* @return string
- * @throws MappingException
*/
public function getEntityNamespace($entityNamespaceAlias)
{
@@ -195,8 +182,7 @@ public function getEntityNamespace($entityNamespaceAlias)
/**
* Set the entity alias map
*
- * @param array $entityAliasMap
- * @return void
+ * @param array $entityNamespaces
*/
public function setEntityNamespaces(array $entityNamespaces)
{
@@ -307,6 +293,7 @@ public function addNamedQuery($name, $dql)
* 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 +308,9 @@ public function getNamedQuery($name)
/**
* 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 +320,10 @@ public function addNamedNativeQuery($name, $sql, Query\ResultSetMapping $rsm)
/**
* 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 +365,7 @@ public function ensureProductionSettings()
*
* @param string $name
* @param string $className
+ * @throws ORMException
*/
public function addCustomStringFunction($name, $className)
{
@@ -428,6 +417,7 @@ public function setCustomStringFunctions(array $functions)
*
* @param string $name
* @param string $className
+ * @throws ORMException
*/
public function addCustomNumericFunction($name, $className)
{
@@ -479,6 +469,7 @@ public function setCustomNumericFunctions(array $functions)
*
* @param string $name
* @param string $className
+ * @throws ORMException
*/
public function addCustomDatetimeFunction($name, $className)
{
@@ -548,7 +539,7 @@ public function addCustomHydrationMode($modeName, $hydrator)
/**
* Set a class metadata factory.
*
- * @param string $cmf
+ * @param string $cmfName
*/
public function setClassMetadataFactoryName($cmfName)
{
@@ -646,7 +637,7 @@ public function getNamingStrategy()
if ( ! isset($this->_attributes['namingStrategy'])) {
$this->_attributes['namingStrategy'] = new DefaultNamingStrategy();
}
-
+
return $this->_attributes['namingStrategy'];
}
View
17 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)
+ {
@beberlei Doctrine member
beberlei added a note

where are those coming from?

@Ocramius Doctrine member
Ocramius added a note

They're called in ORM\Configuration

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
+ 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 @@ public static function entityMissingAssignedIdForField($entity, $field)
"you need to adjust the metadata mapping accordingly."
);
}
+
public static function unrecognizedField($field)
{
return new self("Unrecognized field: $field");
@@ -110,7 +121,7 @@ public static function invalidFindByInverseAssociation($entityName, $association
}
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 @@ public static function unknownEntityNamespace($entityNamespaceAlias)
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)
View
5 lib/Doctrine/ORM/Tools/Setup.php
@@ -111,12 +111,13 @@ static public function registerAutoloadDirectory($directory)
* @param boolean $isDevMode
* @param string $proxyDir
* @param Cache $cache
+ * @param bool $useSimpleAnnotationReader
* @return Configuration
*/
- static public function createAnnotationMetadataConfiguration(array $paths, $isDevMode = false, $proxyDir = null, Cache $cache = null)
+ static public function createAnnotationMetadataConfiguration(array $paths, $isDevMode = false, $proxyDir = null, Cache $cache = null, $useSimpleAnnotationReader = true)
{
$config = self::createConfiguration($isDevMode, $proxyDir, $cache);
- $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver($paths));
+ $config->setMetadataDriverImpl($config->newDefaultAnnotationDriver($paths, $useSimpleAnnotationReader));
return $config;
}
View
2 tests/Doctrine/Tests/Mocks/EntityManagerMock.php
@@ -78,7 +78,7 @@ public static function create($conn, \Doctrine\ORM\Configuration $config = null,
$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();
View
261 tests/Doctrine/Tests/ORM/ConfigurationTest.php
@@ -0,0 +1,261 @@
+<?php
+
+namespace Doctrine\Tests\ORM;
+
+use Doctrine\ORM\Mapping as AnnotationNamespace;
+use Doctrine\ORM\Configuration;
+use Doctrine\ORM\ORMException;
+use ReflectionClass;
+use PHPUnit_Framework_TestCase;
+
+require_once __DIR__ . '/../TestInit.php';
+
+/**
+ * Tests for the Configuration object
+ * @author Marco Pivetta <ocramius@gmail.com>
+ */
+class ConfigurationTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @var Configuration
+ */
+ private $configuration;
+
+ protected function setUp()
+ {
+ parent::setUp();
+ $this->configuration = new Configuration();
+ }
+
+ public function testSetGetProxyDir()
+ {
+ $this->assertSame(null, $this->configuration->getProxyDir()); // defaults
+
+ $this->configuration->setProxyDir(__DIR__);
+ $this->assertSame(__DIR__, $this->configuration->getProxyDir());
+ }
+
+ public function testSetGetAutoGenerateProxyClasses()
+ {
+ $this->assertSame(true, $this->configuration->getAutoGenerateProxyClasses()); // defaults
+
+ $this->configuration->setAutoGenerateProxyClasses(false);
+ $this->assertSame(false, $this->configuration->getAutoGenerateProxyClasses());
+ }
+
+ public function testSetGetProxyNamespace()
+ {
+ $this->assertSame(null, $this->configuration->getProxyNamespace()); // defaults
+
+ $this->configuration->setProxyNamespace(__NAMESPACE__);
+ $this->assertSame(__NAMESPACE__, $this->configuration->getProxyNamespace());
+ }
+
+ public function testSetGetMetadataDriverImpl()
+ {
+ $this->assertSame(null, $this->configuration->getMetadataDriverImpl()); // defaults
+
+ $metadataDriver = $this->getMock('Doctrine\Common\Persistence\Mapping\Driver\MappingDriver');
+ $this->configuration->setMetadataDriverImpl($metadataDriver);
+ $this->assertSame($metadataDriver, $this->configuration->getMetadataDriverImpl());
+ }
+
+ public function testNewDefaultAnnotationDriver()
+ {
+ $paths = array(__DIR__);
+ $reflectionClass = new ReflectionClass(__NAMESPACE__ . '\ConfigurationTestAnnotationReaderChecker');
+
+ $annotationDriver = $this->configuration->newDefaultAnnotationDriver($paths, false);
+ $reader = $annotationDriver->getReader();
+ $annotation = $reader->getMethodAnnotation(
+ $reflectionClass->getMethod('namespacedAnnotationMethod'),
+ 'Doctrine\ORM\Mapping\PrePersist'
+ );
+ $this->assertInstanceOf('Doctrine\ORM\Mapping\PrePersist', $annotation);
+
+ $annotationDriver = $this->configuration->newDefaultAnnotationDriver($paths);
+ $reader = $annotationDriver->getReader();
+ $annotation = $reader->getMethodAnnotation(
+ $reflectionClass->getMethod('simpleAnnotationMethod'),
+ 'Doctrine\ORM\Mapping\PrePersist'
+ );
+ $this->assertInstanceOf('Doctrine\ORM\Mapping\PrePersist', $annotation);
+ }
+
+ public function testSetGetEntityNamespace()
+ {
+ $this->configuration->addEntityNamespace('TestNamespace', __NAMESPACE__);
+ $this->assertSame(__NAMESPACE__, $this->configuration->getEntityNamespace('TestNamespace'));
+ $namespaces = array('OtherNamespace' => __NAMESPACE__);
+ $this->configuration->setEntityNamespaces($namespaces);
+ $this->assertSame($namespaces, $this->configuration->getEntityNamespaces());
+ $this->setExpectedException('Doctrine\ORM\ORMException');
+ $this->configuration->getEntityNamespace('NonExistingNamespace');
+ }
+
+ public function testSetGetQueryCacheImpl()
+ {
+ $this->assertSame(null, $this->configuration->getQueryCacheImpl()); // defaults
+ $queryCacheImpl = $this->getMock('Doctrine\Common\Cache\Cache');
+ $this->configuration->setQueryCacheImpl($queryCacheImpl);
+ $this->assertSame($queryCacheImpl, $this->configuration->getQueryCacheImpl());
+ }
+
+ public function testSetGetHydrationCacheImpl()
+ {
+ $this->assertSame(null, $this->configuration->getHydrationCacheImpl()); // defaults
+ $queryCacheImpl = $this->getMock('Doctrine\Common\Cache\Cache');
+ $this->configuration->setHydrationCacheImpl($queryCacheImpl);
+ $this->assertSame($queryCacheImpl, $this->configuration->getHydrationCacheImpl());
+ }
+
+ public function testSetGetMetadataCacheImpl()
+ {
+ $this->assertSame(null, $this->configuration->getMetadataCacheImpl()); // defaults
+ $queryCacheImpl = $this->getMock('Doctrine\Common\Cache\Cache');
+ $this->configuration->setMetadataCacheImpl($queryCacheImpl);
+ $this->assertSame($queryCacheImpl, $this->configuration->getMetadataCacheImpl());
+ }
+
+ public function testAddGetNamedQuery()
+ {
+ $dql = 'SELECT u FROM User u';
+ $this->configuration->addNamedQuery('QueryName', $dql);
+ $this->assertSame($dql, $this->configuration->getNamedQuery('QueryName'));
+ $this->setExpectedException('Doctrine\ORM\ORMException');
+ $this->configuration->getNamedQuery('NonExistingQuery');
+ }
+
+ public function testAddGetNamedNativeQuery()
+ {
+ $sql = 'SELECT * FROM user';
+ $rsm = $this->getMock('Doctrine\ORM\Query\ResultSetMapping');
+ $this->configuration->addNamedNativeQuery('QueryName', $sql, $rsm);
+ $fetched = $this->configuration->getNamedNativeQuery('QueryName');
+ $this->assertSame($sql, $fetched[0]);
+ $this->assertSame($rsm, $fetched[1]);
+ $this->setExpectedException('Doctrine\ORM\ORMException');
+ $this->configuration->getNamedQuery('NonExistingQuery');
+ }
+
+ public function ensureProductionSettings()
+ {
+ $cache = $this->getMock('Doctrine\Common\Cache\Cache');
+ $this->configuration->setAutoGenerateProxyClasses(true);
+
+ try {
+ $this->configuration->ensureProductionSettings();
+ $this->fail('Didn\'t check all production settings');
+ } catch (ORMException $e) {}
+
+ $this->configuration->setQueryCacheImpl($cache);
+
+ try {
+ $this->configuration->ensureProductionSettings();
+ $this->fail('Didn\'t check all production settings');
+ } catch (ORMException $e) {}
+
+ $this->configuration->setMetadataCacheImpl($cache);
+
+ try {
+ $this->configuration->ensureProductionSettings();
+ $this->fail('Didn\'t check all production settings');
+ } catch (ORMException $e) {}
+
+ $this->configuration->setAutoGenerateProxyClasses(false);
+ $this->configuration->ensureProductionSettings();
+ }
+
+ public function testAddGetCustomStringFunction()
+ {
+ $this->configuration->addCustomStringFunction('FunctionName', __CLASS__);
+ $this->assertSame(__CLASS__, $this->configuration->getCustomStringFunction('FunctionName'));
+ $this->assertSame(null, $this->configuration->getCustomStringFunction('NonExistingFunction'));
+ $this->configuration->setCustomStringFunctions(array('OtherFunctionName' => __CLASS__));
+ $this->assertSame(__CLASS__, $this->configuration->getCustomStringFunction('OtherFunctionName'));
+ $this->setExpectedException('Doctrine\ORM\ORMException');
+ $this->configuration->addCustomStringFunction('concat', __CLASS__);
+ }
+
+ public function testAddGetCustomNumericFunction()
+ {
+ $this->configuration->addCustomNumericFunction('FunctionName', __CLASS__);
+ $this->assertSame(__CLASS__, $this->configuration->getCustomNumericFunction('FunctionName'));
+ $this->assertSame(null, $this->configuration->getCustomNumericFunction('NonExistingFunction'));
+ $this->configuration->setCustomNumericFunctions(array('OtherFunctionName' => __CLASS__));
+ $this->assertSame(__CLASS__, $this->configuration->getCustomNumericFunction('OtherFunctionName'));
+ $this->setExpectedException('Doctrine\ORM\ORMException');
+ $this->configuration->addCustomNumericFunction('abs', __CLASS__);
+ }
+
+ public function testAddGetCustomDatetimeFunction()
+ {
+ $this->configuration->addCustomDatetimeFunction('FunctionName', __CLASS__);
+ $this->assertSame(__CLASS__, $this->configuration->getCustomDatetimeFunction('FunctionName'));
+ $this->assertSame(null, $this->configuration->getCustomDatetimeFunction('NonExistingFunction'));
+ $this->configuration->setCustomDatetimeFunctions(array('OtherFunctionName' => __CLASS__));
+ $this->assertSame(__CLASS__, $this->configuration->getCustomDatetimeFunction('OtherFunctionName'));
+ $this->setExpectedException('Doctrine\ORM\ORMException');
+ $this->configuration->addCustomDatetimeFunction('date_add', __CLASS__);
+ }
+
+ public function testAddGetCustomHydrationMode()
+ {
+ $this->assertSame(null, $this->configuration->getCustomHydrationMode('NonExisting'));
+ $this->configuration->addCustomHydrationMode('HydrationModeName', __CLASS__);
+ $this->assertSame(__CLASS__, $this->configuration->getCustomHydrationMode('HydrationModeName'));
+ }
+
+ public function testSetGetClassMetadataFactoryName()
+ {
+ $this->assertSame('Doctrine\ORM\Mapping\ClassMetadataFactory', $this->configuration->getClassMetadataFactoryName());
+ $this->configuration->setClassMetadataFactoryName(__CLASS__);
+ $this->assertSame(__CLASS__, $this->configuration->getClassMetadataFactoryName());
+ }
+
+ public function testAddGetFilters()
+ {
+ $this->assertSame(null, $this->configuration->getFilterClassName('NonExistingFilter'));
+ $this->configuration->addFilter('FilterName', __CLASS__);
+ $this->assertSame(__CLASS__, $this->configuration->getFilterClassName('FilterName'));
+ }
+
+ public function setDefaultRepositoryClassName()
+ {
+ $this->assertSame('Doctrine\ORM\EntityRepository', $this->configuration->getDefaultRepositoryClassName());
+ $repositoryClass = 'Doctrine\Tests\Models\DDC753\DDC753CustomRepository';
+ $this->configuration->setDefaultRepositoryClassName($repositoryClass);
+ $this->assertSame($repositoryClass, $this->configuration->getDefaultRepositoryClassName());
+ $this->setExpectedException('Doctrine\ORM\ORMException');
+ $this->configuration->setDefaultRepositoryClassName(__CLASS__);
+ }
+
+ public function testSetGetNamingStrategy()
+ {
+ $this->assertInstanceOf('Doctrine\ORM\Mapping\NamingStrategy', $this->configuration->getNamingStrategy());
+ $namingStrategy = $this->getMock('Doctrine\ORM\Mapping\NamingStrategy');
+ $this->configuration->setNamingStrategy($namingStrategy);
+ $this->assertSame($namingStrategy, $this->configuration->getNamingStrategy());
+ }
+
+ public function testSetGetQuoteStrategy()
+ {
+ $this->assertInstanceOf('Doctrine\ORM\Mapping\QuoteStrategy', $this->configuration->getQuoteStrategy());
+ $quoteStrategy = $this->getMock('Doctrine\ORM\Mapping\QuoteStrategy');
+ $this->configuration->setQuoteStrategy($quoteStrategy);
+ $this->assertSame($quoteStrategy, $this->configuration->getQuoteStrategy());
+ }
+}
+
+class ConfigurationTestAnnotationReaderChecker
+{
+ /** @PrePersist */
+ public function simpleAnnotationMethod()
+ {
+ }
+
+ /** @AnnotationNamespace\PrePersist */
+ public function namespacedAnnotationMethod()
+ {
+ }
+}
View
2 tests/Doctrine/Tests/ORM/Functional/Locking/LockAgentWorker.php
@@ -95,7 +95,7 @@ protected function createEntityManager($conn)
$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();
View
2 tests/Doctrine/Tests/OrmFunctionalTestCase.php
@@ -342,7 +342,7 @@ protected function _getEntityManager($config = null, $eventManager = null) {
$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);
View
2 tests/Doctrine/Tests/OrmTestCase.php
@@ -76,7 +76,7 @@ protected function _getTestEntityManager($conn = null, $conf = null, $eventManag
$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');
Something went wrong with that request. Please try again.