diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index cd4f967b4e..15e0801fb9 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -718,7 +718,6 @@ class FrameworkExtension extends Extension switch ($config['api']) { case '2.4': $api = Validation::API_VERSION_2_4; - $container->setParameter('validator.validator_factory.class', $container->getParameter('validator.legacy_validator_factory.class')); break; case '2.5': $api = Validation::API_VERSION_2_5; diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml index e0cd37d6b1..336379a11b 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml @@ -11,7 +11,6 @@ Symfony\Component\Validator\Mapping\Cache\ApcCache Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory - Symfony\Bundle\FrameworkBundle\Validator\LegacyConstraintValidatorFactory Symfony\Component\Validator\Constraints\ExpressionValidator Symfony\Component\Validator\Constraints\EmailValidator diff --git a/src/Symfony/Bundle/FrameworkBundle/Validator/LegacyConstraintValidatorFactory.php b/src/Symfony/Bundle/FrameworkBundle/Validator/LegacyConstraintValidatorFactory.php deleted file mode 100644 index 3af644bb18..0000000000 --- a/src/Symfony/Bundle/FrameworkBundle/Validator/LegacyConstraintValidatorFactory.php +++ /dev/null @@ -1,95 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Bundle\FrameworkBundle\Validator; - -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\Validator\Constraint; -use Symfony\Component\Validator\ConstraintValidatorFactoryInterface; -use Symfony\Component\Validator\ConstraintValidatorInterface; -use Symfony\Component\Validator\Exception\UnexpectedTypeException; - -/** - * Like {@link ConstraintValidatorFactory}, but aware of services compatible - * with the 2.4 API. - * - * @author Bernhard Schussek - * @author Kris Wallsmith - * - * @see ConstraintValidatorFactory - */ -class LegacyConstraintValidatorFactory implements ConstraintValidatorFactoryInterface -{ - const BASE_NAMESPACE = 'Symfony\\Component\\Validator\\Constraints'; - const FORM_BASE_NAMESPACE = 'Symfony\\Component\\Form\\Extension\\Validator\\Constraints'; - - protected $container; - protected $validators; - - /** - * Constructor. - * - * @param ContainerInterface $container The service container - * @param array $validators An array of validators - */ - public function __construct(ContainerInterface $container, array $validators = array()) - { - $this->container = $container; - $this->validators = $validators; - } - - /** - * Returns the validator for the supplied constraint. - * - * @param Constraint $constraint A constraint - * - * @return ConstraintValidatorInterface A validator for the supplied constraint - * - * @throws UnexpectedTypeException When the validator is not an instance of ConstraintValidatorInterface - */ - public function getInstance(Constraint $constraint) - { - $name = $constraint->validatedBy(); - - if (!isset($this->validators[$name])) { - switch (get_class($constraint)) { - case self::BASE_NAMESPACE.'\\All': - $name = self::BASE_NAMESPACE.'\\LegacyAllValidator'; - break; - case self::BASE_NAMESPACE.'\\Choice': - $name = self::BASE_NAMESPACE.'\\LegacyChoiceValidator'; - break; - case self::BASE_NAMESPACE.'\\Collection': - $name = self::BASE_NAMESPACE.'\\LegacyCollectionValidator'; - break; - case self::BASE_NAMESPACE.'\\Count': - $name = self::BASE_NAMESPACE.'\\LegacyCountValidator'; - break; - case self::BASE_NAMESPACE.'\\Length': - $name = self::BASE_NAMESPACE.'\\LegacyLengthValidator'; - break; - case self::FORM_BASE_NAMESPACE.'\\Form': - $name = self::FORM_BASE_NAMESPACE.'\\LegacyFormValidator'; - break; - } - - $this->validators[$name] = new $name(); - } elseif (is_string($this->validators[$name])) { - $this->validators[$name] = $this->container->get($this->validators[$name]); - } - - if (!$this->validators[$name] instanceof ConstraintValidatorInterface) { - throw new UnexpectedTypeException($this->validators[$name], 'Symfony\Component\Validator\ConstraintValidatorInterface'); - } - - return $this->validators[$name]; - } -} diff --git a/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php b/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php index 3e96bc75ac..1efadfd66d 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php +++ b/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php @@ -15,6 +15,7 @@ use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\Extension\Validator\Util\ServerParams; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Exception\UnexpectedTypeException; /** @@ -53,7 +54,11 @@ class FormValidator extends ConstraintValidator /* @var FormInterface $form */ $config = $form->getConfig(); - $validator = $this->context->getValidator()->inContext($this->context); + $validator = null; + + if ($this->context instanceof ExecutionContextInterface) { + $validator = $this->context->getValidator()->inContext($this->context); + } if ($form->isSynchronized()) { // Validate the form data only if transformation succeeded @@ -62,7 +67,12 @@ class FormValidator extends ConstraintValidator // Validate the data against its own constraints if (self::allowDataWalking($form)) { foreach ($groups as $group) { - $validator->atPath('data')->validate($form->getData(), null, $group); + if ($validator) { + $validator->atPath('data')->validate($form->getData(), null, $group); + } else { + // 2.4 API + $this->context->validate($form->getData(), 'data', $group, true); + } } } @@ -72,7 +82,12 @@ class FormValidator extends ConstraintValidator foreach ($constraints as $constraint) { foreach ($groups as $group) { if (in_array($group, $constraint->groups)) { - $validator->atPath('data')->validate($form->getData(), $constraint, $group); + if ($validator) { + $validator->atPath('data')->validate($form->getData(), $constraint, $group); + } else { + // 2.4 API + $this->context->validateValue($form->getData(), $constraint, 'data', $group); + } // Prevent duplicate validation continue 2; @@ -101,20 +116,40 @@ class FormValidator extends ConstraintValidator ? (string) $form->getViewData() : gettype($form->getViewData()); - $this->context->buildViolation($config->getOption('invalid_message')) - ->setParameters(array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters'))) - ->setInvalidValue($form->getViewData()) - ->setCode(Form::ERR_INVALID) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($config->getOption('invalid_message')) + ->setParameters(array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters'))) + ->setInvalidValue($form->getViewData()) + ->setCode(Form::ERR_INVALID) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation( + $config->getOption('invalid_message'), + array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')), + $form->getViewData(), + null, + Form::ERR_INVALID + ); + } } } // Mark the form with an error if it contains extra fields if (count($form->getExtraData()) > 0) { - $this->context->buildViolation($config->getOption('extra_fields_message')) - ->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData()))) - ->setInvalidValue($form->getExtraData()) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($config->getOption('extra_fields_message')) + ->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData()))) + ->setInvalidValue($form->getExtraData()) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation( + $config->getOption('extra_fields_message'), + array('{{ extra_fields }}' => implode('", "', array_keys($form->getExtraData()))), + $form->getExtraData() + ); + } } // Mark the form with an error if the uploaded size was too large @@ -124,10 +159,19 @@ class FormValidator extends ConstraintValidator $max = $this->serverParams->getPostMaxSize(); if (!empty($max) && $length > $max) { - $this->context->buildViolation($config->getOption('post_max_size_message')) - ->setParameter('{{ max }}', $this->serverParams->getNormalizedIniPostMaxSize()) - ->setInvalidValue($length) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($config->getOption('post_max_size_message')) + ->setParameter('{{ max }}', $this->serverParams->getNormalizedIniPostMaxSize()) + ->setInvalidValue($length) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation( + $config->getOption('post_max_size_message'), + array('{{ max }}' => $this->serverParams->getNormalizedIniPostMaxSize()), + $length + ); + } } } } diff --git a/src/Symfony/Component/Form/Extension/Validator/Constraints/LegacyFormValidator.php b/src/Symfony/Component/Form/Extension/Validator/Constraints/LegacyFormValidator.php deleted file mode 100644 index 2ed206b59d..0000000000 --- a/src/Symfony/Component/Form/Extension/Validator/Constraints/LegacyFormValidator.php +++ /dev/null @@ -1,223 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Form\Extension\Validator\Constraints; - -use Symfony\Component\Form\FormInterface; -use Symfony\Component\Form\Extension\Validator\Util\ServerParams; -use Symfony\Component\Validator\Constraint; -use Symfony\Component\Validator\ConstraintValidator; -use Symfony\Component\Validator\Exception\UnexpectedTypeException; - -/** - * @author Bernhard Schussek - */ -class LegacyFormValidator extends ConstraintValidator -{ - /** - * @var ServerParams - */ - private $serverParams; - - /** - * Creates a validator with the given server parameters. - * - * @param ServerParams $params The server parameters. Default - * parameters are created if null. - */ - public function __construct(ServerParams $params = null) - { - $this->serverParams = $params ?: new ServerParams(); - } - - /** - * {@inheritdoc} - */ - public function validate($form, Constraint $constraint) - { - if (!$constraint instanceof Form) { - throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Form'); - } - - if (!$form instanceof FormInterface) { - return; - } - - /* @var FormInterface $form */ - $config = $form->getConfig(); - - if ($form->isSynchronized()) { - // Validate the form data only if transformation succeeded - $groups = self::getValidationGroups($form); - - // Validate the data against its own constraints - if (self::allowDataWalking($form)) { - foreach ($groups as $group) { - $this->context->validate($form->getData(), 'data', $group, true); - } - } - - // Validate the data against the constraints defined - // in the form - $constraints = $config->getOption('constraints'); - foreach ($constraints as $constraint) { - foreach ($groups as $group) { - if (in_array($group, $constraint->groups)) { - $this->context->validateValue($form->getData(), $constraint, 'data', $group); - - // Prevent duplicate validation - continue 2; - } - } - } - } else { - $childrenSynchronized = true; - - foreach ($form as $child) { - if (!$child->isSynchronized()) { - $childrenSynchronized = false; - break; - } - } - - // Mark the form with an error if it is not synchronized BUT all - // of its children are synchronized. If any child is not - // synchronized, an error is displayed there already and showing - // a second error in its parent form is pointless, or worse, may - // lead to duplicate errors if error bubbling is enabled on the - // child. - // See also https://github.com/symfony/symfony/issues/4359 - if ($childrenSynchronized) { - $clientDataAsString = is_scalar($form->getViewData()) - ? (string) $form->getViewData() - : gettype($form->getViewData()); - - $this->context->addViolation( - $config->getOption('invalid_message'), - array_replace(array('{{ value }}' => $clientDataAsString), $config->getOption('invalid_message_parameters')), - $form->getViewData(), - null, - Form::ERR_INVALID - ); - } - } - - // Mark the form with an error if it contains extra fields - if (count($form->getExtraData()) > 0) { - $this->context->addViolation( - $config->getOption('extra_fields_message'), - array('{{ extra_fields }}' => implode('", "', array_keys($form->getExtraData()))), - $form->getExtraData() - ); - } - - // Mark the form with an error if the uploaded size was too large - $length = $this->serverParams->getContentLength(); - - if ($form->isRoot() && null !== $length) { - $max = $this->serverParams->getPostMaxSize(); - - if (!empty($max) && $length > $max) { - $this->context->addViolation( - $config->getOption('post_max_size_message'), - array('{{ max }}' => $this->serverParams->getNormalizedIniPostMaxSize()), - $length - ); - } - } - } - - /** - * Returns whether the data of a form may be walked. - * - * @param FormInterface $form The form to test. - * - * @return bool Whether the graph walker may walk the data. - */ - private static function allowDataWalking(FormInterface $form) - { - $data = $form->getData(); - - // Scalar values cannot have mapped constraints - if (!is_object($data) && !is_array($data)) { - return false; - } - - // Root forms are always validated - if ($form->isRoot()) { - return true; - } - - // Non-root forms are validated if validation cascading - // is enabled in all ancestor forms - while (null !== ($form = $form->getParent())) { - if (!$form->getConfig()->getOption('cascade_validation')) { - return false; - } - } - - return true; - } - - /** - * Returns the validation groups of the given form. - * - * @param FormInterface $form The form. - * - * @return array The validation groups. - */ - private static function getValidationGroups(FormInterface $form) - { - // Determine the clicked button of the complete form tree - $clickedButton = null; - - if (method_exists($form, 'getClickedButton')) { - $clickedButton = $form->getClickedButton(); - } - - if (null !== $clickedButton) { - $groups = $clickedButton->getConfig()->getOption('validation_groups'); - - if (null !== $groups) { - return self::resolveValidationGroups($groups, $form); - } - } - - do { - $groups = $form->getConfig()->getOption('validation_groups'); - - if (null !== $groups) { - return self::resolveValidationGroups($groups, $form); - } - - $form = $form->getParent(); - } while (null !== $form); - - return array(Constraint::DEFAULT_GROUP); - } - - /** - * Post-processes the validation groups option for a given form. - * - * @param array|callable $groups The validation groups. - * @param FormInterface $form The validated form. - * - * @return array The validation groups. - */ - private static function resolveValidationGroups($groups, FormInterface $form) - { - if (!is_string($groups) && is_callable($groups)) { - $groups = call_user_func($groups, $form); - } - - return (array) $groups; - } -} diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/LegacyFormValidator2Dot4ApiTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/LegacyFormValidator2Dot4ApiTest.php index a54e10676f..fb3208facd 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/LegacyFormValidator2Dot4ApiTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/LegacyFormValidator2Dot4ApiTest.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Form\Tests\Extension\Validator\Constraints; -use Symfony\Component\Form\Extension\Validator\Constraints\LegacyFormValidator; use Symfony\Component\Validator\Validation; /** @@ -24,9 +23,4 @@ class LegacyFormValidator2Dot4ApiTest extends FormValidatorTest { return Validation::API_VERSION_2_4; } - - protected function createValidator() - { - return new LegacyFormValidator($this->serverParams); - } } diff --git a/src/Symfony/Component/Validator/Constraints/AllValidator.php b/src/Symfony/Component/Validator/Constraints/AllValidator.php index 144595ccb4..29cf985902 100644 --- a/src/Symfony/Component/Validator/Constraints/AllValidator.php +++ b/src/Symfony/Component/Validator/Constraints/AllValidator.php @@ -13,6 +13,7 @@ namespace Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Exception\UnexpectedTypeException; /** @@ -41,10 +42,18 @@ class AllValidator extends ConstraintValidator $context = $this->context; $group = $context->getGroup(); - $validator = $context->getValidator()->inContext($context); - foreach ($value as $key => $element) { - $validator->atPath('['.$key.']')->validate($element, $constraint->constraints, $group); + if ($context instanceof ExecutionContextInterface) { + $validator = $context->getValidator()->inContext($context); + + foreach ($value as $key => $element) { + $validator->atPath('['.$key.']')->validate($element, $constraint->constraints, $group); + } + } else { + // 2.4 API + foreach ($value as $key => $element) { + $context->validateValue($element, $constraint->constraints, '['.$key.']', $group); + } } } } diff --git a/src/Symfony/Component/Validator/Constraints/ChoiceValidator.php b/src/Symfony/Component/Validator/Constraints/ChoiceValidator.php index 8a12863463..2df90e302e 100644 --- a/src/Symfony/Component/Validator/Constraints/ChoiceValidator.php +++ b/src/Symfony/Component/Validator/Constraints/ChoiceValidator.php @@ -13,6 +13,7 @@ namespace Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Exception\ConstraintDefinitionException; use Symfony\Component\Validator\Exception\UnexpectedTypeException; @@ -63,35 +64,63 @@ class ChoiceValidator extends ConstraintValidator if ($constraint->multiple) { foreach ($value as $_value) { if (!in_array($_value, $choices, $constraint->strict)) { - $this->context->buildViolation($constraint->multipleMessage) - ->setParameter('{{ value }}', $this->formatValue($_value)) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($constraint->multipleMessage) + ->setParameter('{{ value }}', $this->formatValue($_value)) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation($constraint->multipleMessage, array( + '{{ value }}' => $this->formatValue($_value), + )); + } } } $count = count($value); if ($constraint->min !== null && $count < $constraint->min) { - $this->context->buildViolation($constraint->minMessage) - ->setParameter('{{ limit }}', $constraint->min) - ->setPlural((int) $constraint->min) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($constraint->minMessage) + ->setParameter('{{ limit }}', $constraint->min) + ->setPlural((int) $constraint->min) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation($constraint->minMessage, array( + '{{ limit }}' => $constraint->min + ), $value, (int) $constraint->min); + } return; } if ($constraint->max !== null && $count > $constraint->max) { - $this->context->buildViolation($constraint->maxMessage) - ->setParameter('{{ limit }}', $constraint->max) - ->setPlural((int) $constraint->max) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($constraint->maxMessage) + ->setParameter('{{ limit }}', $constraint->max) + ->setPlural((int) $constraint->max) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation($constraint->maxMessage, array( + '{{ limit }}' => $constraint->max + ), $value, (int) $constraint->max); + } return; } } elseif (!in_array($value, $choices, $constraint->strict)) { - $this->context->buildViolation($constraint->message) - ->setParameter('{{ value }}', $this->formatValue($value)) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($constraint->message) + ->setParameter('{{ value }}', $this->formatValue($value)) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation($constraint->message, array( + '{{ value }}' => $this->formatValue($value), + )); + } } } } diff --git a/src/Symfony/Component/Validator/Constraints/CollectionValidator.php b/src/Symfony/Component/Validator/Constraints/CollectionValidator.php index 9681da0e22..d273fdaafa 100644 --- a/src/Symfony/Component/Validator/Constraints/CollectionValidator.php +++ b/src/Symfony/Component/Validator/Constraints/CollectionValidator.php @@ -13,6 +13,7 @@ namespace Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Exception\UnexpectedTypeException; /** @@ -50,7 +51,6 @@ class CollectionValidator extends ConstraintValidator // to validate() instead. $context = $this->context; $group = $context->getGroup(); - $validator = $context->getValidator()->inContext($context); foreach ($constraint->fields as $field => $fieldConstraint) { // bug fix issue #2779 @@ -59,26 +59,47 @@ class CollectionValidator extends ConstraintValidator if ($existsInArray || $existsInArrayAccess) { if (count($fieldConstraint->constraints) > 0) { - $validator->atPath('['.$field.']') - ->validate($value[$field], $fieldConstraint->constraints, $group); + if ($context instanceof ExecutionContextInterface) { + $context->getValidator() + ->inContext($context) + ->atPath('['.$field.']') + ->validate($value[$field], $fieldConstraint->constraints, $group); + } else { + // 2.4 API + $context->validateValue($value[$field], $fieldConstraint->constraints, '['.$field.']', $group); + } } } elseif (!$fieldConstraint instanceof Optional && !$constraint->allowMissingFields) { - $context->buildViolation($constraint->missingFieldsMessage) - ->atPath('['.$field.']') - ->setParameter('{{ field }}', $this->formatValue($field)) - ->setInvalidValue(null) - ->addViolation(); + if ($context instanceof ExecutionContextInterface) { + $context->buildViolation($constraint->missingFieldsMessage) + ->atPath('['.$field.']') + ->setParameter('{{ field }}', $this->formatValue($field)) + ->setInvalidValue(null) + ->addViolation(); + } else { + // 2.4 API + $context->addViolationAt('['.$field.']', $constraint->missingFieldsMessage, array( + '{{ field }}' => $this->formatValue($field) + ), null); + } } } if (!$constraint->allowExtraFields) { foreach ($value as $field => $fieldValue) { if (!isset($constraint->fields[$field])) { - $context->buildViolation($constraint->extraFieldsMessage) - ->atPath('['.$field.']') - ->setParameter('{{ field }}', $this->formatValue($field)) - ->setInvalidValue($fieldValue) - ->addViolation(); + if ($context instanceof ExecutionContextInterface) { + $context->buildViolation($constraint->extraFieldsMessage) + ->atPath('['.$field.']') + ->setParameter('{{ field }}', $this->formatValue($field)) + ->setInvalidValue($fieldValue) + ->addViolation(); + } else { + // 2.4 API + $context->addViolationAt('['.$field.']', $constraint->extraFieldsMessage, array( + '{{ field }}' => $this->formatValue($field) + ), $fieldValue); + } } } } diff --git a/src/Symfony/Component/Validator/Constraints/CountValidator.php b/src/Symfony/Component/Validator/Constraints/CountValidator.php index e3fea656b5..49d1bfc48f 100644 --- a/src/Symfony/Component/Validator/Constraints/CountValidator.php +++ b/src/Symfony/Component/Validator/Constraints/CountValidator.php @@ -13,6 +13,7 @@ namespace Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Exception\UnexpectedTypeException; /** @@ -36,34 +37,58 @@ class CountValidator extends ConstraintValidator $count = count($value); if ($constraint->min == $constraint->max && $count != $constraint->min) { - $this->context->buildViolation($constraint->exactMessage) - ->setParameter('{{ count }}', $count) - ->setParameter('{{ limit }}', $constraint->min) - ->setInvalidValue($value) - ->setPlural((int) $constraint->min) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($constraint->exactMessage) + ->setParameter('{{ count }}', $count) + ->setParameter('{{ limit }}', $constraint->min) + ->setInvalidValue($value) + ->setPlural((int) $constraint->min) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation($constraint->exactMessage, array( + '{{ count }}' => $count, + '{{ limit }}' => $constraint->min, + ), $value, (int) $constraint->min); + } return; } if (null !== $constraint->max && $count > $constraint->max) { - $this->context->buildViolation($constraint->maxMessage) - ->setParameter('{{ count }}', $count) - ->setParameter('{{ limit }}', $constraint->max) - ->setInvalidValue($value) - ->setPlural((int) $constraint->max) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($constraint->maxMessage) + ->setParameter('{{ count }}', $count) + ->setParameter('{{ limit }}', $constraint->max) + ->setInvalidValue($value) + ->setPlural((int) $constraint->max) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation($constraint->maxMessage, array( + '{{ count }}' => $count, + '{{ limit }}' => $constraint->max, + ), $value, (int) $constraint->max); + } return; } if (null !== $constraint->min && $count < $constraint->min) { - $this->context->buildViolation($constraint->minMessage) - ->setParameter('{{ count }}', $count) - ->setParameter('{{ limit }}', $constraint->min) - ->setInvalidValue($value) - ->setPlural((int) $constraint->min) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($constraint->minMessage) + ->setParameter('{{ count }}', $count) + ->setParameter('{{ limit }}', $constraint->min) + ->setInvalidValue($value) + ->setPlural((int) $constraint->min) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation($constraint->minMessage, array( + '{{ count }}' => $count, + '{{ limit }}' => $constraint->min, + ), $value, (int) $constraint->min); + } } } } diff --git a/src/Symfony/Component/Validator/Constraints/LegacyAllValidator.php b/src/Symfony/Component/Validator/Constraints/LegacyAllValidator.php deleted file mode 100644 index 844fe31782..0000000000 --- a/src/Symfony/Component/Validator/Constraints/LegacyAllValidator.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Validator\Constraints; - -use Symfony\Component\Validator\Constraint; -use Symfony\Component\Validator\ConstraintValidator; -use Symfony\Component\Validator\Exception\UnexpectedTypeException; - -/** - * @author Bernhard Schussek - * - * @deprecated Deprecated since version 2.5.3, to be removed in 3.0. - */ -class LegacyAllValidator extends ConstraintValidator -{ - /** - * {@inheritdoc} - */ - public function validate($value, Constraint $constraint) - { - if (!$constraint instanceof All) { - throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\All'); - } - - if (null === $value) { - return; - } - - if (!is_array($value) && !$value instanceof \Traversable) { - throw new UnexpectedTypeException($value, 'array or Traversable'); - } - - $context = $this->context; - $group = $context->getGroup(); - - foreach ($value as $key => $element) { - $context->validateValue($element, $constraint->constraints, '['.$key.']', $group); - } - } -} diff --git a/src/Symfony/Component/Validator/Constraints/LegacyChoiceValidator.php b/src/Symfony/Component/Validator/Constraints/LegacyChoiceValidator.php deleted file mode 100644 index 4f1355eadd..0000000000 --- a/src/Symfony/Component/Validator/Constraints/LegacyChoiceValidator.php +++ /dev/null @@ -1,95 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Validator\Constraints; - -use Symfony\Component\Validator\Constraint; -use Symfony\Component\Validator\ConstraintValidator; -use Symfony\Component\Validator\Exception\ConstraintDefinitionException; -use Symfony\Component\Validator\Exception\UnexpectedTypeException; - -/** - * ChoiceValidator validates that the value is one of the expected values. - * - * @author Fabien Potencier - * @author Florian Eckerstorfer - * @author Bernhard Schussek - * - * @deprecated Deprecated since version 2.5.3, to be removed in 3.0. - */ -class LegacyChoiceValidator extends ConstraintValidator -{ - /** - * {@inheritdoc} - */ - public function validate($value, Constraint $constraint) - { - if (!$constraint instanceof Choice) { - throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Choice'); - } - - if (!$constraint->choices && !$constraint->callback) { - throw new ConstraintDefinitionException('Either "choices" or "callback" must be specified on constraint Choice'); - } - - if (null === $value) { - return; - } - - if ($constraint->multiple && !is_array($value)) { - throw new UnexpectedTypeException($value, 'array'); - } - - if ($constraint->callback) { - if (is_callable(array($this->context->getClassName(), $constraint->callback))) { - $choices = call_user_func(array($this->context->getClassName(), $constraint->callback)); - } elseif (is_callable($constraint->callback)) { - $choices = call_user_func($constraint->callback); - } else { - throw new ConstraintDefinitionException('The Choice constraint expects a valid callback'); - } - } else { - $choices = $constraint->choices; - } - - if ($constraint->multiple) { - foreach ($value as $_value) { - if (!in_array($_value, $choices, $constraint->strict)) { - $this->context->addViolation($constraint->multipleMessage, array( - '{{ value }}' => $this->formatValue($_value), - )); - } - } - - $count = count($value); - - if ($constraint->min !== null && $count < $constraint->min) { - $this->context->addViolation($constraint->minMessage, array( - '{{ limit }}' => $constraint->min - ), $value, (int) $constraint->min); - - return; - } - - if ($constraint->max !== null && $count > $constraint->max) { - $this->context->addViolation($constraint->maxMessage, array( - '{{ limit }}' => $constraint->max - ), $value, (int) $constraint->max); - - return; - } - } elseif (!in_array($value, $choices, $constraint->strict)) { - $this->context->addViolation($constraint->message, array( - '{{ value }}' => $this->formatValue($value), - )); - } - } -} diff --git a/src/Symfony/Component/Validator/Constraints/LegacyCollectionValidator.php b/src/Symfony/Component/Validator/Constraints/LegacyCollectionValidator.php deleted file mode 100644 index 9de9613c9c..0000000000 --- a/src/Symfony/Component/Validator/Constraints/LegacyCollectionValidator.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Validator\Constraints; - -use Symfony\Component\Validator\Constraint; -use Symfony\Component\Validator\ConstraintValidator; -use Symfony\Component\Validator\Exception\UnexpectedTypeException; - -/** - * @author Bernhard Schussek - * - * @deprecated Deprecated since version 2.5.3, to be removed in 3.0. - */ -class LegacyCollectionValidator extends ConstraintValidator -{ - /** - * {@inheritdoc} - */ - public function validate($value, Constraint $constraint) - { - if (!$constraint instanceof Collection) { - throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Collection'); - } - - if (null === $value) { - return; - } - - if (!is_array($value) && !($value instanceof \Traversable && $value instanceof \ArrayAccess)) { - throw new UnexpectedTypeException($value, 'array or Traversable and ArrayAccess'); - } - - // We need to keep the initialized context when CollectionValidator - // calls itself recursively (Collection constraints can be nested). - // Since the context of the validator is overwritten when initialize() - // is called for the nested constraint, the outer validator is - // acting on the wrong context when the nested validation terminates. - // - // A better solution - which should be approached in Symfony 3.0 - is to - // remove the initialize() method and pass the context as last argument - // to validate() instead. - $context = $this->context; - $group = $context->getGroup(); - - foreach ($constraint->fields as $field => $fieldConstraint) { - // bug fix issue #2779 - $existsInArray = is_array($value) && array_key_exists($field, $value); - $existsInArrayAccess = $value instanceof \ArrayAccess && $value->offsetExists($field); - - if ($existsInArray || $existsInArrayAccess) { - if (count($fieldConstraint->constraints) > 0) { - $context->validateValue($value[$field], $fieldConstraint->constraints, '['.$field.']', $group); - } - } elseif (!$fieldConstraint instanceof Optional && !$constraint->allowMissingFields) { - $context->addViolationAt('['.$field.']', $constraint->missingFieldsMessage, array( - '{{ field }}' => $this->formatValue($field) - ), null); - } - } - - if (!$constraint->allowExtraFields) { - foreach ($value as $field => $fieldValue) { - if (!isset($constraint->fields[$field])) { - $context->addViolationAt('['.$field.']', $constraint->extraFieldsMessage, array( - '{{ field }}' => $this->formatValue($field) - ), $fieldValue); - } - } - } - } -} diff --git a/src/Symfony/Component/Validator/Constraints/LegacyCountValidator.php b/src/Symfony/Component/Validator/Constraints/LegacyCountValidator.php deleted file mode 100644 index 5e34fb57dd..0000000000 --- a/src/Symfony/Component/Validator/Constraints/LegacyCountValidator.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Validator\Constraints; - -use Symfony\Component\Validator\Constraint; -use Symfony\Component\Validator\ConstraintValidator; -use Symfony\Component\Validator\Exception\UnexpectedTypeException; - -/** - * @author Bernhard Schussek - * - * @deprecated Deprecated since version 2.5.3, to be removed in 3.0. - */ -class LegacyCountValidator extends ConstraintValidator -{ - /** - * {@inheritdoc} - */ - public function validate($value, Constraint $constraint) - { - if (null === $value) { - return; - } - - if (!is_array($value) && !$value instanceof \Countable) { - throw new UnexpectedTypeException($value, 'array or \Countable'); - } - - $count = count($value); - - if ($constraint->min == $constraint->max && $count != $constraint->min) { - $this->context->addViolation($constraint->exactMessage, array( - '{{ count }}' => $count, - '{{ limit }}' => $constraint->min, - ), $value, (int) $constraint->min); - - return; - } - - if (null !== $constraint->max && $count > $constraint->max) { - $this->context->addViolation($constraint->maxMessage, array( - '{{ count }}' => $count, - '{{ limit }}' => $constraint->max, - ), $value, (int) $constraint->max); - - return; - } - - if (null !== $constraint->min && $count < $constraint->min) { - $this->context->addViolation($constraint->minMessage, array( - '{{ count }}' => $count, - '{{ limit }}' => $constraint->min, - ), $value, (int) $constraint->min); - } - } -} diff --git a/src/Symfony/Component/Validator/Constraints/LegacyLengthValidator.php b/src/Symfony/Component/Validator/Constraints/LegacyLengthValidator.php deleted file mode 100644 index 2c45625ec7..0000000000 --- a/src/Symfony/Component/Validator/Constraints/LegacyLengthValidator.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Validator\Constraints; - -use Symfony\Component\Validator\Constraint; -use Symfony\Component\Validator\ConstraintValidator; -use Symfony\Component\Validator\Exception\UnexpectedTypeException; - -/** - * @author Bernhard Schussek - * - * @deprecated Deprecated since version 2.5.3, to be removed in 3.0. - */ -class LegacyLengthValidator extends ConstraintValidator -{ - /** - * {@inheritdoc} - */ - public function validate($value, Constraint $constraint) - { - if (!$constraint instanceof Length) { - throw new UnexpectedTypeException($constraint, __NAMESPACE__.'\Length'); - } - - if (null === $value || '' === $value) { - return; - } - - if (!is_scalar($value) && !(is_object($value) && method_exists($value, '__toString'))) { - throw new UnexpectedTypeException($value, 'string'); - } - - $stringValue = (string) $value; - - if (function_exists('grapheme_strlen') && 'UTF-8' === $constraint->charset) { - $length = grapheme_strlen($stringValue); - } elseif (function_exists('mb_strlen')) { - $length = mb_strlen($stringValue, $constraint->charset); - } else { - $length = strlen($stringValue); - } - - if ($constraint->min == $constraint->max && $length != $constraint->min) { - $this->context->addViolation($constraint->exactMessage, array( - '{{ value }}' => $this->formatValue($stringValue), - '{{ limit }}' => $constraint->min, - ), $value, (int) $constraint->min); - - return; - } - - if (null !== $constraint->max && $length > $constraint->max) { - $this->context->addViolation($constraint->maxMessage, array( - '{{ value }}' => $this->formatValue($stringValue), - '{{ limit }}' => $constraint->max, - ), $value, (int) $constraint->max); - - return; - } - - if (null !== $constraint->min && $length < $constraint->min) { - $this->context->addViolation($constraint->minMessage, array( - '{{ value }}' => $this->formatValue($stringValue), - '{{ limit }}' => $constraint->min, - ), $value, (int) $constraint->min); - } - } -} diff --git a/src/Symfony/Component/Validator/Constraints/LengthValidator.php b/src/Symfony/Component/Validator/Constraints/LengthValidator.php index c82508852e..eeb9d3a5d1 100644 --- a/src/Symfony/Component/Validator/Constraints/LengthValidator.php +++ b/src/Symfony/Component/Validator/Constraints/LengthValidator.php @@ -13,6 +13,7 @@ namespace Symfony\Component\Validator\Constraints; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\Context\ExecutionContextInterface; use Symfony\Component\Validator\Exception\UnexpectedTypeException; /** @@ -48,34 +49,58 @@ class LengthValidator extends ConstraintValidator } if ($constraint->min == $constraint->max && $length != $constraint->min) { - $this->context->buildViolation($constraint->exactMessage) - ->setParameter('{{ value }}', $this->formatValue($stringValue)) - ->setParameter('{{ limit }}', $constraint->min) - ->setInvalidValue($value) - ->setPlural((int) $constraint->min) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($constraint->exactMessage) + ->setParameter('{{ value }}', $this->formatValue($stringValue)) + ->setParameter('{{ limit }}', $constraint->min) + ->setInvalidValue($value) + ->setPlural((int) $constraint->min) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation($constraint->exactMessage, array( + '{{ value }}' => $this->formatValue($stringValue), + '{{ limit }}' => $constraint->min, + ), $value, (int) $constraint->min); + } return; } if (null !== $constraint->max && $length > $constraint->max) { - $this->context->buildViolation($constraint->maxMessage) - ->setParameter('{{ value }}', $this->formatValue($stringValue)) - ->setParameter('{{ limit }}', $constraint->max) - ->setInvalidValue($value) - ->setPlural((int) $constraint->max) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($constraint->maxMessage) + ->setParameter('{{ value }}', $this->formatValue($stringValue)) + ->setParameter('{{ limit }}', $constraint->max) + ->setInvalidValue($value) + ->setPlural((int) $constraint->max) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation($constraint->maxMessage, array( + '{{ value }}' => $this->formatValue($stringValue), + '{{ limit }}' => $constraint->max, + ), $value, (int) $constraint->max); + } return; } if (null !== $constraint->min && $length < $constraint->min) { - $this->context->buildViolation($constraint->minMessage) - ->setParameter('{{ value }}', $this->formatValue($stringValue)) - ->setParameter('{{ limit }}', $constraint->min) - ->setInvalidValue($value) - ->setPlural((int) $constraint->min) - ->addViolation(); + if ($this->context instanceof ExecutionContextInterface) { + $this->context->buildViolation($constraint->minMessage) + ->setParameter('{{ value }}', $this->formatValue($stringValue)) + ->setParameter('{{ limit }}', $constraint->min) + ->setInvalidValue($value) + ->setPlural((int) $constraint->min) + ->addViolation(); + } else { + // 2.4 API + $this->context->addViolation($constraint->minMessage, array( + '{{ value }}' => $this->formatValue($stringValue), + '{{ limit }}' => $constraint->min, + ), $value, (int) $constraint->min); + } } } } diff --git a/src/Symfony/Component/Validator/LegacyConstraintValidatorFactory.php b/src/Symfony/Component/Validator/LegacyConstraintValidatorFactory.php deleted file mode 100644 index d85f3bd01d..0000000000 --- a/src/Symfony/Component/Validator/LegacyConstraintValidatorFactory.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Validator; - -use Symfony\Component\Validator\Constraints\ExpressionValidator; - -/** - * Backwards compatible implementation of the {@link ConstraintValidatorFactoryInterface}. - * - * This class uses legacy constraint validators where possible to ensure - * compatibility with the 2.4 validator API. - * - * @author Bernhard Schussek - * - * @deprecated Deprecated since version 2.5.3, to be removed in 3.0. - */ -class LegacyConstraintValidatorFactory implements ConstraintValidatorFactoryInterface -{ - protected $validators = array(); - - private $propertyAccessor; - - public function __construct($propertyAccessor = null) - { - $this->propertyAccessor = $propertyAccessor; - } - - /** - * {@inheritdoc} - */ - public function getInstance(Constraint $constraint) - { - switch (get_class($constraint)) { - case __NAMESPACE__.'\\Constraints\\All': - $className = __NAMESPACE__.'\\Constraints\\LegacyAllValidator'; - break; - case __NAMESPACE__.'\\Constraints\\Choice': - $className = __NAMESPACE__.'\\Constraints\\LegacyChoiceValidator'; - break; - case __NAMESPACE__.'\\Constraints\\Collection': - $className = __NAMESPACE__.'\\Constraints\\LegacyCollectionValidator'; - break; - case __NAMESPACE__.'\\Constraints\\Count': - $className = __NAMESPACE__.'\\Constraints\\LegacyCountValidator'; - break; - case __NAMESPACE__.'\\Constraints\\Length': - $className = __NAMESPACE__.'\\Constraints\\LegacyLengthValidator'; - break; - default: - $className = $constraint->validatedBy(); - break; - } - - if (!isset($this->validators[$className])) { - $this->validators[$className] = 'validator.expression' === $className - ? new ExpressionValidator($this->propertyAccessor) - : new $className(); - } - - return $this->validators[$className]; - } -} diff --git a/src/Symfony/Component/Validator/Tests/Constraints/LegacyAllValidator2Dot4ApiTest.php b/src/Symfony/Component/Validator/Tests/Constraints/LegacyAllValidator2Dot4ApiTest.php index fabc47181a..2d2a1eb833 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/LegacyAllValidator2Dot4ApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/LegacyAllValidator2Dot4ApiTest.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Validator\Tests\Constraints; -use Symfony\Component\Validator\Constraints\LegacyAllValidator; use Symfony\Component\Validator\Validation; /** @@ -24,9 +23,4 @@ class LegacyAllValidator2Dot4ApiTest extends AllValidatorTest { return Validation::API_VERSION_2_4; } - - protected function createValidator() - { - return new LegacyAllValidator(); - } } diff --git a/src/Symfony/Component/Validator/Tests/Constraints/LegacyChoiceValidator2Dot4ApiTest.php b/src/Symfony/Component/Validator/Tests/Constraints/LegacyChoiceValidator2Dot4ApiTest.php index 165dbd62d3..725e574a23 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/LegacyChoiceValidator2Dot4ApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/LegacyChoiceValidator2Dot4ApiTest.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Validator\Tests\Constraints; -use Symfony\Component\Validator\Constraints\LegacyChoiceValidator; use Symfony\Component\Validator\Validation; /** @@ -24,9 +23,4 @@ class LegacyChoiceValidator2Dot4ApiTest extends ChoiceValidatorTest { return Validation::API_VERSION_2_4; } - - protected function createValidator() - { - return new LegacyChoiceValidator(); - } } diff --git a/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorArray2Dot4ApiTest.php b/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorArray2Dot4ApiTest.php index b8cafcd968..9077936de9 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorArray2Dot4ApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorArray2Dot4ApiTest.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Validator\Tests\Constraints; -use Symfony\Component\Validator\Constraints\LegacyCollectionValidator; use Symfony\Component\Validator\Validation; class LegacyCollectionValidatorArray2Dot4ApiTest extends CollectionValidatorArrayTest @@ -20,9 +19,4 @@ class LegacyCollectionValidatorArray2Dot4ApiTest extends CollectionValidatorArra { return Validation::API_VERSION_2_4; } - - protected function createValidator() - { - return new LegacyCollectionValidator(); - } } diff --git a/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorArrayObject2Dot4ApiTest.php b/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorArrayObject2Dot4ApiTest.php index 462e9ff61e..1146502341 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorArrayObject2Dot4ApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorArrayObject2Dot4ApiTest.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Validator\Tests\Constraints; -use Symfony\Component\Validator\Constraints\LegacyCollectionValidator; use Symfony\Component\Validator\Validation; class LegacyCollectionValidatorArrayObject2Dot4ApiTest extends CollectionValidatorArrayObjectTest @@ -20,9 +19,4 @@ class LegacyCollectionValidatorArrayObject2Dot4ApiTest extends CollectionValidat { return Validation::API_VERSION_2_4; } - - protected function createValidator() - { - return new LegacyCollectionValidator(); - } } diff --git a/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorCustomArrayObject2Dot4ApiTest.php b/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorCustomArrayObject2Dot4ApiTest.php index b3b8cab416..f5a9bd53cd 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorCustomArrayObject2Dot4ApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/LegacyCollectionValidatorCustomArrayObject2Dot4ApiTest.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Validator\Tests\Constraints; -use Symfony\Component\Validator\Constraints\LegacyCollectionValidator; use Symfony\Component\Validator\Validation; class LegacyCollectionValidatorCustomArrayObject2Dot4ApiTest extends CollectionValidatorCustomArrayObjectTest @@ -20,9 +19,4 @@ class LegacyCollectionValidatorCustomArrayObject2Dot4ApiTest extends CollectionV { return Validation::API_VERSION_2_4; } - - protected function createValidator() - { - return new LegacyCollectionValidator(); - } } diff --git a/src/Symfony/Component/Validator/Tests/Constraints/LegacyCountValidatorArray2Dot4ApiTest.php b/src/Symfony/Component/Validator/Tests/Constraints/LegacyCountValidatorArray2Dot4ApiTest.php index 4169dd7c13..645d6b74dd 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/LegacyCountValidatorArray2Dot4ApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/LegacyCountValidatorArray2Dot4ApiTest.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Validator\Tests\Constraints; -use Symfony\Component\Validator\Constraints\LegacyCountValidator; use Symfony\Component\Validator\Validation; /** @@ -24,9 +23,4 @@ class LegacyCountValidatorArray2Dot4ApiTest extends CountValidatorArrayTest { return Validation::API_VERSION_2_4; } - - protected function createValidator() - { - return new LegacyCountValidator(); - } } diff --git a/src/Symfony/Component/Validator/Tests/Constraints/LegacyCountValidatorCountable2Dot4ApiTest.php b/src/Symfony/Component/Validator/Tests/Constraints/LegacyCountValidatorCountable2Dot4ApiTest.php index 037ff2dac2..f8531ba298 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/LegacyCountValidatorCountable2Dot4ApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/LegacyCountValidatorCountable2Dot4ApiTest.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Validator\Tests\Constraints; -use Symfony\Component\Validator\Constraints\LegacyCountValidator; use Symfony\Component\Validator\Validation; /** @@ -24,9 +23,4 @@ class LegacyCountValidatorCountable2Dot4ApiTest extends CountValidatorCountableT { return Validation::API_VERSION_2_4; } - - protected function createValidator() - { - return new LegacyCountValidator(); - } } diff --git a/src/Symfony/Component/Validator/Tests/Constraints/LegacyLengthValidator2Dot4ApiTest.php b/src/Symfony/Component/Validator/Tests/Constraints/LegacyLengthValidator2Dot4ApiTest.php index 54faa262d1..7174c04c94 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/LegacyLengthValidator2Dot4ApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/LegacyLengthValidator2Dot4ApiTest.php @@ -11,7 +11,6 @@ namespace Symfony\Component\Validator\Tests\Constraints; -use Symfony\Component\Validator\Constraints\LegacyLengthValidator; use Symfony\Component\Validator\Validation; /** @@ -24,9 +23,4 @@ class LegacyLengthValidator2Dot4ApiTest extends LengthValidatorTest { return Validation::API_VERSION_2_4; } - - protected function createValidator() - { - return new LegacyLengthValidator(); - } } diff --git a/src/Symfony/Component/Validator/Tests/ExecutionContextTest.php b/src/Symfony/Component/Validator/Tests/ExecutionContextTest.php index 3387e309f8..b35128a147 100644 --- a/src/Symfony/Component/Validator/Tests/ExecutionContextTest.php +++ b/src/Symfony/Component/Validator/Tests/ExecutionContextTest.php @@ -13,10 +13,10 @@ namespace Symfony\Component\Validator\Tests; use Symfony\Component\Validator\Constraints\Collection; use Symfony\Component\Validator\Constraints\All; +use Symfony\Component\Validator\ConstraintValidatorFactory; use Symfony\Component\Validator\ConstraintViolation; use Symfony\Component\Validator\ConstraintViolationList; use Symfony\Component\Validator\ExecutionContext; -use Symfony\Component\Validator\LegacyConstraintValidatorFactory; use Symfony\Component\Validator\Tests\Fixtures\ConstraintA; use Symfony\Component\Validator\ValidationVisitor; @@ -313,7 +313,7 @@ class ExecutionContextTest extends \PHPUnit_Framework_TestCase '[name]' ); - $visitor = new ValidationVisitor('Root', $this->metadataFactory, new LegacyConstraintValidatorFactory(), $this->translator); + $visitor = new ValidationVisitor('Root', $this->metadataFactory, new ConstraintValidatorFactory(), $this->translator); $context = new ExecutionContext($visitor, $this->translator, self::TRANS_DOMAIN); $context->validateValue($data, $constraints); diff --git a/src/Symfony/Component/Validator/Tests/Validator/LegacyValidator2Dot5ApiTest.php b/src/Symfony/Component/Validator/Tests/Validator/LegacyValidator2Dot5ApiTest.php index 4a30ba2ec6..7a00da6419 100644 --- a/src/Symfony/Component/Validator/Tests/Validator/LegacyValidator2Dot5ApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Validator/LegacyValidator2Dot5ApiTest.php @@ -11,9 +11,9 @@ namespace Symfony\Component\Validator\Tests\Validator; +use Symfony\Component\Validator\ConstraintValidatorFactory; use Symfony\Component\Validator\Context\LegacyExecutionContextFactory; use Symfony\Component\Validator\DefaultTranslator; -use Symfony\Component\Validator\LegacyConstraintValidatorFactory; use Symfony\Component\Validator\MetadataFactoryInterface; use Symfony\Component\Validator\Validator\LegacyValidator; @@ -31,7 +31,7 @@ class LegacyValidator2Dot5ApiTest extends Abstract2Dot5ApiTest protected function createValidator(MetadataFactoryInterface $metadataFactory, array $objectInitializers = array()) { $contextFactory = new LegacyExecutionContextFactory($metadataFactory, new DefaultTranslator()); - $validatorFactory = new LegacyConstraintValidatorFactory(); + $validatorFactory = new ConstraintValidatorFactory(); return new LegacyValidator($contextFactory, $metadataFactory, $validatorFactory, $objectInitializers); } diff --git a/src/Symfony/Component/Validator/Tests/Validator/LegacyValidatorLegacyApiTest.php b/src/Symfony/Component/Validator/Tests/Validator/LegacyValidatorLegacyApiTest.php index 7ebcb028cc..f803c636b9 100644 --- a/src/Symfony/Component/Validator/Tests/Validator/LegacyValidatorLegacyApiTest.php +++ b/src/Symfony/Component/Validator/Tests/Validator/LegacyValidatorLegacyApiTest.php @@ -11,9 +11,9 @@ namespace Symfony\Component\Validator\Tests\Validator; +use Symfony\Component\Validator\ConstraintValidatorFactory; use Symfony\Component\Validator\Context\LegacyExecutionContextFactory; use Symfony\Component\Validator\DefaultTranslator; -use Symfony\Component\Validator\LegacyConstraintValidatorFactory; use Symfony\Component\Validator\MetadataFactoryInterface; use Symfony\Component\Validator\Validator\LegacyValidator; @@ -31,7 +31,7 @@ class LegacyValidatorLegacyApiTest extends AbstractLegacyApiTest protected function createValidator(MetadataFactoryInterface $metadataFactory, array $objectInitializers = array()) { $contextFactory = new LegacyExecutionContextFactory($metadataFactory, new DefaultTranslator()); - $validatorFactory = new LegacyConstraintValidatorFactory(); + $validatorFactory = new ConstraintValidatorFactory(); return new LegacyValidator($contextFactory, $metadataFactory, $validatorFactory, $objectInitializers); } diff --git a/src/Symfony/Component/Validator/ValidatorBuilder.php b/src/Symfony/Component/Validator/ValidatorBuilder.php index e06c2feccf..ba6fa0c805 100644 --- a/src/Symfony/Component/Validator/ValidatorBuilder.php +++ b/src/Symfony/Component/Validator/ValidatorBuilder.php @@ -380,7 +380,7 @@ class ValidatorBuilder implements ValidatorBuilderInterface $metadataFactory = new ClassMetadataFactory($loader, $this->metadataCache); } - $validatorFactory = $this->validatorFactory; + $validatorFactory = $this->validatorFactory ?: new ConstraintValidatorFactory($this->propertyAccessor); $translator = $this->translator ?: new DefaultTranslator(); $apiVersion = $this->apiVersion; @@ -391,20 +391,16 @@ class ValidatorBuilder implements ValidatorBuilderInterface } if (Validation::API_VERSION_2_4 === $apiVersion) { - $validatorFactory = $validatorFactory ?: new ConstraintValidatorFactory($this->propertyAccessor); - return new ValidatorV24($metadataFactory, $validatorFactory, $translator, $this->translationDomain, $this->initializers); } if (Validation::API_VERSION_2_5 === $apiVersion) { $contextFactory = new ExecutionContextFactory($translator, $this->translationDomain); - $validatorFactory = $validatorFactory ?: new ConstraintValidatorFactory($this->propertyAccessor); return new RecursiveValidator($contextFactory, $metadataFactory, $validatorFactory, $this->initializers); } $contextFactory = new LegacyExecutionContextFactory($metadataFactory, $translator, $this->translationDomain); - $validatorFactory = $validatorFactory ?: new LegacyConstraintValidatorFactory($this->propertyAccessor); return new LegacyValidator($contextFactory, $metadataFactory, $validatorFactory, $this->initializers); }