Skip to content

Commit 56b30a7

Browse files
bug #62682 [Serializer][Validator] Attribute metadata no longer requires container.excluded tags (HypeMC)
This PR was merged into the 7.4 branch. Discussion ---------- [Serializer][Validator] Attribute metadata no longer requires `container.excluded` tags | Q | A | ------------- | --- | Branch? | 7.4 | Bug fix? | yes | New feature? | no | Deprecations? | no | Issues | Fix #62687 | License | MIT Unfortunately, #62647 broke container complitation: > The resource "\<FQCN\>" tagged "validator.attribute_metadata" is missing the "container.excluded" tag. Commits ------- 4f61e36 [Serializer][Validator] Attribute metadata no longer requires `container.excluded` tags
2 parents 1d9cac6 + 4f61e36 commit 56b30a7

File tree

4 files changed

+12
-58
lines changed

4 files changed

+12
-58
lines changed

src/Symfony/Component/Serializer/DependencyInjection/AttributeMetadataPass.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1515
use Symfony\Component\DependencyInjection\ContainerBuilder;
16-
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
1716
use Symfony\Component\Serializer\Exception\MappingException;
1817

1918
/**
@@ -33,9 +32,6 @@ public function process(ContainerBuilder $container): void
3332
if (!$definition->hasTag('serializer.attribute_metadata')) {
3433
continue;
3534
}
36-
if (!$definition->hasTag('container.excluded')) {
37-
throw new InvalidArgumentException(\sprintf('The resource "%s" tagged "serializer.attribute_metadata" is missing the "container.excluded" tag.', $id));
38-
}
3935
$class = $resolve($definition->getClass());
4036
foreach ($definition->getTag('serializer.attribute_metadata') as $attributes) {
4137
if ($class !== $for = $attributes['for'] ?? $class) {

src/Symfony/Component/Serializer/Tests/DependencyInjection/AttributeMetadataPassTest.php

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\DependencyInjection\ContainerBuilder;
16-
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
1716
use Symfony\Component\Serializer\DependencyInjection\AttributeMetadataPass;
1817
use Symfony\Component\Serializer\Exception\MappingException;
1918
use Symfony\Component\Serializer\Mapping\Loader\AttributeLoader;
@@ -52,18 +51,14 @@ public function testProcessWithTaggedServices()
5251
->setArguments([false, []]);
5352

5453
$container->register('service1', '%user_entity.class%')
55-
->addTag('serializer.attribute_metadata')
56-
->addTag('container.excluded');
54+
->addTag('serializer.attribute_metadata');
5755
$container->register('service2', 'App\Entity\Product')
58-
->addTag('serializer.attribute_metadata')
59-
->addTag('container.excluded');
56+
->addTag('serializer.attribute_metadata');
6057
$container->register('service3', 'App\Entity\Order')
61-
->addTag('serializer.attribute_metadata')
62-
->addTag('container.excluded');
58+
->addTag('serializer.attribute_metadata');
6359
// Classes should be deduplicated
6460
$container->register('service4', 'App\Entity\Order')
65-
->addTag('serializer.attribute_metadata')
66-
->addTag('container.excluded');
61+
->addTag('serializer.attribute_metadata');
6762

6863
(new AttributeMetadataPass())->process($container);
6964

@@ -78,18 +73,6 @@ public function testProcessWithTaggedServices()
7873
$this->assertSame([false, $expectedClasses], $arguments);
7974
}
8075

81-
public function testThrowsWhenMissingExcludedTag()
82-
{
83-
$container = new ContainerBuilder();
84-
$container->register('serializer.mapping.attribute_loader');
85-
86-
$container->register('service_without_excluded', 'App\\Entity\\User')
87-
->addTag('serializer.attribute_metadata');
88-
89-
$this->expectException(InvalidArgumentException::class);
90-
(new AttributeMetadataPass())->process($container);
91-
}
92-
9376
public function testProcessWithForOptionAndMatchingMembers()
9477
{
9578
$sourceClass = _AttrMeta_Source::class;
@@ -100,8 +83,7 @@ public function testProcessWithForOptionAndMatchingMembers()
10083
->setArguments([false, []]);
10184

10285
$container->register('service.source', $sourceClass)
103-
->addTag('serializer.attribute_metadata', ['for' => $targetClass])
104-
->addTag('container.excluded');
86+
->addTag('serializer.attribute_metadata', ['for' => $targetClass]);
10587

10688
(new AttributeMetadataPass())->process($container);
10789

@@ -119,8 +101,7 @@ public function testProcessWithForOptionAndMissingMemberThrows()
119101
->setArguments([false, []]);
120102

121103
$container->register('service.source', $sourceClass)
122-
->addTag('serializer.attribute_metadata', ['for' => $targetClass])
123-
->addTag('container.excluded');
104+
->addTag('serializer.attribute_metadata', ['for' => $targetClass]);
124105

125106
$this->expectException(MappingException::class);
126107
(new AttributeMetadataPass())->process($container);

src/Symfony/Component/Validator/DependencyInjection/AttributeMetadataPass.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1515
use Symfony\Component\DependencyInjection\ContainerBuilder;
16-
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
1716
use Symfony\Component\Validator\Exception\MappingException;
1817

1918
/**
@@ -33,9 +32,6 @@ public function process(ContainerBuilder $container): void
3332
if (!$definition->hasTag('validator.attribute_metadata')) {
3433
continue;
3534
}
36-
if (!$definition->hasTag('container.excluded')) {
37-
throw new InvalidArgumentException(\sprintf('The resource "%s" tagged "validator.attribute_metadata" is missing the "container.excluded" tag.', $id));
38-
}
3935
$class = $resolve($definition->getClass());
4036
foreach ($definition->getTag('validator.attribute_metadata') as $attributes) {
4137
if ($class !== $for = $attributes['for'] ?? $class) {

src/Symfony/Component/Validator/Tests/DependencyInjection/AttributeMetadataPassTest.php

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use PHPUnit\Framework\TestCase;
1515
use Symfony\Component\DependencyInjection\ContainerBuilder;
16-
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
1716
use Symfony\Component\Validator\DependencyInjection\AttributeMetadataPass;
1817
use Symfony\Component\Validator\Exception\MappingException;
1918

@@ -49,18 +48,14 @@ public function testProcessWithTaggedServices()
4948
->addMethodCall('addAttributeMappings', [[]]);
5049

5150
$container->register('service1', '%user_entity.class%')
52-
->addTag('validator.attribute_metadata')
53-
->addTag('container.excluded');
51+
->addTag('validator.attribute_metadata');
5452
$container->register('service2', 'App\Entity\Product')
55-
->addTag('validator.attribute_metadata')
56-
->addTag('container.excluded');
53+
->addTag('validator.attribute_metadata');
5754
$container->register('service3', 'App\Entity\Order')
58-
->addTag('validator.attribute_metadata')
59-
->addTag('container.excluded');
55+
->addTag('validator.attribute_metadata');
6056
// Classes should be deduplicated
6157
$container->register('service4', 'App\Entity\Order')
62-
->addTag('validator.attribute_metadata')
63-
->addTag('container.excluded');
58+
->addTag('validator.attribute_metadata');
6459

6560
(new AttributeMetadataPass())->process($container);
6661

@@ -77,18 +72,6 @@ public function testProcessWithTaggedServices()
7772
$this->assertEquals([$expectedClasses], $methodCalls[1][1]);
7873
}
7974

80-
public function testThrowsWhenMissingExcludedTag()
81-
{
82-
$container = new ContainerBuilder();
83-
$container->register('validator.builder');
84-
85-
$container->register('service_without_excluded', 'App\\Entity\\User')
86-
->addTag('validator.attribute_metadata');
87-
88-
$this->expectException(InvalidArgumentException::class);
89-
(new AttributeMetadataPass())->process($container);
90-
}
91-
9275
public function testProcessWithForOptionAndMatchingMembers()
9376
{
9477
$sourceClass = _AttrMeta_Source::class;
@@ -98,8 +81,7 @@ public function testProcessWithForOptionAndMatchingMembers()
9881
$container->register('validator.builder');
9982

10083
$container->register('service.source', $sourceClass)
101-
->addTag('validator.attribute_metadata', ['for' => $targetClass])
102-
->addTag('container.excluded');
84+
->addTag('validator.attribute_metadata', ['for' => $targetClass]);
10385

10486
(new AttributeMetadataPass())->process($container);
10587

@@ -118,8 +100,7 @@ public function testProcessWithForOptionAndMissingMemberThrows()
118100
$container->register('validator.builder');
119101

120102
$container->register('service.source', $sourceClass)
121-
->addTag('validator.attribute_metadata', ['for' => $targetClass])
122-
->addTag('container.excluded');
103+
->addTag('validator.attribute_metadata', ['for' => $targetClass]);
123104

124105
$this->expectException(MappingException::class);
125106
(new AttributeMetadataPass())->process($container);

0 commit comments

Comments
 (0)