From 43535afbfd948c2f6be3aab2049bf7d2293ac339 Mon Sep 17 00:00:00 2001 From: Sebastian Blum Date: Tue, 8 Jul 2014 13:46:05 +0200 Subject: [PATCH 1/6] Fix for Issue 11036 --- .../EventListener/ValidationListener.php | 22 ++++- .../Type/FormTypeValidatorExtension.php | 21 +++- .../Validator/ValidatorExtension.php | 30 +++++- .../EventListener/ValidationListenerTest.php | 26 +++++ .../Type/FormTypeValidatorExtensionTest.php | 27 ++++++ .../Validator/ValidatorExtensionTest.php | 96 +++++++++++++++++++ 6 files changed, 211 insertions(+), 11 deletions(-) create mode 100644 src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php diff --git a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php index 26d2bfdaa7eb8..94f1ebefd65c6 100644 --- a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php +++ b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php @@ -12,8 +12,10 @@ namespace Symfony\Component\Form\Extension\Validator\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\Form\Exception\InvalidArgumentException; use Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapperInterface; -use Symfony\Component\Validator\ValidatorInterface; +use Symfony\Component\Validator\Validator\ValidatorInterface; +use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface; use Symfony\Component\Form\FormEvents; use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\Extension\Validator\Constraints\Form; @@ -35,9 +37,23 @@ public static function getSubscribedEvents() return array(FormEvents::POST_SUBMIT => 'validateForm'); } - public function __construct(ValidatorInterface $validator, ViolationMapperInterface $violationMapper) + /** + * @param ValidatorInterface $validator The validator requires an instance of ValidatorInterface + * since 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} + * until 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} + * @param ViolationMapperInterface $violationMapper The ViolationMapper + * @throws \Symfony\Component\Form\Exception\InvalidArgumentException + */ + public function __construct($validator, ViolationMapperInterface $violationMapper) { - $this->validator = $validator; + if ($validator instanceof ValidatorInterface + || $validator instanceof LegacyValidatorInterface + ) { + $this->validator = $validator; + } else { + throw new InvalidArgumentException(sprintf('Validator must be instance of ValidatorInterface.')); + } + $this->violationMapper = $violationMapper; } diff --git a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php index 8d4e3d5642f25..85add8020d6c8 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php @@ -11,10 +11,12 @@ namespace Symfony\Component\Form\Extension\Validator\Type; +use Symfony\Component\Form\Exception\InvalidArgumentException; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapper; use Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener; -use Symfony\Component\Validator\ValidatorInterface; +use Symfony\Component\Validator\Validator\ValidatorInterface; +use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface; use Symfony\Component\OptionsResolver\Options; use Symfony\Component\OptionsResolver\OptionsResolverInterface; @@ -33,9 +35,22 @@ class FormTypeValidatorExtension extends BaseValidatorExtension */ private $violationMapper; - public function __construct(ValidatorInterface $validator) + /** + * @param ValidatorInterface $validator The validator requires an instance of ValidatorInterface + * since 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} + * until 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} + * @throws \Symfony\Component\Form\Exception\InvalidArgumentException + */ + public function __construct($validator) { - $this->validator = $validator; + if ($validator instanceof ValidatorInterface + || $validator instanceof LegacyValidatorInterface + ) { + $this->validator = $validator; + } else { + throw new InvalidArgumentException(sprintf('Validator must be instance of ValidatorInterface.')); + } + $this->violationMapper = new ViolationMapper(); } diff --git a/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php index 572a4ac9388fc..4b60e01931b2e 100644 --- a/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php @@ -11,10 +11,12 @@ namespace Symfony\Component\Form\Extension\Validator; +use Symfony\Component\Form\Exception\InvalidArgumentException; use Symfony\Component\Form\Extension\Validator\Constraints\Form; use Symfony\Component\Form\AbstractExtension; -use Symfony\Component\Validator\ValidatorInterface; use Symfony\Component\Validator\Constraints\Valid; +use Symfony\Component\Validator\Validator\ValidatorInterface; +use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface; /** * Extension supporting the Symfony2 Validator component in forms. @@ -25,17 +27,35 @@ class ValidatorExtension extends AbstractExtension { private $validator; - public function __construct(ValidatorInterface $validator) + /** + * @param ValidatorInterface $validator The validator requires an instance of ValidatorInterface + * since 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} + * until 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} + * @throws \Symfony\Component\Form\Exception\InvalidArgumentException + */ + public function __construct($validator) { - $this->validator = $validator; + // ValidatorInterface since 2.5 + if ($validator instanceof ValidatorInterface) { + $this->validator = $validator; + + /** @var \Symfony\Component\Validator\Mapping\ClassMetadata $metadata */ + $metadata = $this->validator->getMetadataFor('Symfony\Component\Form\Form'); + // ValidatorInterface until 2.4 + } elseif ($validator instanceof LegacyValidatorInterface) { + $this->validator = $validator; + + /** @var \Symfony\Component\Validator\Mapping\ClassMetadata $metadata */ + $metadata = $this->validator->getMetadataFactory()->getMetadataFor('Symfony\Component\Form\Form'); + } else { + throw new InvalidArgumentException(sprintf('Validator must be instance of ValidatorInterface.')); + } // Register the form constraints in the validator programmatically. // This functionality is required when using the Form component without // the DIC, where the XML file is loaded automatically. Thus the following // code must be kept synchronized with validation.xml - /** @var \Symfony\Component\Validator\Mapping\ClassMetadata $metadata */ - $metadata = $this->validator->getMetadataFactory()->getMetadataFor('Symfony\Component\Form\Form'); $metadata->addConstraint(new Form()); $metadata->addPropertyConstraint('children', new Valid()); } diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php index 8d8f9235d1ce6..69b16d832a1ba 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php @@ -158,4 +158,30 @@ public function testValidateWithEmptyViolationList() $this->listener->validateForm(new FormEvent($form, null)); } + + public function testValidatorInterfaceSinceSymfony25() + { + // Mock of ValidatorInterface since 2.5 + $validator = $this->getMock('Symfony\Component\Validator\Validator\ValidatorInterface'); + + $listener = new ValidationListener($validator, $this->violationMapper); + $this->assertAttributeSame($validator, 'validator', $listener); + } + + public function testValidatorInterfaceUntilSymfony24() + { + // Mock of ValidatorInterface until 2.4 + $validator = $this->getMock('Symfony\Component\Validator\ValidatorInterface'); + + $listener = new ValidationListener($validator, $this->violationMapper); + $this->assertAttributeSame($validator, 'validator', $listener); + } + + /** + * @expectedException \Symfony\Component\Form\Exception\InvalidArgumentException + */ + public function testInvalidValidatorInterface() + { + new ValidationListener(null, $this->violationMapper); + } } diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php index 298306b57d1ba..13477e542484a 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Form\Tests\Extension\Validator\Type; +use Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension; use Symfony\Component\Validator\ConstraintViolationList; class FormTypeValidatorExtensionTest extends BaseValidatorExtensionTest @@ -36,6 +37,32 @@ public function testSubmitValidatesData() $form->submit(array()); } + public function testValidatorInterfaceSinceSymfony25() + { + // Mock of ValidatorInterface since 2.5 + $validator = $this->getMock('Symfony\Component\Validator\Validator\ValidatorInterface'); + + $formTypeValidatorExtension = new FormTypeValidatorExtension($validator); + $this->assertAttributeSame($validator, 'validator', $formTypeValidatorExtension); + } + + public function testValidatorInterfaceUntilSymfony24() + { + // Mock of ValidatorInterface until 2.4 + $validator = $this->getMock('Symfony\Component\Validator\ValidatorInterface'); + + $formTypeValidatorExtension = new FormTypeValidatorExtension($validator); + $this->assertAttributeSame($validator, 'validator', $formTypeValidatorExtension); + } + + /** + * @expectedException \Symfony\Component\Form\Exception\InvalidArgumentException + */ + public function testInvalidValidatorInterface() + { + new FormTypeValidatorExtension(null); + } + protected function createForm(array $options = array()) { return $this->factory->create('form', null, $options); diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php new file mode 100644 index 0000000000000..0a59166a0db6a --- /dev/null +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php @@ -0,0 +1,96 @@ + +* +* For the full copyright and license information, please view the LICENSE +* file that was distributed with this source code. +*/ + +namespace Symfony\Component\Form\Tests\Extension\Validator; + +use Symfony\Component\Form\Extension\Validator\ValidatorExtension; + +/** + * @author sebastian blum + */ +class ValidatorExtensionTest extends \PHPUnit_Framework_TestCase +{ + public function testValidatorInterfaceSinceSymfony25() + { + $classMetaData = $this->createClassMetaDataMock(); + + // Mock of ValidatorInterface since 2.5 + $validator = $this->getMock('Symfony\Component\Validator\Validator\ValidatorInterface'); + + $validator + ->expects($this->once()) + ->method('getMetadataFor') + ->with($this->identicalTo('Symfony\Component\Form\Form')) + ->will($this->returnValue($classMetaData)) + ; + + $validatorExtension = new ValidatorExtension($validator); + $this->assertAttributeSame($validator, 'validator', $validatorExtension); + } + + public function testValidatorInterfaceUntilSymfony24() + { + $classMetaData = $this->createClassMetaDataMock(); + + $metaDataFactory = $this->getMock('Symfony\Component\Validator\MetadataFactoryInterface'); + + $metaDataFactory + ->expects($this->once()) + ->method('getMetadataFor') + ->with($this->identicalTo('Symfony\Component\Form\Form')) + ->will($this->returnValue($classMetaData)) + ; + + // Mock of ValidatorInterface until 2.4 + $validator = $this->getMock('Symfony\Component\Validator\ValidatorInterface'); + + $validator + ->expects($this->once()) + ->method('getMetadataFactory') + ->will($this->returnValue($metaDataFactory)) + ; + + $validatorExtension = new ValidatorExtension($validator); + $this->assertAttributeSame($validator, 'validator', $validatorExtension); + } + + /** + * @expectedException \Symfony\Component\Form\Exception\InvalidArgumentException + */ + public function testInvalidValidatorInterface() + { + new ValidatorExtension(null); + } + + /** + * @return mixed + */ + private function createClassMetaDataMock() + { + $classMetaData = $this->getMockBuilder('Symfony\Component\Validator\Mapping\ClassMetadata') + ->disableOriginalConstructor() + ->getMock(); + + $classMetaData + ->expects($this->once()) + ->method('addConstraint') + ->with($this->isInstanceOf('Symfony\Component\Form\Extension\Validator\Constraints\Form')); + $classMetaData + ->expects($this->once()) + ->method('addPropertyConstraint') + ->with( + $this->identicalTo('children'), + $this->isInstanceOf('Symfony\Component\Validator\Constraints\Valid') + ); + + return $classMetaData; + } +} From ef967103a7e3925f075b89ee614ed5affcc696ca Mon Sep 17 00:00:00 2001 From: Sebastian Blum Date: Tue, 8 Jul 2014 14:37:25 +0200 Subject: [PATCH 2/6] Fix for #11036, updated with comments of @Stof --- .../EventListener/ValidationListener.php | 19 +++++++------------ .../Type/FormTypeValidatorExtension.php | 17 ++++++----------- .../Validator/ValidatorExtension.php | 14 ++++++-------- .../EventListener/ValidationListenerTest.php | 4 ++-- .../Type/FormTypeValidatorExtensionTest.php | 4 ++-- .../Validator/ValidatorExtensionTest.php | 4 ++-- 6 files changed, 25 insertions(+), 37 deletions(-) diff --git a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php index 94f1ebefd65c6..8bcfcc0249402 100644 --- a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php +++ b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php @@ -12,7 +12,6 @@ namespace Symfony\Component\Form\Extension\Validator\EventListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\Form\Exception\InvalidArgumentException; use Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapperInterface; use Symfony\Component\Validator\Validator\ValidatorInterface; use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface; @@ -38,22 +37,18 @@ public static function getSubscribedEvents() } /** - * @param ValidatorInterface $validator The validator requires an instance of ValidatorInterface - * since 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} - * until 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} - * @param ViolationMapperInterface $violationMapper The ViolationMapper - * @throws \Symfony\Component\Form\Exception\InvalidArgumentException + * @param ValidatorInterface|LegacyValidatorInterface $validator The validator requires an instance of ValidatorInterface + * since validator apiVersion 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} + * until validator apiVersion 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} + * @param ViolationMapperInterface $violationMapper The ViolationMapper */ public function __construct($validator, ViolationMapperInterface $violationMapper) { - if ($validator instanceof ValidatorInterface - || $validator instanceof LegacyValidatorInterface - ) { - $this->validator = $validator; - } else { - throw new InvalidArgumentException(sprintf('Validator must be instance of ValidatorInterface.')); + if (!$validator instanceof ValidatorInterface || !$validator instanceof LegacyValidatorInterface) { + throw new \InvalidArgumentException('Validator must be instance of ValidatorInterface.'); } + $this->validator = $validator; $this->violationMapper = $violationMapper; } diff --git a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php index 85add8020d6c8..5b4c41842858f 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Form\Extension\Validator\Type; -use Symfony\Component\Form\Exception\InvalidArgumentException; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapper; use Symfony\Component\Form\Extension\Validator\EventListener\ValidationListener; @@ -36,21 +35,17 @@ class FormTypeValidatorExtension extends BaseValidatorExtension private $violationMapper; /** - * @param ValidatorInterface $validator The validator requires an instance of ValidatorInterface - * since 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} - * until 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} - * @throws \Symfony\Component\Form\Exception\InvalidArgumentException + * @param ValidatorInterface|LegacyValidatorInterface $validator The validator requires an instance of ValidatorInterface + * since validator apiVersion 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} + * until validator apiVersion 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} */ public function __construct($validator) { - if ($validator instanceof ValidatorInterface - || $validator instanceof LegacyValidatorInterface - ) { - $this->validator = $validator; - } else { - throw new InvalidArgumentException(sprintf('Validator must be instance of ValidatorInterface.')); + if (!$validator instanceof ValidatorInterface || !$validator instanceof LegacyValidatorInterface) { + throw new \InvalidArgumentException('Validator must be instance of ValidatorInterface.'); } + $this->validator = $validator; $this->violationMapper = new ViolationMapper(); } diff --git a/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php index 4b60e01931b2e..7bfe02e14a9e4 100644 --- a/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Form\Extension\Validator; -use Symfony\Component\Form\Exception\InvalidArgumentException; use Symfony\Component\Form\Extension\Validator\Constraints\Form; use Symfony\Component\Form\AbstractExtension; use Symfony\Component\Validator\Constraints\Valid; @@ -28,27 +27,26 @@ class ValidatorExtension extends AbstractExtension private $validator; /** - * @param ValidatorInterface $validator The validator requires an instance of ValidatorInterface - * since 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} - * until 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} - * @throws \Symfony\Component\Form\Exception\InvalidArgumentException + * @param ValidatorInterface|LegacyValidatorInterface $validator The validator requires an instance of ValidatorInterface + * since validator apiVersion 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} + * until validator apiVersion 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} */ public function __construct($validator) { - // ValidatorInterface since 2.5 + // since validator apiVersion 2.5 if ($validator instanceof ValidatorInterface) { $this->validator = $validator; /** @var \Symfony\Component\Validator\Mapping\ClassMetadata $metadata */ $metadata = $this->validator->getMetadataFor('Symfony\Component\Form\Form'); - // ValidatorInterface until 2.4 + // until validator apiVersion 2.4 } elseif ($validator instanceof LegacyValidatorInterface) { $this->validator = $validator; /** @var \Symfony\Component\Validator\Mapping\ClassMetadata $metadata */ $metadata = $this->validator->getMetadataFactory()->getMetadataFor('Symfony\Component\Form\Form'); } else { - throw new InvalidArgumentException(sprintf('Validator must be instance of ValidatorInterface.')); + throw new \InvalidArgumentException('Validator must be instance of ValidatorInterface.'); } // Register the form constraints in the validator programmatically. diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php index 69b16d832a1ba..b66f86d8b15a8 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php @@ -161,7 +161,7 @@ public function testValidateWithEmptyViolationList() public function testValidatorInterfaceSinceSymfony25() { - // Mock of ValidatorInterface since 2.5 + // Mock of ValidatorInterface since apiVersion 2.5 $validator = $this->getMock('Symfony\Component\Validator\Validator\ValidatorInterface'); $listener = new ValidationListener($validator, $this->violationMapper); @@ -170,7 +170,7 @@ public function testValidatorInterfaceSinceSymfony25() public function testValidatorInterfaceUntilSymfony24() { - // Mock of ValidatorInterface until 2.4 + // Mock of ValidatorInterface until apiVersion 2.4 $validator = $this->getMock('Symfony\Component\Validator\ValidatorInterface'); $listener = new ValidationListener($validator, $this->violationMapper); diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php index 13477e542484a..ebaeb89fcb8ee 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php @@ -39,7 +39,7 @@ public function testSubmitValidatesData() public function testValidatorInterfaceSinceSymfony25() { - // Mock of ValidatorInterface since 2.5 + // Mock of ValidatorInterface since apiVersion 2.5 $validator = $this->getMock('Symfony\Component\Validator\Validator\ValidatorInterface'); $formTypeValidatorExtension = new FormTypeValidatorExtension($validator); @@ -48,7 +48,7 @@ public function testValidatorInterfaceSinceSymfony25() public function testValidatorInterfaceUntilSymfony24() { - // Mock of ValidatorInterface until 2.4 + // Mock of ValidatorInterface until apiVersion 2.4 $validator = $this->getMock('Symfony\Component\Validator\ValidatorInterface'); $formTypeValidatorExtension = new FormTypeValidatorExtension($validator); diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php index 0a59166a0db6a..7a374091299cc 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php @@ -22,7 +22,7 @@ public function testValidatorInterfaceSinceSymfony25() { $classMetaData = $this->createClassMetaDataMock(); - // Mock of ValidatorInterface since 2.5 + // Mock of ValidatorInterface since apiVersion 2.5 $validator = $this->getMock('Symfony\Component\Validator\Validator\ValidatorInterface'); $validator @@ -49,7 +49,7 @@ public function testValidatorInterfaceUntilSymfony24() ->will($this->returnValue($classMetaData)) ; - // Mock of ValidatorInterface until 2.4 + // Mock of ValidatorInterface until apiVersion 2.4 $validator = $this->getMock('Symfony\Component\Validator\ValidatorInterface'); $validator From bc059e6d0935bd6c6d77bb9d6ab1281f7fe4b47a Mon Sep 17 00:00:00 2001 From: Sebastian Blum Date: Tue, 8 Jul 2014 15:00:42 +0200 Subject: [PATCH 3/6] Fix for #11036, updated with comments of @Stof in the issue --- .../Extension/Validator/EventListener/ValidationListener.php | 2 +- .../Extension/Validator/Type/FormTypeValidatorExtension.php | 2 +- .../Validator/EventListener/ValidationListenerTest.php | 2 +- .../Extension/Validator/Type/FormTypeValidatorExtensionTest.php | 2 +- .../Form/Tests/Extension/Validator/ValidatorExtensionTest.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php index 8bcfcc0249402..ce5d6763f1221 100644 --- a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php +++ b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php @@ -44,7 +44,7 @@ public static function getSubscribedEvents() */ public function __construct($validator, ViolationMapperInterface $violationMapper) { - if (!$validator instanceof ValidatorInterface || !$validator instanceof LegacyValidatorInterface) { + if (!$validator instanceof ValidatorInterface && !$validator instanceof LegacyValidatorInterface) { throw new \InvalidArgumentException('Validator must be instance of ValidatorInterface.'); } diff --git a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php index 5b4c41842858f..1f6c7cf3f5db8 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php @@ -41,7 +41,7 @@ class FormTypeValidatorExtension extends BaseValidatorExtension */ public function __construct($validator) { - if (!$validator instanceof ValidatorInterface || !$validator instanceof LegacyValidatorInterface) { + if (!$validator instanceof ValidatorInterface && !$validator instanceof LegacyValidatorInterface) { throw new \InvalidArgumentException('Validator must be instance of ValidatorInterface.'); } diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php index b66f86d8b15a8..d819277db08d9 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/EventListener/ValidationListenerTest.php @@ -178,7 +178,7 @@ public function testValidatorInterfaceUntilSymfony24() } /** - * @expectedException \Symfony\Component\Form\Exception\InvalidArgumentException + * @expectedException \InvalidArgumentException */ public function testInvalidValidatorInterface() { diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php index ebaeb89fcb8ee..4ca10da50e88d 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/Type/FormTypeValidatorExtensionTest.php @@ -56,7 +56,7 @@ public function testValidatorInterfaceUntilSymfony24() } /** - * @expectedException \Symfony\Component\Form\Exception\InvalidArgumentException + * @expectedException \InvalidArgumentException */ public function testInvalidValidatorInterface() { diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php index 7a374091299cc..e75d194dba8e1 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php @@ -63,7 +63,7 @@ public function testValidatorInterfaceUntilSymfony24() } /** - * @expectedException \Symfony\Component\Form\Exception\InvalidArgumentException + * @expectedException \InvalidArgumentException */ public function testInvalidValidatorInterface() { From 66b3c8f1031a643de090d75a09f9ed283dbd5db8 Mon Sep 17 00:00:00 2001 From: Sebastian Blum Date: Tue, 8 Jul 2014 20:01:58 +0200 Subject: [PATCH 4/6] removed param comment from issue #11036 --- .../Validator/EventListener/ValidationListener.php | 6 ++---- .../Extension/Validator/Type/FormTypeValidatorExtension.php | 4 +--- .../Form/Extension/Validator/ValidatorExtension.php | 4 +--- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php index ce5d6763f1221..148b3fdc01a67 100644 --- a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php +++ b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php @@ -37,10 +37,8 @@ public static function getSubscribedEvents() } /** - * @param ValidatorInterface|LegacyValidatorInterface $validator The validator requires an instance of ValidatorInterface - * since validator apiVersion 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} - * until validator apiVersion 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} - * @param ViolationMapperInterface $violationMapper The ViolationMapper + * @param ValidatorInterface|LegacyValidatorInterface $validator + * @param ViolationMapperInterface $violationMapper */ public function __construct($validator, ViolationMapperInterface $violationMapper) { diff --git a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php index 1f6c7cf3f5db8..06c4e66d272c1 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php @@ -35,9 +35,7 @@ class FormTypeValidatorExtension extends BaseValidatorExtension private $violationMapper; /** - * @param ValidatorInterface|LegacyValidatorInterface $validator The validator requires an instance of ValidatorInterface - * since validator apiVersion 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} - * until validator apiVersion 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} + * @param ValidatorInterface|LegacyValidatorInterface $validator */ public function __construct($validator) { diff --git a/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php index 7bfe02e14a9e4..ebd9c191ff1d9 100644 --- a/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php @@ -27,9 +27,7 @@ class ValidatorExtension extends AbstractExtension private $validator; /** - * @param ValidatorInterface|LegacyValidatorInterface $validator The validator requires an instance of ValidatorInterface - * since validator apiVersion 2.5 instance of {@link Symfony\Component\Validator\Validator\ValidatorInterface} - * until validator apiVersion 2.4 instance of {@link Symfony\Component\Validator\ValidatorInterface} + * @param ValidatorInterface|LegacyValidatorInterface $validator */ public function __construct($validator) { From bb6eca91154d76e552f33d4d41540120af223a2f Mon Sep 17 00:00:00 2001 From: Sebastian Blum Date: Thu, 10 Jul 2014 14:27:24 +0200 Subject: [PATCH 5/6] Improved Exception Message --- .../Extension/Validator/EventListener/ValidationListener.php | 2 +- .../Extension/Validator/Type/FormTypeValidatorExtension.php | 2 +- .../Component/Form/Extension/Validator/ValidatorExtension.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php index 148b3fdc01a67..1faaf7c1110d3 100644 --- a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php +++ b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php @@ -43,7 +43,7 @@ public static function getSubscribedEvents() public function __construct($validator, ViolationMapperInterface $violationMapper) { if (!$validator instanceof ValidatorInterface && !$validator instanceof LegacyValidatorInterface) { - throw new \InvalidArgumentException('Validator must be instance of ValidatorInterface.'); + throw new \InvalidArgumentException('Validator must be instance of Symfony\Component\Validator\Validator\ValidatorInterface or deprecated Symfony\Component\Validator\ValidatorInterface'); } $this->validator = $validator; diff --git a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php index 06c4e66d272c1..20cdf52a3768b 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php @@ -40,7 +40,7 @@ class FormTypeValidatorExtension extends BaseValidatorExtension public function __construct($validator) { if (!$validator instanceof ValidatorInterface && !$validator instanceof LegacyValidatorInterface) { - throw new \InvalidArgumentException('Validator must be instance of ValidatorInterface.'); + throw new \InvalidArgumentException('Validator must be instance of Symfony\Component\Validator\Validator\ValidatorInterface or deprecated Symfony\Component\Validator\ValidatorInterface'); } $this->validator = $validator; diff --git a/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php index ebd9c191ff1d9..d1aa6faabac85 100644 --- a/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php @@ -44,7 +44,7 @@ public function __construct($validator) /** @var \Symfony\Component\Validator\Mapping\ClassMetadata $metadata */ $metadata = $this->validator->getMetadataFactory()->getMetadataFor('Symfony\Component\Form\Form'); } else { - throw new \InvalidArgumentException('Validator must be instance of ValidatorInterface.'); + throw new \InvalidArgumentException('Validator must be instance of Symfony\Component\Validator\Validator\ValidatorInterface or deprecated Symfony\Component\Validator\ValidatorInterface'); } // Register the form constraints in the validator programmatically. From 7d8aa9a8bcf9d23957d8042c63dafe394ed93ee4 Mon Sep 17 00:00:00 2001 From: Sebastian Blum Date: Fri, 11 Jul 2014 15:11:13 +0200 Subject: [PATCH 6/6] implemented feedback of @Stof, @stloyd and @Tobion --- .../Validator/EventListener/ValidationListener.php | 2 +- .../Validator/Type/FormTypeValidatorExtension.php | 2 +- .../Form/Extension/Validator/ValidatorExtension.php | 7 ++++--- .../Tests/Extension/Validator/ValidatorExtensionTest.php | 3 --- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php index 1faaf7c1110d3..62c59ddc43232 100644 --- a/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php +++ b/src/Symfony/Component/Form/Extension/Validator/EventListener/ValidationListener.php @@ -43,7 +43,7 @@ public static function getSubscribedEvents() public function __construct($validator, ViolationMapperInterface $violationMapper) { if (!$validator instanceof ValidatorInterface && !$validator instanceof LegacyValidatorInterface) { - throw new \InvalidArgumentException('Validator must be instance of Symfony\Component\Validator\Validator\ValidatorInterface or deprecated Symfony\Component\Validator\ValidatorInterface'); + throw new \InvalidArgumentException('Validator must be instance of Symfony\Component\Validator\Validator\ValidatorInterface or Symfony\Component\Validator\ValidatorInterface'); } $this->validator = $validator; diff --git a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php index 20cdf52a3768b..87abd9320a7f5 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/Type/FormTypeValidatorExtension.php @@ -40,7 +40,7 @@ class FormTypeValidatorExtension extends BaseValidatorExtension public function __construct($validator) { if (!$validator instanceof ValidatorInterface && !$validator instanceof LegacyValidatorInterface) { - throw new \InvalidArgumentException('Validator must be instance of Symfony\Component\Validator\Validator\ValidatorInterface or deprecated Symfony\Component\Validator\ValidatorInterface'); + throw new \InvalidArgumentException('Validator must be instance of Symfony\Component\Validator\Validator\ValidatorInterface or Symfony\Component\Validator\ValidatorInterface'); } $this->validator = $validator; diff --git a/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php b/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php index d1aa6faabac85..88890ae651187 100644 --- a/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php +++ b/src/Symfony/Component/Form/Extension/Validator/ValidatorExtension.php @@ -14,6 +14,7 @@ use Symfony\Component\Form\Extension\Validator\Constraints\Form; use Symfony\Component\Form\AbstractExtension; use Symfony\Component\Validator\Constraints\Valid; +use Symfony\Component\Validator\Mapping\ClassMetadata; use Symfony\Component\Validator\Validator\ValidatorInterface; use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface; @@ -35,16 +36,16 @@ public function __construct($validator) if ($validator instanceof ValidatorInterface) { $this->validator = $validator; - /** @var \Symfony\Component\Validator\Mapping\ClassMetadata $metadata */ + /** @var $metadata ClassMetadata */ $metadata = $this->validator->getMetadataFor('Symfony\Component\Form\Form'); // until validator apiVersion 2.4 } elseif ($validator instanceof LegacyValidatorInterface) { $this->validator = $validator; - /** @var \Symfony\Component\Validator\Mapping\ClassMetadata $metadata */ + /** @var $metadata ClassMetadata */ $metadata = $this->validator->getMetadataFactory()->getMetadataFor('Symfony\Component\Form\Form'); } else { - throw new \InvalidArgumentException('Validator must be instance of Symfony\Component\Validator\Validator\ValidatorInterface or deprecated Symfony\Component\Validator\ValidatorInterface'); + throw new \InvalidArgumentException('Validator must be instance of Symfony\Component\Validator\Validator\ValidatorInterface or Symfony\Component\Validator\ValidatorInterface'); } // Register the form constraints in the validator programmatically. diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php index e75d194dba8e1..bc69231fe2b06 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/ValidatorExtensionTest.php @@ -13,9 +13,6 @@ use Symfony\Component\Form\Extension\Validator\ValidatorExtension; -/** - * @author sebastian blum - */ class ValidatorExtensionTest extends \PHPUnit_Framework_TestCase { public function testValidatorInterfaceSinceSymfony25()