Skip to content

Commit

Permalink
[Serializer] Ignore \Traversable in default normalizers. Close #14495.
Browse files Browse the repository at this point in the history
  • Loading branch information
dunglas committed May 4, 2015
1 parent f6c77ff commit c9bff46
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 3 deletions.
Expand Up @@ -127,7 +127,7 @@ public function denormalize($data, $class, $format = null, array $context = arra
*/
public function supportsNormalization($data, $format = null)
{
return is_object($data) && $this->supports(get_class($data));
return is_object($data) && !$data instanceof \Traversable && $this->supports(get_class($data));
}

/**
Expand Down
Expand Up @@ -43,7 +43,7 @@ public function __construct(ClassMetadataFactoryInterface $classMetadataFactory
*/
public function supportsNormalization($data, $format = null)
{
return is_object($data);
return is_object($data) && !$data instanceof \Traversable;
}

/**
Expand Down
Expand Up @@ -127,7 +127,7 @@ public function denormalize($data, $class, $format = null, array $context = arra
*/
public function supportsNormalization($data, $format = null)
{
return is_object($data) && $this->supports(get_class($data));
return is_object($data) && !$data instanceof \Traversable && $this->supports(get_class($data));
}

/**
Expand Down
Expand Up @@ -502,6 +502,11 @@ public function testDenormalizeNonExistingAttribute()
$this->normalizer->denormalize(array('non_existing' => true), __NAMESPACE__.'\PropertyDummy')
);
}

public function testNoTraversableSupport()
{
$this->assertFalse($this->normalizer->supportsNormalization(new \ArrayObject()));
}
}

class GetSetDummy
Expand Down
Expand Up @@ -429,6 +429,11 @@ public function testDenormalizeNonExistingAttribute()
$this->normalizer->denormalize(array('non_existing' => true), __NAMESPACE__.'\ObjectDummy')
);
}

public function testNoTraversableSupport()
{
$this->assertFalse($this->normalizer->supportsNormalization(new \ArrayObject()));
}
}

class ObjectDummy
Expand Down
Expand Up @@ -419,6 +419,11 @@ public function testUnableToNormalizeObjectAttribute()

$this->normalizer->normalize($obj, 'any');
}

public function testNoTraversableSupport()
{
$this->assertFalse($this->normalizer->supportsNormalization(new \ArrayObject()));
}
}

class PropertyDummy
Expand Down

0 comments on commit c9bff46

Please sign in to comment.