From 9bf501dd25e4d715665dacae4ef7cd645ef4e332 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sat, 9 Feb 2013 20:27:39 +0100 Subject: [PATCH] Revert "allowed to pass filter objects to the configurator" This reverts commit a9b4debe37370a4ff30141f8e4c6a444c226e06c. See the discussion on the original PR: https://github.com/doctrine/doctrine2/pull/434 Conflicts: lib/Doctrine/ORM/Configuration.php --- lib/Doctrine/ORM/Configuration.php | 26 +++++-------------- lib/Doctrine/ORM/Query/FilterCollection.php | 6 ++--- .../Doctrine/Tests/ORM/ConfigurationTest.php | 4 +-- .../Tests/ORM/Functional/SQLFilterTest.php | 20 ++------------ 4 files changed, 13 insertions(+), 43 deletions(-) diff --git a/lib/Doctrine/ORM/Configuration.php b/lib/Doctrine/ORM/Configuration.php index b0a09cbb5..959a206dd 100644 --- a/lib/Doctrine/ORM/Configuration.php +++ b/lib/Doctrine/ORM/Configuration.php @@ -635,24 +635,12 @@ class Configuration extends \Doctrine\DBAL\Configuration /** * Adds a filter to the list of possible filters. * - * @param string $name The name of the filter. - * @param string|Query\Filter\SQLFilter $filter The filter class name or an SQLFilter instance. - * - * @return void - * - * @throws \InvalidArgumentException If the filter is an object and it doesn't - * extend the Query\Filter\SQLFilter class. + * @param string $name The name of the filter. + * @param string $className The class name of the filter. */ - public function addFilter($name, $filter) + public function addFilter($name, $className) { - if (is_object($filter) && ! $filter instanceof Query\Filter\SQLFilter) { - throw new \InvalidArgumentException( - "A filter can be either a class name or an object extending \Doctrine\ORM\Query\Filter\SQLFilter," . - " instance of '" . get_class($filter) . "' given." - ); - } - - $this->_attributes['filters'][$name] = $filter; + $this->_attributes['filters'][$name] = $className; } /** @@ -660,10 +648,10 @@ class Configuration extends \Doctrine\DBAL\Configuration * * @param string $name The name of the filter. * - * @return null|string|Query\Filter\SQLFilter The class name of the filter, an - * SQLFilter instance or null of it is not defined. + * @return string The class name of the filter, or null of it is not + * defined. */ - public function getFilter($name) + public function getFilterClassName($name) { return isset($this->_attributes['filters'][$name]) ? $this->_attributes['filters'][$name] diff --git a/lib/Doctrine/ORM/Query/FilterCollection.php b/lib/Doctrine/ORM/Query/FilterCollection.php index 02100a307..e26d093f8 100644 --- a/lib/Doctrine/ORM/Query/FilterCollection.php +++ b/lib/Doctrine/ORM/Query/FilterCollection.php @@ -104,14 +104,12 @@ class FilterCollection */ public function enable($name) { - if (null === $filter = $this->config->getFilter($name)) { + if (null === $filterClass = $this->config->getFilterClassName($name)) { throw new \InvalidArgumentException("Filter '" . $name . "' does not exist."); } if (!isset($this->enabledFilters[$name])) { - $this->enabledFilters[$name] = is_object($filter) - ? $filter - : new $filter($this->em); + $this->enabledFilters[$name] = new $filterClass($this->em); // Keep the enabled filters sorted for the hash ksort($this->enabledFilters); diff --git a/tests/Doctrine/Tests/ORM/ConfigurationTest.php b/tests/Doctrine/Tests/ORM/ConfigurationTest.php index 5f805fb86..8405c3035 100644 --- a/tests/Doctrine/Tests/ORM/ConfigurationTest.php +++ b/tests/Doctrine/Tests/ORM/ConfigurationTest.php @@ -230,9 +230,9 @@ class ConfigurationTest extends PHPUnit_Framework_TestCase public function testAddGetFilters() { - $this->assertSame(null, $this->configuration->getFilter('NonExistingFilter')); + $this->assertSame(null, $this->configuration->getFilterClassName('NonExistingFilter')); $this->configuration->addFilter('FilterName', __CLASS__); - $this->assertSame(__CLASS__, $this->configuration->getFilter('FilterName')); + $this->assertSame(__CLASS__, $this->configuration->getFilterClassName('FilterName')); } public function setDefaultRepositoryClassName() diff --git a/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php b/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php index 7e2d59588..1f94d86a3 100644 --- a/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php +++ b/tests/Doctrine/Tests/ORM/Functional/SQLFilterTest.php @@ -58,27 +58,11 @@ class SQLFilterTest extends \Doctrine\Tests\OrmFunctionalTestCase public function testConfigureFilter() { $config = new \Doctrine\ORM\Configuration(); - $validFilter = $this->getMockBuilder('\Doctrine\ORM\Query\Filter\SQLFilter') - ->disableOriginalConstructor() - ->getMock(); - $config->addFilter("geolocation", $validFilter); $config->addFilter("locale", "\Doctrine\Tests\ORM\Functional\MyLocaleFilter"); - $this->assertEquals("\Doctrine\Tests\ORM\Functional\MyLocaleFilter", $config->getFilter("locale")); - $this->assertNull($config->getFilter("foo")); - $this->assertInstanceOf("\Doctrine\ORM\Query\Filter\SQLFilter", $config->getFilter("geolocation")); - } - - /** - * @expectedException InvalidArgumentException - */ - public function testConfigureFilterFails() - { - $config = new \Doctrine\ORM\Configuration(); - $invalidFilter = $this->getMock('\StdClass'); - - $config->addFilter("geolocation", $invalidFilter); + $this->assertEquals("\Doctrine\Tests\ORM\Functional\MyLocaleFilter", $config->getFilterClassName("locale")); + $this->assertNull($config->getFilterClassName("foo")); } public function testEntityManagerEnableFilter()