Skip to content

Commit a531819

Browse files
committed
Bugfixes
1 parent 38304ae commit a531819

File tree

2 files changed

+35
-31
lines changed

2 files changed

+35
-31
lines changed

src/DependencyInjection/DoctrineAdapterExtension.php

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@
1010
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1111
use Symfony\Component\DependencyInjection\Definition;
1212
use Symfony\Component\DependencyInjection\Reference;
13+
use Cache\Doctrine\CachePoolItem;
1314

1415
/**
15-
* Class AequasiCacheExtension.
1616
*
1717
* @author Aaron Scherer <[email protected]>
18+
* @author Tobias Nyholm <[email protected]>
1819
*/
1920
class DoctrineAdapterExtension extends Extension
2021
{
@@ -69,8 +70,8 @@ protected function process(ContainerBuilder $container)
6970
$providers = $container->getParameter('cache_adapter_doctrine.providers');
7071

7172
foreach ($providers as $name => $provider) {
72-
$typeServiceId = sprintf('cache.doctrine_adapter.abstract.%s', $provider['type']);
7373
$classParameter = sprintf('cache.doctrine_adapter.%s.class',$provider['type']);
74+
$doctrineServiceId = sprintf('cache.doctrine_adapter.doctrine_service.%s', $provider['type']);
7475
if (!$container->hasParameter($classParameter)) {
7576
throw new InvalidConfigurationException(
7677
sprintf(
@@ -80,49 +81,30 @@ protected function process(ContainerBuilder $container)
8081
)
8182
);
8283
}
83-
$class = $container->getParameter($classParameter);
84+
$doctrineClass = $container->getParameter($classParameter);
8485

85-
$this->createDoctrineCacheDefinition($container, $typeServiceId, $class, $name, $provider);
86-
$this->createPsr7CompliantService($container, $typeServiceId, $name);
86+
$this->createDoctrineCacheDefinition($container, $doctrineServiceId, $doctrineClass, $name, $provider);
87+
$this->createPsr7CompliantService($container, $doctrineServiceId, $name);
8788
}
8889
}
8990

90-
/**
91-
* Make sure to create a PRS-6 service that wraps the doctrine service.
92-
*
93-
* @param ContainerBuilder $container
94-
* @param string $typeServiceId
95-
* @param string $name
96-
*/
97-
private function createPsr7CompliantService(ContainerBuilder $container, $typeServiceId, $name)
98-
{
99-
// This is the service id for the PSR6 provider. This is the one that we use.
100-
$serviceId = 'cache.doctrine_adapter.provider.'.$name;
101-
102-
// Register the CacheItemPoolInterface definition
103-
$def = new Definition(\Cache\Doctrine\CachePoolItem::class);
104-
$def->addArgument(new Reference($typeServiceId));
105-
$def->setTags(['cache.provider'=>[]]);
10691

107-
$container->setDefinition($serviceId, $def);
108-
$container->setAlias('cache.provider.'.$name, $serviceId);
109-
}
11092

11193
/**
11294
* We need to prepare the doctrine cache providers.
11395
*
11496
* @param ContainerBuilder $container
115-
* @param string $typeServiceId
116-
* @param string $class
97+
* @param string $doctrineServiceId
98+
* @param string $doctrineClass
11799
* @param string $name
118100
* @param array $provider
119101
*/
120-
private function createDoctrineCacheDefinition(ContainerBuilder $container, $typeServiceId, $class, $name, array $provider)
102+
protected function createDoctrineCacheDefinition(ContainerBuilder $container, $doctrineServiceId, $doctrineClass, $name, array $provider)
121103
{
122104
$namespace = is_null($provider['namespace']) ? $name : $provider['namespace'];
123105

124106
// Create a service for the requested doctrine cache
125-
$definition = new Definition($class);
107+
$definition = new Definition($doctrineClass);
126108
$definition->addMethodCall('setNamespace', [$namespace])
127109
->setPublic(false);
128110

@@ -157,11 +139,33 @@ private function createDoctrineCacheDefinition(ContainerBuilder $container, $typ
157139
case 'sqlite':
158140
case 'riak':
159141
case 'chain':
142+
throw new \InvalidArgumentException(sprintf('The cache provider type "%s" is not yet implemented.', $type));
160143
break;
161144
}
162145

163146
// Add the definition to the container
164-
$container->setDefinition($typeServiceId, $definition);
147+
$container->setDefinition($doctrineServiceId, $definition);
148+
}
149+
150+
/**
151+
* Make sure to create a PRS-6 service that wraps the doctrine service.
152+
*
153+
* @param ContainerBuilder $container
154+
* @param string $doctrineServiceId
155+
* @param string $name
156+
*/
157+
protected function createPsr7CompliantService(ContainerBuilder $container, $doctrineServiceId, $name)
158+
{
159+
// This is the service id for the PSR6 provider. This is the one that we use.
160+
$serviceId = 'cache.doctrine_adapter.provider.'.$name;
161+
162+
// Register the CacheItemPoolInterface definition
163+
$def = new Definition(CachePoolItem::class);
164+
$def->addArgument(new Reference($doctrineServiceId));
165+
$def->setTags(['cache.provider'=>[]]);
166+
167+
$container->setDefinition($serviceId, $def);
168+
$container->setAlias('cache.provider.'.$name, $serviceId);
165169
}
166170

167171
/**
@@ -172,7 +176,7 @@ private function createDoctrineCacheDefinition(ContainerBuilder $container, $typ
172176
*
173177
* @return Definition
174178
*/
175-
public function createProviderHelperDefinition($type, array $provider)
179+
private function createProviderHelperDefinition($type, array $provider)
176180
{
177181
$helperDefinition = new Definition(self::$types[$type]['class']);
178182
$helperDefinition->setPublic(false);

tests/DependencyInjection/DoctrineCacheExtensionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Cache\Adapter\DoctrineAdapterBundle\tests\DependencyInjection;
3+
namespace Cache\Adapter\DoctrineAdapterBundle\Tests\DependencyInjection;
44

55
use Cache\Adapter\DoctrineAdapterBundle\DependencyInjection\DoctrineAdapterExtension;
66
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;

0 commit comments

Comments
 (0)