Skip to content

Commit

Permalink
Merge branch '5.4' into 6.3
Browse files Browse the repository at this point in the history
* 5.4:
  [Serializer] Revert allowed attributes fix
  • Loading branch information
nicolas-grekas committed Nov 29, 2023
2 parents 868bca1 + c31ec3e commit 87faafc
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 26 deletions.
16 changes: 10 additions & 6 deletions Normalizer/AbstractObjectNormalizer.php
Original file line number Diff line number Diff line change
Expand Up @@ -260,16 +260,20 @@ protected function getAttributes(object $object, ?string $format, array $context
return $this->attributesCache[$key];
}

$attributes = $this->extractAttributes($object, $format, $context);
$allowedAttributes = $this->getAllowedAttributes($object, $context, true);

if ($mapping = $this->classDiscriminatorResolver?->getMappingForMappedObject($object)) {
array_unshift($attributes, $mapping->getTypeProperty());
if (false !== $allowedAttributes) {
if ($context['cache_key']) {
$this->attributesCache[$key] = $allowedAttributes;
}

return $allowedAttributes;
}

$allowedAttributes = $this->getAllowedAttributes($object, $context, true);
$attributes = $this->extractAttributes($object, $format, $context);

if (false !== $allowedAttributes) {
$attributes = $attributes ? array_intersect($attributes, $allowedAttributes) : $allowedAttributes;
if ($mapping = $this->classDiscriminatorResolver?->getMappingForMappedObject($object)) {
array_unshift($attributes, $mapping->getTypeProperty());
}

if ($context['cache_key'] && \stdClass::class !== $class) {
Expand Down
19 changes: 0 additions & 19 deletions Tests/Normalizer/AbstractObjectNormalizerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
use Symfony\Component\PropertyInfo\Type;
use Symfony\Component\Serializer\Annotation\Context;
use Symfony\Component\Serializer\Annotation\DiscriminatorMap;
use Symfony\Component\Serializer\Annotation\Ignore;
use Symfony\Component\Serializer\Annotation\SerializedName;
use Symfony\Component\Serializer\Annotation\SerializedPath;
use Symfony\Component\Serializer\Exception\ExtraAttributesException;
Expand Down Expand Up @@ -844,14 +843,6 @@ public function testDenormalizeWithCorrectOrderOfAttributeAndProperty()
$this->assertSame('nested-id', $test->id);
}

public function testNormalizeWithIgnoreAnnotationAndPrivateProperties()
{
$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));
$normalizer = new ObjectNormalizer($classMetadataFactory);

$this->assertSame(['foo' => 'foo'], $normalizer->normalize(new ObjectDummyWithIgnoreAnnotationAndPrivateProperty()));
}

public function testNormalizeBasedOnAllowedAttributes()
{
$normalizer = new class() extends AbstractObjectNormalizer {
Expand Down Expand Up @@ -1125,16 +1116,6 @@ class ObjectDummyWithContextAttributeSkipNullValues
public ?string $propertyWithNullSkipNullValues = null;
}

class ObjectDummyWithIgnoreAnnotationAndPrivateProperty
{
public $foo = 'foo';

/** @Ignore */
public $ignored = 'ignored';

private $private = 'private';
}

class AbstractObjectNormalizerWithMetadata extends AbstractObjectNormalizer
{
public function __construct()
Expand Down
2 changes: 1 addition & 1 deletion Tests/SerializerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ public function testDeserializeAndSerializeInterfacedObjectsWithTheClassMetadata
'groups' => ['two'],
]);

$this->assertEquals('{"type":"one","two":2}', $serialized);
$this->assertEquals('{"two":2,"type":"one"}', $serialized);
}

public function testDeserializeAndSerializeNestedInterfacedObjectsWithTheClassMetadataDiscriminator()
Expand Down

0 comments on commit 87faafc

Please sign in to comment.