From 8bdb7130738df5b7a9c5d8f73e3cbfb72149c909 Mon Sep 17 00:00:00 2001 From: "Fabio B. Silva" Date: Fri, 23 Dec 2011 14:41:03 -0200 Subject: [PATCH] add support for NamingStrategy --- lib/Doctrine/ORM/Configuration.php | 25 +++++++++++++++++++ .../ORM/Mapping/ClassMetadataFactory.php | 2 +- .../ORM/Mapping/AbstractMappingDriverTest.php | 23 +++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/lib/Doctrine/ORM/Configuration.php b/lib/Doctrine/ORM/Configuration.php index 83b4dc5dd..2b9fb5f7c 100644 --- a/lib/Doctrine/ORM/Configuration.php +++ b/lib/Doctrine/ORM/Configuration.php @@ -548,4 +548,29 @@ class Configuration extends \Doctrine\DBAL\Configuration return isset($this->_attributes['defaultRepositoryClassName']) ? $this->_attributes['defaultRepositoryClassName'] : 'Doctrine\ORM\EntityRepository'; } + + /** + * Set naming strategy. + * + * @since 2.3 + * @param NamingStrategy $namingStrategy + */ + public function setNamingStrategy(NamingStrategy $namingStrategy) + { + $this->_attributes['namingStrategy'] = $namingStrategy; + } + + /** + * Get naming strategy.. + * + * @since 2.3 + * @return NamingStrategy + */ + public function getNamingStrategy() + { + if (!isset($this->_attributes['namingStrategy'])) { + $this->_attributes['namingStrategy'] = new DefaultNamingStrategy(); + } + return $this->_attributes['namingStrategy']; + } } diff --git a/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php b/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php index bf802ecf9..9fd537d6a 100644 --- a/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php +++ b/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php @@ -385,7 +385,7 @@ class ClassMetadataFactory implements ClassMetadataFactoryInterface */ protected function newClassMetadataInstance($className) { - return new ClassMetadata($className); + return new ClassMetadata($className, $this->em->getConfiguration()->getNamingStrategy()); } /** diff --git a/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php b/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php index 0042259e1..0ddcb5dfb 100644 --- a/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php +++ b/tests/Doctrine/Tests/ORM/Mapping/AbstractMappingDriverTest.php @@ -392,6 +392,29 @@ abstract class AbstractMappingDriverTest extends \Doctrine\Tests\OrmTestCase $this->assertEquals("INT unsigned NOT NULL", $class->fieldMappings['id']['columnDefinition']); $this->assertEquals("VARCHAR(255) NOT NULL", $class->fieldMappings['value']['columnDefinition']); } + + /** + * @group DDC-559 + */ + public function testNamingStrategy() + { + $driver = $this->_loadDriver(); + $em = $this->_getTestEntityManager(); + $factory = new \Doctrine\ORM\Mapping\ClassMetadataFactory(); + $em->getConfiguration()->setMetadataDriverImpl($driver); + $factory->setEntityManager($em); + + + $this->assertInstanceOf('Doctrine\ORM\DefaultNamingStrategy', $em->getConfiguration()->getNamingStrategy()); + $em->getConfiguration()->setNamingStrategy(new \Doctrine\ORM\UnderscoreNamingStrategy('upper')); + $this->assertInstanceOf('Doctrine\ORM\UnderscoreNamingStrategy', $em->getConfiguration()->getNamingStrategy()); + + $class = $factory->getMetadataFor('Doctrine\Tests\Models\DDC1476\DDC1476EntityWithDefaultFieldType'); + + $this->assertEquals('ID', $class->columnNames['id']); + $this->assertEquals('NAME', $class->columnNames['name']); + $this->assertEquals('DDC1476ENTITY_WITH_DEFAULT_FIELD_TYPE', $class->table['name']); + } } /**