Skip to content

Commit f80569c

Browse files
committed
feature #14016 Remove the API version in the validator component (saro0h, fabpot, stof)
This PR was merged into the 2.7 branch. Discussion ---------- Remove the API version in the validator component | Q | A | ------------- | --- | Bug fix? | no | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #13458 | License | MIT | Doc PR | n/a This completes the work of #13517 Commits ------- 9438206 Complete the removal of API versions in the validator component 75088c0 [Validator] deprecated API version 0c69f69 Removed 2.5 bc layer
2 parents e24514a + 4c146cc commit f80569c

16 files changed

+18
-204
lines changed

DependencyInjection/Configuration.php

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,14 @@ public function getConfigTreeBuilder()
112112
return $v;
113113
})
114114
->end()
115+
->beforeNormalization()
116+
->ifTrue(function ($v) { return isset($v['validation']['api']); })
117+
->then(function ($v) {
118+
trigger_error('The validation.api configuration key is deprecated since version 2.7 and will be removed in 3.0', E_USER_DEPRECATED);
119+
120+
return $v;
121+
})
122+
->end()
115123
->children()
116124
->scalarNode('secret')->end()
117125
->scalarNode('http_method_override')
@@ -610,6 +618,7 @@ private function addValidationSection(ArrayNodeDefinition $rootNode)
610618
->scalarNode('translation_domain')->defaultValue('validators')->end()
611619
->booleanNode('strict_email')->defaultFalse()->end()
612620
->enumNode('api')
621+
->info('Deprecated since version 2.7, to be removed in 3.0')
613622
->values(array('2.4', '2.5', '2.5-bc', 'auto'))
614623
->beforeNormalization()
615624
// XML/YAML parse as numbers, not as strings
@@ -620,19 +629,6 @@ private function addValidationSection(ArrayNodeDefinition $rootNode)
620629
->end()
621630
->end()
622631
->end()
623-
->validate()
624-
->ifTrue(function ($v) { return !isset($v['validation']['api']) || 'auto' === $v['validation']['api']; })
625-
->then(function ($v) {
626-
// This condition is duplicated in ValidatorBuilder. This
627-
// duplication is necessary in order to know the desired
628-
// API version already during container configuration
629-
// (to adjust service classes etc.)
630-
// See https://github.com/symfony/symfony/issues/11580
631-
$v['validation']['api'] = '2.5-bc';
632-
633-
return $v;
634-
})
635-
->end()
636632
;
637633
}
638634

DependencyInjection/FrameworkExtension.php

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -761,20 +761,11 @@ private function registerValidationConfiguration(array $config, ContainerBuilder
761761
$validatorBuilder->addMethodCall('setMetadataCache', array(new Reference($config['cache'])));
762762
}
763763

764-
if ('2.5' === $config['api']) {
765-
$api = Validation::API_VERSION_2_5;
766-
} else {
767-
// 2.4 is now the same as 2.5 BC
768-
$api = Validation::API_VERSION_2_5_BC;
769-
// the validation class needs to be changed for BC
770-
$container->setParameter('validator.class', 'Symfony\Component\Validator\ValidatorInterface');
771-
}
772-
773-
$validatorBuilder->addMethodCall('setApiVersion', array($api));
774-
775764
// You can use this parameter to check the API version in your own
776765
// bundle extension classes
777-
$container->setParameter('validator.api', $api);
766+
// This is set to 2.5-bc for compatibility with Symfony 2.5 and 2.6.
767+
// @deprecated since version 2.7, to be removed in 3.0
768+
$container->setParameter('validator.api', '2.5-bc');
778769
}
779770

780771
private function getValidatorMappingFiles(ContainerBuilder $container)

Tests/DependencyInjection/ConfigurationTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ protected static function getBundleDefaultConfig()
153153
'static_method' => array('loadValidatorMetadata'),
154154
'translation_domain' => 'validators',
155155
'strict_email' => false,
156-
'api' => '2.5-bc',
157156
),
158157
'annotations' => array(
159158
'cache' => 'file',

Tests/DependencyInjection/Fixtures/php/validation_2_5_api.php

Lines changed: 0 additions & 9 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/php/validation_2_5_bc_api.php

Lines changed: 0 additions & 9 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/php/validation_auto_api.php

Lines changed: 0 additions & 9 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/php/validation_implicit_api.php

Lines changed: 0 additions & 8 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/xml/validation_2_5_api.xml

Lines changed: 0 additions & 12 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/xml/validation_2_5_bc_api.xml

Lines changed: 0 additions & 12 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/xml/validation_auto_api.xml

Lines changed: 0 additions & 12 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/xml/validation_implicit_api.xml

Lines changed: 0 additions & 12 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/yml/validation_2_5_api.yml

Lines changed: 0 additions & 5 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/yml/validation_2_5_bc_api.yml

Lines changed: 0 additions & 5 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/yml/validation_auto_api.yml

Lines changed: 0 additions & 5 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/yml/validation_implicit_api.yml

Lines changed: 0 additions & 4 deletions
This file was deleted.

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 6 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ public function testValidation()
276276

277277
$calls = $container->getDefinition('validator.builder')->getMethodCalls();
278278

279-
$this->assertCount(7, $calls);
279+
$this->assertCount(6, $calls);
280280
$this->assertSame('setConstraintValidatorFactory', $calls[0][0]);
281281
$this->assertEquals(array(new Reference('validator.validator_factory')), $calls[0][1]);
282282
$this->assertSame('setTranslator', $calls[1][0]);
@@ -289,8 +289,6 @@ public function testValidation()
289289
$this->assertSame(array('loadValidatorMetadata'), $calls[4][1]);
290290
$this->assertSame('setMetadataCache', $calls[5][0]);
291291
$this->assertEquals(array(new Reference('validator.mapping.cache.apc')), $calls[5][1]);
292-
$this->assertSame('setApiVersion', $calls[6][0]);
293-
$this->assertEquals(array(Validation::API_VERSION_2_5_BC), $calls[6][1]);
294292
}
295293

296294
/**
@@ -306,14 +304,14 @@ public function testLegacyFullyConfiguredValidationService()
306304

307305
$container = $this->createContainerFromFile('full');
308306

309-
$this->assertInstanceOf('Symfony\Component\Validator\ValidatorInterface', $container->get('validator'));
307+
$this->assertInstanceOf('Symfony\Component\Validator\Validator\ValidatorInterface', $container->get('validator'));
310308
}
311309

312310
public function testValidationService()
313311
{
314312
$container = $this->createContainerFromFile('validation_annotations');
315313

316-
$this->assertInstanceOf('Symfony\Component\Validator\ValidatorInterface', $container->get('validator'));
314+
$this->assertInstanceOf('Symfony\Component\Validator\Validator\ValidatorInterface', $container->get('validator'));
317315
}
318316

319317
public function testAnnotations()
@@ -337,7 +335,7 @@ public function testValidationAnnotations()
337335

338336
$calls = $container->getDefinition('validator.builder')->getMethodCalls();
339337

340-
$this->assertCount(7, $calls);
338+
$this->assertCount(6, $calls);
341339
$this->assertSame('enableAnnotationMapping', $calls[4][0]);
342340
$this->assertEquals(array(new Reference('annotation_reader')), $calls[4][1]);
343341
$this->assertSame('addMethodMapping', $calls[5][0]);
@@ -355,7 +353,7 @@ public function testValidationPaths()
355353

356354
$calls = $container->getDefinition('validator.builder')->getMethodCalls();
357355

358-
$this->assertCount(8, $calls);
356+
$this->assertCount(7, $calls);
359357
$this->assertSame('addXmlMappings', $calls[3][0]);
360358
$this->assertSame('addYamlMappings', $calls[4][0]);
361359
$this->assertSame('enableAnnotationMapping', $calls[5][0]);
@@ -378,79 +376,11 @@ public function testValidationNoStaticMethod()
378376

379377
$calls = $container->getDefinition('validator.builder')->getMethodCalls();
380378

381-
$this->assertCount(5, $calls);
379+
$this->assertCount(4, $calls);
382380
$this->assertSame('addXmlMappings', $calls[3][0]);
383381
// no cache, no annotations, no static methods
384382
}
385383

386-
public function testValidation2Dot5Api()
387-
{
388-
$container = $this->createContainerFromFile('validation_2_5_api');
389-
390-
$calls = $container->getDefinition('validator.builder')->getMethodCalls();
391-
392-
$this->assertCount(6, $calls);
393-
$this->assertSame('addXmlMappings', $calls[3][0]);
394-
$this->assertSame('addMethodMapping', $calls[4][0]);
395-
$this->assertSame(array('loadValidatorMetadata'), $calls[4][1]);
396-
$this->assertSame('setApiVersion', $calls[5][0]);
397-
$this->assertSame(array(Validation::API_VERSION_2_5), $calls[5][1]);
398-
$this->assertSame('Symfony\Component\Validator\Validator\ValidatorInterface', $container->getParameter('validator.class'));
399-
// no cache, no annotations
400-
}
401-
402-
public function testValidation2Dot5BcApi()
403-
{
404-
$container = $this->createContainerFromFile('validation_2_5_bc_api');
405-
406-
$calls = $container->getDefinition('validator.builder')->getMethodCalls();
407-
408-
$this->assertCount(6, $calls);
409-
$this->assertSame('addXmlMappings', $calls[3][0]);
410-
$this->assertSame('addMethodMapping', $calls[4][0]);
411-
$this->assertSame(array('loadValidatorMetadata'), $calls[4][1]);
412-
$this->assertSame('setApiVersion', $calls[5][0]);
413-
$this->assertSame(array(Validation::API_VERSION_2_5_BC), $calls[5][1]);
414-
$this->assertSame('Symfony\Component\Validator\ValidatorInterface', $container->getParameter('validator.class'));
415-
// no cache, no annotations
416-
}
417-
418-
public function testValidationImplicitApi()
419-
{
420-
$container = $this->createContainerFromFile('validation_implicit_api');
421-
422-
$calls = $container->getDefinition('validator.builder')->getMethodCalls();
423-
424-
$this->assertCount(6, $calls);
425-
$this->assertSame('addXmlMappings', $calls[3][0]);
426-
$this->assertSame('addMethodMapping', $calls[4][0]);
427-
$this->assertSame(array('loadValidatorMetadata'), $calls[4][1]);
428-
$this->assertSame('setApiVersion', $calls[5][0]);
429-
// no cache, no annotations
430-
431-
$this->assertSame(array(Validation::API_VERSION_2_5_BC), $calls[5][1]);
432-
}
433-
434-
/**
435-
* This feature is equivalent to the implicit api, only that the "api"
436-
* key is explicitly set to "auto".
437-
*/
438-
public function testValidationAutoApi()
439-
{
440-
$container = $this->createContainerFromFile('validation_auto_api');
441-
442-
$calls = $container->getDefinition('validator.builder')->getMethodCalls();
443-
444-
$this->assertCount(6, $calls);
445-
$this->assertSame('addXmlMappings', $calls[3][0]);
446-
$this->assertSame('addMethodMapping', $calls[4][0]);
447-
$this->assertSame(array('loadValidatorMetadata'), $calls[4][1]);
448-
$this->assertSame('setApiVersion', $calls[5][0]);
449-
// no cache, no annotations
450-
451-
$this->assertSame(array(Validation::API_VERSION_2_5_BC), $calls[5][1]);
452-
}
453-
454384
public function testFormsCanBeEnabledWithoutCsrfProtection()
455385
{
456386
$container = $this->createContainerFromFile('form_no_csrf');

0 commit comments

Comments
 (0)