Skip to content

Commit 624d9f4

Browse files
committed
Always load request_matcher and rule_matcher services
These services where previously defined in cache_control_listener.xml. That file, however, was not loaded e.g. when only invalidation (and no cache control) rules were defined. This PR always load the request_matcher and rule_matcher, as they can be used for cache_control, invalidation and tags.
1 parent b7d5319 commit 624d9f4

File tree

4 files changed

+42
-18
lines changed

4 files changed

+42
-18
lines changed

DependencyInjection/FOSHttpCacheExtension.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public function load(array $configs, ContainerBuilder $container)
4343
$config = $this->processConfiguration($configuration, $configs);
4444

4545
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
46+
$loader->load('matcher.xml');
4647

4748
if ($config['debug']['enabled'] || (!empty($config['cache_control']))) {
4849
$debugHeader = $config['debug']['enabled'] ? $config['debug']['header'] : false;

Resources/config/cache_control_listener.xml

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
<parameters>
88
<parameter key="fos_http_cache.event_listener.cache_control.class">FOS\HttpCacheBundle\EventListener\CacheControlSubscriber</parameter>
9-
<parameter key="fos_http_cache.request_matcher.class">Symfony\Component\HttpFoundation\RequestMatcher</parameter>
10-
<parameter key="fos_http_cache.rule_matcher.class">FOS\HttpCacheBundle\Http\RuleMatcher</parameter>
119
</parameters>
1210

1311
<services>
@@ -16,18 +14,5 @@
1614
<argument>%fos_http_cache.debug_header%</argument>
1715
<tag name="kernel.event_subscriber" />
1816
</service>
19-
20-
<service id="fos_http_cache.request_matcher"
21-
class="%fos_http_cache.request_matcher.class%"
22-
public="false"
23-
/>
24-
25-
<service id="fos_http_cache.rule_matcher"
26-
class="%fos_http_cache.rule_matcher.class%"
27-
public="false"
28-
>
29-
<argument/>
30-
<argument/>
31-
</service>
3217
</services>
3318
</container>

Resources/config/matcher.xml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" ?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<parameters>
8+
<parameter key="fos_http_cache.request_matcher.class">Symfony\Component\HttpFoundation\RequestMatcher</parameter>
9+
<parameter key="fos_http_cache.rule_matcher.class">FOS\HttpCacheBundle\Http\RuleMatcher</parameter>
10+
</parameters>
11+
12+
<services>
13+
<service id="fos_http_cache.request_matcher"
14+
class="%fos_http_cache.request_matcher.class%"
15+
public="false"
16+
/>
17+
18+
<service id="fos_http_cache.rule_matcher"
19+
class="%fos_http_cache.rule_matcher.class%"
20+
public="false"
21+
>
22+
<argument/>
23+
<argument/>
24+
</service>
25+
</services>
26+
</container>

Tests/Unit/DependencyInjection/FOSHttpCacheExtensionTest.php

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

1414
use FOS\HttpCacheBundle\DependencyInjection\FOSHttpCacheExtension;
1515
use Symfony\Component\DependencyInjection\ContainerBuilder;
16+
use Symfony\Component\DependencyInjection\Definition;
1617
use Symfony\Component\DependencyInjection\DefinitionDecorator;
1718
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
1819

@@ -149,6 +150,9 @@ public function testConfigLoadInvalidatorRules()
149150

150151
$this->assertMatcherCreated($container, array('_route' => 'my_route'));
151152
$this->assertListenerHasRule($container, 'fos_http_cache.event_listener.invalidation');
153+
154+
// Test for runtime errors
155+
$container->compile();
152156
}
153157

154158
public function testConfigLoadCacheControl()
@@ -282,9 +286,17 @@ public function testConfigLoadFlashMessageSubscriber()
282286

283287
protected function createContainer()
284288
{
285-
return new ContainerBuilder(new ParameterBag(array(
286-
'kernel.debug' => false,
287-
)));
289+
$container = new ContainerBuilder(
290+
new ParameterBag(array('kernel.debug' => false,))
291+
);
292+
293+
// The cache_manager service depends on the router service
294+
$container->setDefinition(
295+
'router',
296+
new Definition('\Symfony\Component\Routing\Router')
297+
);
298+
299+
return $container;
288300
}
289301

290302
protected function getBaseConfig()

0 commit comments

Comments
 (0)