Skip to content

Commit ca5326d

Browse files
committed
Merge remote-tracking branch 'upstream/2.4' into merge
2 parents 6980627 + 637d85d commit ca5326d

File tree

10 files changed

+51
-28
lines changed

10 files changed

+51
-28
lines changed

phpstan.neon.dist

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ parameters:
3232
-
3333
message: '#Cannot assign offset .+ to bool\.#'
3434
path: %currentWorkingDirectory%/src/GraphQl/Resolver/FieldsToAttributesTrait.php
35-
-
36-
message: '#Access to an undefined property GraphQL\\Language\\AST\\ValueNode::\$value\.#'
37-
path: %currentWorkingDirectory%/src/GraphQl/Type/Definition/IterableType.php
3835
- '#Access to an undefined property Prophecy\\Prophecy\\ObjectProphecy<(\\?[a-zA-Z0-9_]+)+>::\$[a-zA-Z0-9_]+#'
3936
- '#Call to an undefined method Doctrine\\Common\\Persistence\\ObjectManager::getConnection\(\)#'
4037
- '#Parameter \#1 \$function of function call_user_func expects callable\(\): mixed, .+ given\.#'
@@ -56,6 +53,15 @@ parameters:
5653
-
5754
message: '#Parameter \#1 \$collection of method ApiPlatform\\Core\\Tests\\GraphQl\\Resolver\\Factory\\CollectionResolverFactoryTest::createCollectionResolverFactory\(\) expects array\|Iterator, object given\.#'
5855
path: %currentWorkingDirectory%/tests/GraphQl/Resolver/Factory/CollectionResolverFactoryTest.php
56+
-
57+
message: '#Parameter \#1 \$resourceClass of method ApiPlatform\\Core\\Metadata\\Property\\Factory\\InheritedPropertyMetadataFactory::create\(\) expects string, object\|string given\.#'
58+
path: %currentWorkingDirectory%/src/Metadata/Property/Factory/InheritedPropertyMetadataFactory.php
59+
-
60+
message: '#Parameter \#1 \$childInherited of method ApiPlatform\\Core\\Metadata\\Property\\PropertyMetadata::withChildInherited\(\) expects string, object\|string given\.#'
61+
path: %currentWorkingDirectory%/src/Metadata/Property/Factory/InheritedPropertyMetadataFactory.php
62+
-
63+
message: '#Parameter \#1 \$resourceClass of method ApiPlatform\\Core\\Metadata\\Property\\Factory\\InheritedPropertyNameCollectionFactory::create\(\) expects string, object\|string given\.#'
64+
path: %currentWorkingDirectory%/src/Metadata/Property/Factory/InheritedPropertyNameCollectionFactory.php
5965
-
6066
message: '#Property ApiPlatform\\Core\\Test\\DoctrineMongoDbOdmFilterTestCase::\$repository \(Doctrine\\ODM\\MongoDB\\Repository\\DocumentRepository\) does not accept Doctrine\\ORM\\EntityRepository<ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Document\\Dummy>\.#'
6167
path: %currentWorkingDirectory%/src/Test/DoctrineMongoDbOdmFilterTestCase.php

src/Bridge/Doctrine/Orm/Filter/SearchFilter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class SearchFilter extends AbstractContextAwareFilter implements SearchFilterInt
4141
/**
4242
* @param RequestStack|null $requestStack No prefix to prevent autowiring of this deprecated property
4343
*/
44-
public function __construct(ManagerRegistry $managerRegistry, $requestStack, IriConverterInterface $iriConverter, PropertyAccessorInterface $propertyAccessor = null, LoggerInterface $logger = null, array $properties = null)
44+
public function __construct(ManagerRegistry $managerRegistry, $requestStack = null, IriConverterInterface $iriConverter, PropertyAccessorInterface $propertyAccessor = null, LoggerInterface $logger = null, array $properties = null)
4545
{
4646
parent::__construct($managerRegistry, $requestStack, $logger, $properties);
4747

src/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtension.php

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -439,21 +439,17 @@ private function registerBundlesConfiguration(array $bundles, array $config, Xml
439439
*/
440440
private function registerCacheConfiguration(ContainerBuilder $container)
441441
{
442-
if (!$container->hasParameter('api_platform.metadata_cache')) {
442+
// Don't use system cache pool in dev
443+
if ($container->hasParameter('api_platform.metadata_cache') ? $container->getParameter('api_platform.metadata_cache') : !$container->getParameter('kernel.debug')) {
443444
return;
444445
}
445446

446-
@trigger_error('The "api_platform.metadata_cache" parameter is deprecated since version 2.4 and will have no effect in 3.0.', E_USER_DEPRECATED);
447-
448-
// BC
449-
if (!$container->getParameter('api_platform.metadata_cache')) {
450-
$container->register('api_platform.cache.metadata.property', ArrayAdapter::class);
451-
$container->register('api_platform.cache.metadata.resource', ArrayAdapter::class);
452-
$container->register('api_platform.cache.route_name_resolver', ArrayAdapter::class);
453-
$container->register('api_platform.cache.identifiers_extractor', ArrayAdapter::class);
454-
$container->register('api_platform.cache.subresource_operation_factory', ArrayAdapter::class);
455-
$container->register('api_platform.elasticsearch.cache.metadata.document', ArrayAdapter::class);
456-
}
447+
$container->register('api_platform.cache.metadata.property', ArrayAdapter::class);
448+
$container->register('api_platform.cache.metadata.resource', ArrayAdapter::class);
449+
$container->register('api_platform.cache.route_name_resolver', ArrayAdapter::class);
450+
$container->register('api_platform.cache.identifiers_extractor', ArrayAdapter::class);
451+
$container->register('api_platform.cache.subresource_operation_factory', ArrayAdapter::class);
452+
$container->register('api_platform.elasticsearch.cache.metadata.document', ArrayAdapter::class);
457453
}
458454

459455
/**

src/HttpCache/EventListener/AddHeadersListener.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public function onKernelResponse(FilterResponseEvent $event): void
5252

5353
$response = $event->getResponse();
5454

55-
if (!$response->getContent()) {
55+
if (!$response->getContent() || !$response->isSuccessful()) {
5656
return;
5757
}
5858

src/Metadata/Property/Factory/InheritedPropertyMetadataFactory.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323
*/
2424
final class InheritedPropertyMetadataFactory implements PropertyMetadataFactoryInterface
2525
{
26-
private $resourceNameCollection;
26+
private $resourceNameCollectionFactory;
2727
private $decorated;
2828

29-
public function __construct(ResourceNameCollectionFactoryInterface $resourceNameCollection, PropertyMetadataFactoryInterface $decorated = null)
29+
public function __construct(ResourceNameCollectionFactoryInterface $resourceNameCollectionFactory, PropertyMetadataFactoryInterface $decorated = null)
3030
{
31-
$this->resourceNameCollection = $resourceNameCollection;
31+
$this->resourceNameCollectionFactory = $resourceNameCollectionFactory;
3232
$this->decorated = $decorated;
3333
}
3434

@@ -39,7 +39,7 @@ public function create(string $resourceClass, string $property, array $options =
3939
{
4040
$propertyMetadata = $this->decorated ? $this->decorated->create($resourceClass, $property, $options) : new PropertyMetadata();
4141

42-
foreach ($this->resourceNameCollection->create() as $knownResourceClass) {
42+
foreach ($this->resourceNameCollectionFactory->create() as $knownResourceClass) {
4343
if ($resourceClass === $knownResourceClass) {
4444
continue;
4545
}

src/Metadata/Property/Factory/InheritedPropertyNameCollectionFactory.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323
*/
2424
final class InheritedPropertyNameCollectionFactory implements PropertyNameCollectionFactoryInterface
2525
{
26-
private $resourceNameCollection;
26+
private $resourceNameCollectionFactory;
2727
private $decorated;
2828

29-
public function __construct(ResourceNameCollectionFactoryInterface $resourceNameCollection, PropertyNameCollectionFactoryInterface $decorated = null)
29+
public function __construct(ResourceNameCollectionFactoryInterface $resourceNameCollectionFactory, PropertyNameCollectionFactoryInterface $decorated = null)
3030
{
31-
$this->resourceNameCollection = $resourceNameCollection;
31+
$this->resourceNameCollectionFactory = $resourceNameCollectionFactory;
3232
$this->decorated = $decorated;
3333
}
3434

@@ -46,7 +46,7 @@ public function create(string $resourceClass, array $options = []): PropertyName
4646
}
4747
}
4848

49-
foreach ($this->resourceNameCollection->create() as $knownResourceClass) {
49+
foreach ($this->resourceNameCollectionFactory->create() as $knownResourceClass) {
5050
if ($resourceClass === $knownResourceClass) {
5151
continue;
5252
}

src/Metadata/Resource/ResourceNameCollection.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,18 @@ public function __construct(array $classes = [])
3232

3333
/**
3434
* {@inheritdoc}
35+
*
36+
* @return \Traversable<string>
3537
*/
36-
public function getIterator()
38+
public function getIterator(): \Traversable
3739
{
3840
return new \ArrayIterator($this->classes);
3941
}
4042

4143
/**
4244
* {@inheritdoc}
4345
*/
44-
public function count()
46+
public function count(): int
4547
{
4648
return \count($this->classes);
4749
}

tests/Bridge/Symfony/Bundle/DependencyInjection/ApiPlatformExtensionTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1055,7 +1055,8 @@ private function getBaseContainerBuilderProphecy()
10551055
$containerBuilderProphecy->setAlias($alias, $service)->shouldBeCalled();
10561056
}
10571057

1058-
$containerBuilderProphecy->hasParameter('api_platform.metadata_cache')->willReturn(false);
1058+
$containerBuilderProphecy->hasParameter('api_platform.metadata_cache')->willReturn(true)->shouldBeCalled();
1059+
$containerBuilderProphecy->getParameter('api_platform.metadata_cache')->willReturn(true)->shouldBeCalled();
10591060

10601061
$containerBuilderProphecy->getDefinition('api_platform.mercure.listener.response.add_link_header')->willReturn(new Definition());
10611062

tests/Fixtures/app/config/config_common.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ api_platform:
8989
parameters:
9090
container.autowiring.strict_mode: true
9191
container.dumper.inline_class_loader: true
92+
# Enable the metadata cache to speedup the builds
93+
api_platform.metadata_cache: true
9294

9395
services:
9496
contain_non_resource.item_data_provider:

tests/HttpCache/EventListener/AddHeadersListenerTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,22 @@ public function testDoNotSetHeaderWhenMethodNotCacheable()
4444
$this->assertNull($response->getEtag());
4545
}
4646

47+
public function testDoNotSetHeaderOnUnsuccessfulResponse()
48+
{
49+
$request = new Request([], [], ['_api_resource_class' => Dummy::class, '_api_item_operation_name' => 'get']);
50+
51+
$response = new Response('{}', Response::HTTP_BAD_REQUEST);
52+
53+
$event = $this->prophesize(FilterResponseEvent::class);
54+
$event->getRequest()->willReturn($request)->shouldBeCalled();
55+
$event->getResponse()->willReturn($response)->shouldBeCalled();
56+
57+
$listener = new AddHeadersListener(true);
58+
$listener->onKernelResponse($event->reveal());
59+
60+
$this->assertNull($response->getEtag());
61+
}
62+
4763
public function testDoNotSetHeaderWhenNotAnApiOperation()
4864
{
4965
$request = new Request();

0 commit comments

Comments
 (0)