Skip to content

Commit dc461fc

Browse files
authored
Merge pull request #3276 from dunglas/fix-deprecations
Remove http_cache.invalidation deprecation and fix some remaining deprec
2 parents dd497cf + fbfa615 commit dc461fc

File tree

7 files changed

+56
-38
lines changed

7 files changed

+56
-38
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2008,7 +2008,7 @@ jobs:
20082008
fail-fast: false
20092009
timeout-minutes: 20
20102010
env:
2011-
SYMFONY_DEPRECATIONS_HELPER: max[total]=5 # 5 deprecation notices from FOSUserBundle
2011+
SYMFONY_DEPRECATIONS_HELPER: max[total]=8 # 5 deprecation notices from FOSUserBundle
20122012
steps:
20132013
- name: Checkout
20142014
uses: actions/checkout@v1

src/Bridge/Doctrine/MongoDbOdm/Extension/OrderExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public function applyToCollection(Builder $aggregationBuilder, string $resourceC
5454
$identifiers = $classMetaData->getIdentifier();
5555
if (null !== $this->resourceMetadataFactory) {
5656
$defaultOrder = $this->resourceMetadataFactory->create($resourceClass)->getAttribute('order');
57-
if (null !== $defaultOrder) {
57+
if (\is_array($defaultOrder)) {
5858
foreach ($defaultOrder as $field => $order) {
5959
if (\is_int($field)) {
6060
// Default direction

src/Bridge/Doctrine/Orm/Extension/OrderExtension.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGenerator
5252
$identifiers = $classMetaData->getIdentifier();
5353
if (null !== $this->resourceMetadataFactory) {
5454
$defaultOrder = $this->resourceMetadataFactory->create($resourceClass)->getAttribute('order');
55-
if (null !== $defaultOrder) {
55+
if (\is_array($defaultOrder)) {
5656
foreach ($defaultOrder as $field => $order) {
5757
if (\is_int($field)) {
5858
// Default direction

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

Lines changed: 37 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -167,26 +167,26 @@ private function registerCommonConfiguration(ContainerBuilder $container, array
167167
$container->setParameter('api_platform.eager_loading.fetch_partial', $config['eager_loading']['fetch_partial']);
168168
$container->setParameter('api_platform.eager_loading.force_eager', $config['eager_loading']['force_eager']);
169169
$container->setParameter('api_platform.collection.exists_parameter_name', $config['collection']['exists_parameter_name']);
170-
$container->setParameter('api_platform.collection.order', $config['collection']['order']);
170+
$container->setParameter('api_platform.collection.order', $config['defaults']['order'] ?? $config['collection']['order']);
171171
$container->setParameter('api_platform.collection.order_parameter_name', $config['collection']['order_parameter_name']);
172-
$container->setParameter('api_platform.collection.pagination.enabled', $this->isConfigEnabled($container, $config['collection']['pagination']));
173-
$container->setParameter('api_platform.collection.pagination.partial', $config['collection']['pagination']['partial']);
174-
$container->setParameter('api_platform.collection.pagination.client_enabled', $config['collection']['pagination']['client_enabled']);
175-
$container->setParameter('api_platform.collection.pagination.client_items_per_page', $config['collection']['pagination']['client_items_per_page']);
176-
$container->setParameter('api_platform.collection.pagination.client_partial', $config['collection']['pagination']['client_partial']);
177-
$container->setParameter('api_platform.collection.pagination.items_per_page', $config['collection']['pagination']['items_per_page']);
178-
$container->setParameter('api_platform.collection.pagination.maximum_items_per_page', $config['collection']['pagination']['maximum_items_per_page']);
179-
$container->setParameter('api_platform.collection.pagination.page_parameter_name', $config['collection']['pagination']['page_parameter_name']);
180-
$container->setParameter('api_platform.collection.pagination.enabled_parameter_name', $config['collection']['pagination']['enabled_parameter_name']);
181-
$container->setParameter('api_platform.collection.pagination.items_per_page_parameter_name', $config['collection']['pagination']['items_per_page_parameter_name']);
182-
$container->setParameter('api_platform.collection.pagination.partial_parameter_name', $config['collection']['pagination']['partial_parameter_name']);
183-
$container->setParameter('api_platform.collection.pagination', $config['collection']['pagination']);
184-
$container->setParameter('api_platform.http_cache.etag', $config['http_cache']['etag']);
185-
$container->setParameter('api_platform.http_cache.max_age', $config['http_cache']['max_age']);
186-
$container->setParameter('api_platform.http_cache.shared_max_age', $config['http_cache']['shared_max_age']);
187-
$container->setParameter('api_platform.http_cache.vary', $config['http_cache']['vary']);
188-
$container->setParameter('api_platform.http_cache.public', $config['http_cache']['public']);
189-
$container->setParameter('api_platform.http_cache.invalidation.max_header_length', $config['http_cache']['invalidation']['max_header_length']);
172+
$container->setParameter('api_platform.collection.pagination.enabled', $this->isConfigEnabled($container, $config['defaults']['pagination_enabled'] ?? $config['collection']['pagination']));
173+
$container->setParameter('api_platform.collection.pagination.partial', $config['defaults']['pagination_partial'] ?? $config['collection']['pagination']['partial']);
174+
$container->setParameter('api_platform.collection.pagination.client_enabled', $config['defaults']['pagination_client_enabled'] ?? $config['collection']['pagination']['client_enabled']);
175+
$container->setParameter('api_platform.collection.pagination.client_items_per_page', $config['defaults']['pagination_client_items_per_page'] ?? $config['collection']['pagination']['client_items_per_page']);
176+
$container->setParameter('api_platform.collection.pagination.client_partial', $config['defaults']['pagination_client_partial'] ?? $config['collection']['pagination']['client_partial']);
177+
$container->setParameter('api_platform.collection.pagination.items_per_page', $config['defaults']['pagination_items_per_page'] ?? $config['collection']['pagination']['items_per_page']);
178+
$container->setParameter('api_platform.collection.pagination.maximum_items_per_page', $config['defaults']['pagination_maximum_items_per_page'] ?? $config['collection']['pagination']['maximum_items_per_page']);
179+
$container->setParameter('api_platform.collection.pagination.page_parameter_name', $config['defaults']['pagination_page_parameter_name'] ?? $config['collection']['pagination']['page_parameter_name']);
180+
$container->setParameter('api_platform.collection.pagination.enabled_parameter_name', $config['defaults']['pagination_enabled_parameter_name'] ?? $config['collection']['pagination']['enabled_parameter_name']);
181+
$container->setParameter('api_platform.collection.pagination.items_per_page_parameter_name', $config['defaults']['pagination_items_per_page_parameter_name'] ?? $config['collection']['pagination']['items_per_page_parameter_name']);
182+
$container->setParameter('api_platform.collection.pagination.partial_parameter_name', $config['defaults']['pagination_partial_parameter_name'] ?? $config['collection']['pagination']['partial_parameter_name']);
183+
$container->setParameter('api_platform.collection.pagination', $this->getPaginationDefaults($config['defaults'], $config['collection']['pagination']));
184+
$container->setParameter('api_platform.http_cache.etag', $config['defaults']['cache_headers']['etag'] ?? $config['http_cache']['etag']);
185+
$container->setParameter('api_platform.http_cache.max_age', $config['defaults']['cache_headers']['max_age'] ?? $config['http_cache']['max_age']);
186+
$container->setParameter('api_platform.http_cache.shared_max_age', $config['defaults']['cache_headers']['shared_max_age'] ?? $config['http_cache']['shared_max_age']);
187+
$container->setParameter('api_platform.http_cache.vary', $config['defaults']['cache_headers']['vary'] ?? $config['http_cache']['vary']);
188+
$container->setParameter('api_platform.http_cache.public', $config['defaults']['cache_headers']['public'] ?? $config['http_cache']['public']);
189+
$container->setParameter('api_platform.http_cache.invalidation.max_header_length', $config['defaults']['cache_headers']['invalidation']['max_header_length'] ?? $config['http_cache']['invalidation']['max_header_length']);
190190

191191
$container->setAlias('api_platform.operation_path_resolver.default', $config['default_operation_path_resolver']);
192192
$container->setAlias('api_platform.path_segment_name_generator', $config['path_segment_name_generator']);
@@ -197,6 +197,24 @@ private function registerCommonConfiguration(ContainerBuilder $container, array
197197
$container->setParameter('api_platform.defaults', $this->normalizeDefaults($config['defaults'] ?? []));
198198
}
199199

200+
/**
201+
* This method will be removed in 3.0 when "defaults" will be the regular configuration path for the pagination.
202+
*/
203+
private function getPaginationDefaults(array $defaults, array $collectionPaginationConfiguration): array
204+
{
205+
$paginationOptions = [];
206+
207+
foreach ($defaults as $key => $value) {
208+
if (0 !== strpos($key, 'pagination_')) {
209+
continue;
210+
}
211+
212+
$paginationOptions[str_replace('pagination_', '', $key)] = $value;
213+
}
214+
215+
return array_merge($collectionPaginationConfiguration, $paginationOptions);
216+
}
217+
200218
private function normalizeDefaults(array $defaults): array
201219
{
202220
$normalizedDefaults = ['attributes' => []];

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,6 @@ private function addHttpCacheSection(ArrayNodeDefinition $rootNode): void
366366
->end()
367367
->booleanNode('public')->defaultNull()->info('To make all responses public by default.')->end()
368368
->arrayNode('invalidation')
369-
->setDeprecated('The use of the `http_cache.invalidation` has been deprecated in 2.6 and will be removed in 3.0. Use `defaults.cache_headers.invalidation` instead.')
370369
->info('Enable the tags-based cache invalidation system.')
371370
->canBeEnabled()
372371
->children()

tests/Fixtures/app/config/config_common.yml

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -58,25 +58,24 @@ api_platform:
5858
nesting_separator: __
5959
name_converter: 'app.name_converter'
6060
enable_fos_user: true
61-
collection:
62-
order_parameter_name: 'order'
63-
order: 'ASC'
64-
pagination:
65-
client_enabled: true
66-
client_items_per_page: true
67-
client_partial: true
68-
items_per_page: 3
6961
exception_to_status:
7062
Symfony\Component\Serializer\Exception\ExceptionInterface: !php/const Symfony\Component\HttpFoundation\Response::HTTP_BAD_REQUEST
7163
ApiPlatform\Core\Exception\InvalidArgumentException: !php/const Symfony\Component\HttpFoundation\Response::HTTP_BAD_REQUEST
7264
ApiPlatform\Core\Exception\FilterValidationException: !php/const Symfony\Component\HttpFoundation\Response::HTTP_BAD_REQUEST
7365
http_cache:
7466
invalidation:
7567
enabled: true
76-
max_age: 60
77-
shared_max_age: 3600
78-
vary: ['Accept', 'Cookie']
79-
public: true
68+
defaults:
69+
pagination_client_enabled: true
70+
pagination_client_items_per_page: true
71+
pagination_client_partial: true
72+
pagination_items_per_page: 3
73+
order: 'ASC'
74+
cache_headers:
75+
max_age: 60
76+
shared_max_age: 3600
77+
vary: ['Accept', 'Cookie']
78+
public: true
8079

8180
parameters:
8281
container.autowiring.strict_mode: true
@@ -144,19 +143,19 @@ services:
144143
ApiPlatform\Core\Tests\Fixtures\TestBundle\Filter\RequiredAllowEmptyFilter:
145144
arguments: [ '@doctrine' ]
146145
tags: [ 'api_platform.filter' ]
147-
146+
148147
ApiPlatform\Core\Tests\Fixtures\TestBundle\Filter\BoundsFilter:
149148
arguments: [ '@doctrine' ]
150149
tags: [ 'api_platform.filter' ]
151-
150+
152151
ApiPlatform\Core\Tests\Fixtures\TestBundle\Filter\LengthFilter:
153152
arguments: [ '@doctrine' ]
154153
tags: [ 'api_platform.filter' ]
155154

156155
ApiPlatform\Core\Tests\Fixtures\TestBundle\Filter\PatternFilter:
157156
arguments: [ '@doctrine' ]
158157
tags: [ 'api_platform.filter' ]
159-
158+
160159
ApiPlatform\Core\Tests\Fixtures\TestBundle\Controller\:
161160
resource: '../../TestBundle/Controller'
162161
tags: ['controller.service_arguments']

tests/Metadata/Resource/Factory/AnnotationResourceMetadataFactoryTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public function testCreateWithDefaults()
6262
$annotation = new ApiResource([
6363
'itemOperations' => ['get', 'delete'],
6464
'attributes' => [
65+
'pagination_client_enabled' => true,
6566
'pagination_maximum_items_per_page' => 10,
6667
],
6768
]);
@@ -74,6 +75,7 @@ public function testCreateWithDefaults()
7475
$this->assertEquals('CHANGEME!', $metadata->getDescription());
7576
$this->assertEquals(['get'], $metadata->getCollectionOperations());
7677
$this->assertEquals(['get', 'delete'], $metadata->getItemOperations());
78+
$this->assertTrue($metadata->getAttribute('pagination_client_enabled'));
7779
$this->assertEquals(4, $metadata->getAttribute('pagination_items_per_page'));
7880
$this->assertEquals(10, $metadata->getAttribute('pagination_maximum_items_per_page'));
7981
}

0 commit comments

Comments
 (0)