diff --git a/src/Symfony/Component/Validator/ConstraintValidator.php b/src/Symfony/Component/Validator/ConstraintValidator.php index 201db0f2308eb..d80cfb439c0e7 100644 --- a/src/Symfony/Component/Validator/ConstraintValidator.php +++ b/src/Symfony/Component/Validator/ConstraintValidator.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Validator; +use Symfony\Component\Validator\Context\ExecutionContextInterface as NewExecutionContextInterface; + /** * Base class for constraint validators * @@ -21,15 +23,18 @@ abstract class ConstraintValidator implements ConstraintValidatorInterface { /** - * @var ExecutionContextInterface + * @var ExecutionContextInterface|NewExecutionContextInterface */ protected $context; /** * {@inheritdoc} */ - public function initialize(ExecutionContextInterface $context) + public function initialize($context) { + if (!$context instanceof NewExecutionContextInterface && !$context instanceof ExecutionContextInterface) { + throw new \InvalidArgumentException('Context must be instance of Symfony\Component\Validator\Context\ExecutionContextInterface or Symfony\Component\Validator\ExecutionContextInterface'); + } $this->context = $context; } } diff --git a/src/Symfony/Component/Validator/ConstraintValidatorInterface.php b/src/Symfony/Component/Validator/ConstraintValidatorInterface.php index f7538a1fef619..a5110f014dab1 100644 --- a/src/Symfony/Component/Validator/ConstraintValidatorInterface.php +++ b/src/Symfony/Component/Validator/ConstraintValidatorInterface.php @@ -11,6 +11,8 @@ namespace Symfony\Component\Validator; +use Symfony\Component\Validator\Context\ExecutionContextInterface as NewExecutionContextInterface; + /** * @author Bernhard Schussek * @@ -21,9 +23,9 @@ interface ConstraintValidatorInterface /** * Initializes the constraint validator. * - * @param ExecutionContextInterface $context The current validation context + * @param ExecutionContextInterface|NewExecutionContextInterface $context The current validation context */ - public function initialize(ExecutionContextInterface $context); + public function initialize($context); /** * Checks if the passed value is valid. diff --git a/src/Symfony/Component/Validator/Tests/Fixtures/ConstraintAValidator.php b/src/Symfony/Component/Validator/Tests/Fixtures/ConstraintAValidator.php index b3b85c895b016..dfd72a1790733 100644 --- a/src/Symfony/Component/Validator/Tests/Fixtures/ConstraintAValidator.php +++ b/src/Symfony/Component/Validator/Tests/Fixtures/ConstraintAValidator.php @@ -13,13 +13,12 @@ use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; -use Symfony\Component\Validator\ExecutionContextInterface; class ConstraintAValidator extends ConstraintValidator { public static $passedContext; - public function initialize(ExecutionContextInterface $context) + public function initialize($context) { parent::initialize($context); diff --git a/src/Symfony/Component/Validator/Tests/Validator/ConstraintValidatorTest.php b/src/Symfony/Component/Validator/Tests/Validator/ConstraintValidatorTest.php new file mode 100644 index 0000000000000..c51728ae0c5a0 --- /dev/null +++ b/src/Symfony/Component/Validator/Tests/Validator/ConstraintValidatorTest.php @@ -0,0 +1,42 @@ +getMock('Symfony\Component\Validator\Context\ExecutionContextInterface'); + $constraintvalidator = new ConstraintAValidator(); + $constraintvalidator->initialize($context); + $this->assertAttributeSame($context, 'context', $constraintvalidator); + } + + public function testConstraintValidatorUntilSymfony24() + { + $context = $this->getMock('Symfony\Component\Validator\ExecutionContextInterface'); + $constraintvalidator = new ConstraintAValidator(); + $constraintvalidator->initialize($context); + $this->assertAttributeSame($context, 'context', $constraintvalidator); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testInvalidConstraintValidator() + { + $constraintvalidator = new ConstraintAValidator(); + $constraintvalidator->initialize(null); + } +}