From 3707b34cbb1bb37dfe6b0f50d915d31303d3b7ea Mon Sep 17 00:00:00 2001 From: "Fabio B. Silva" Date: Thu, 8 Sep 2011 17:21:06 -0300 Subject: [PATCH] Change repository type for EntityRepository --- lib/Doctrine/ORM/Configuration.php | 8 +-- lib/Doctrine/ORM/ORMException.php | 5 +- .../Models/DDC753/DDC753DefaultRepository.php | 49 +------------------ .../ORM/Functional/EntityRepositoryTest.php | 17 +------ 4 files changed, 9 insertions(+), 70 deletions(-) diff --git a/lib/Doctrine/ORM/Configuration.php b/lib/Doctrine/ORM/Configuration.php index 42ceded0d..ee6496087 100644 --- a/lib/Doctrine/ORM/Configuration.php +++ b/lib/Doctrine/ORM/Configuration.php @@ -522,13 +522,13 @@ class Configuration extends \Doctrine\DBAL\Configuration * * @since 2.2 * @param string $className - * @throws ORMException If not implements Doctrine\Common\Persistence\ObjectRepository + * @throws ORMException If not is a Doctrine\ORM\EntityRepository */ public function setDefaultRepositoryClassName($className) { - $class = new \ReflectionClass($className); - if (!$class->implementsInterface('Doctrine\Common\Persistence\ObjectRepository')) { - throw ORMException::invalidObjectRepository($className); + if ($className != "Doctrine\ORM\EntityRepository" && + !is_subclass_of($className, 'Doctrine\ORM\EntityRepository')){ + throw ORMException::invalidEntityRepository($className); } $this->_attributes['defaultRepositoryClassName'] = $className; } diff --git a/lib/Doctrine/ORM/ORMException.php b/lib/Doctrine/ORM/ORMException.php index c1115c260..aa9657552 100644 --- a/lib/Doctrine/ORM/ORMException.php +++ b/lib/Doctrine/ORM/ORMException.php @@ -131,8 +131,9 @@ class ORMException extends Exception ); } - public static function invalidObjectRepository($className) { + public static function invalidEntityRepository($className) + { return new self("Invalid repository class '".$className."'. ". - "it must implement Doctrine\Common\Persistence\ObjectRepository."); + "it must be a Doctrine\ORM\EntityRepository."); } } diff --git a/tests/Doctrine/Tests/Models/DDC753/DDC753DefaultRepository.php b/tests/Doctrine/Tests/Models/DDC753/DDC753DefaultRepository.php index 85a981c09..feba2cb50 100644 --- a/tests/Doctrine/Tests/Models/DDC753/DDC753DefaultRepository.php +++ b/tests/Doctrine/Tests/Models/DDC753/DDC753DefaultRepository.php @@ -22,55 +22,8 @@ namespace Doctrine\Tests\Models\DDC753; use Doctrine\ORM\EntityRepository; -class DDC753DefaultRepository implements \Doctrine\Common\Persistence\ObjectRepository +class DDC753DefaultRepository extends EntityRepository { - - /** - * @var Doctrine\ORM\EntityRepository - */ - private $repository; - - /** - * @param EntityManager $em - * @param ClassMetadata $classMetadata - */ - public function __construct($em, $class) - { - $this->repository = new EntityRepository($em, $class); - } - - /** - * {@inheritdoc} - */ - public function find($id) - { - return $this->repository->find($id); - } - - /** - * {@inheritdoc} - */ - public function findAll() - { - return $this->repository->findAll; - } - - /** - * {@inheritdoc} - */ - public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) - { - return $this->repository->findBy($criteria, $orderBy, $limit, $offset); - } - - /** - * {@inheritdoc} - */ - public function findOneBy(array $criteria) - { - return $this->repository->findOneBy($criteria); - } - /** * @return bool */ diff --git a/tests/Doctrine/Tests/ORM/Functional/EntityRepositoryTest.php b/tests/Doctrine/Tests/ORM/Functional/EntityRepositoryTest.php index 40133c3cf..c5216fb94 100644 --- a/tests/Doctrine/Tests/ORM/Functional/EntityRepositoryTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/EntityRepositoryTest.php @@ -463,7 +463,7 @@ class EntityRepositoryTest extends \Doctrine\Tests\OrmFunctionalTestCase /** * @group DDC-753 * @expectedException Doctrine\ORM\ORMException - * @expectedExceptionMessage Invalid repository class 'Doctrine\Tests\Models\DDC753\DDC753InvalidRepository'. it must implement Doctrine\Common\Persistence\ObjectRepository. + * @expectedExceptionMessage Invalid repository class 'Doctrine\Tests\Models\DDC753\DDC753InvalidRepository'. it must be a Doctrine\ORM\EntityRepository. */ public function testSetDefaultRepositoryInvalidClassError() { @@ -471,20 +471,5 @@ class EntityRepositoryTest extends \Doctrine\Tests\OrmFunctionalTestCase $this->_em->getConfiguration()->setDefaultRepositoryClassName("Doctrine\Tests\Models\DDC753\DDC753InvalidRepository"); } - - /** - * @group DDC-753 - * @todo check it is necessary throws exception when a repository is not a Doctrine\Common\Persistence\ObjectRepository - * ClassMetadataInfo#setCustomRepositoryClass - */ - public function testEntityWithInvalidRepositoryError() - { - $this->assertEquals($this->_em->getConfiguration()->getDefaultRepositoryClassName(), "Doctrine\ORM\EntityRepository"); - $repos = $this->_em->getRepository('Doctrine\Tests\Models\DDC753\DDC753EntityWithInvalidRepository'); - - $this->assertInstanceOf("\stdClass", $repos); - - $this->markTestIncomplete(); - } }