From 089188f6035619abc04cfdc5736f8e2a8eaaa510 Mon Sep 17 00:00:00 2001 From: Jakub Zalas Date: Fri, 13 Apr 2012 21:40:36 +0100 Subject: [PATCH] [Validator] Fixed StaticMethodLoader when used with abstract methods. --- .../Validator/Mapping/Loader/StaticMethodLoader.php | 2 +- .../Mapping/Loader/StaticMethodLoaderTest.php | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Validator/Mapping/Loader/StaticMethodLoader.php b/src/Symfony/Component/Validator/Mapping/Loader/StaticMethodLoader.php index a74ffbb429..3e90fe91b5 100644 --- a/src/Symfony/Component/Validator/Mapping/Loader/StaticMethodLoader.php +++ b/src/Symfony/Component/Validator/Mapping/Loader/StaticMethodLoader.php @@ -37,7 +37,7 @@ class StaticMethodLoader implements LoaderInterface throw new MappingException(sprintf('The method %s::%s should be static', $reflClass->getName(), $this->methodName)); } - if ($reflMethod->getDeclaringClass()->getName() != $reflClass->getName()) { + if ($reflClass->isAbstract() || $reflMethod->getDeclaringClass()->getName() != $reflClass->getName()) { return false; } diff --git a/tests/Symfony/Tests/Component/Validator/Mapping/Loader/StaticMethodLoaderTest.php b/tests/Symfony/Tests/Component/Validator/Mapping/Loader/StaticMethodLoaderTest.php index daaf89f6e9..6d4493a753 100644 --- a/tests/Symfony/Tests/Component/Validator/Mapping/Loader/StaticMethodLoaderTest.php +++ b/tests/Symfony/Tests/Component/Validator/Mapping/Loader/StaticMethodLoaderTest.php @@ -35,6 +35,14 @@ class StaticMethodLoaderTest extends \PHPUnit_Framework_TestCase $this->assertFalse($loader->loadClassMetadata($metadata)); } + public function testLoadClassMetadataReturnsFalseIfMethodIsAbstract() + { + $loader = new StaticMethodLoader('loadMetadata'); + $metadata = new ClassMetadata(__NAMESPACE__.'\AbstractStaticLoaderEntity'); + + $this->assertFalse($loader->loadClassMetadata($metadata)); + } + public function testLoadClassMetadata() { $loader = new StaticMethodLoader('loadMetadata'); @@ -80,3 +88,8 @@ class BaseStaticLoaderDocument $metadata->addConstraint(new ConstraintA()); } } + +abstract class AbstractStaticLoaderEntity +{ + abstract public static function loadMetadata(ClassMetadata $metadata); +}