Skip to content

Commit

Permalink
use setFactory service definition method for symfony >= 2.6
Browse files Browse the repository at this point in the history
setFactoryClass, setFactoryMethod is deprecated since 2.6
  • Loading branch information
adam187 committed Jun 3, 2015
1 parent e9a2fa1 commit f332505
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 9 deletions.
10 changes: 7 additions & 3 deletions DependencyInjection/Factory/Resolver/AwsS3ResolverFactory.php
Expand Up @@ -15,11 +15,15 @@ class AwsS3ResolverFactory implements ResolverFactoryInterface
*/
public function create(ContainerBuilder $container, $resolverName, array $config)
{
$awsS3ClientId = 'liip_imagine.cache.resolver.'.$resolverName.'.client';
$awsS3ClientDefinition = new Definition('Aws\S3\S3Client');
$awsS3ClientDefinition->setFactoryClass('Aws\S3\S3Client');
$awsS3ClientDefinition->setFactoryMethod('factory');
if (method_exists($awsS3ClientDefinition, 'setFactory')) {
$awsS3ClientDefinition->setFactory(array('Aws\S3\S3Client', 'factory'));
} else {
$awsS3ClientDefinition->setFactoryService('Aws\S3\S3Client');
$awsS3ClientDefinition->setFactoryMethod('factory');
}
$awsS3ClientDefinition->addArgument($config['client_config']);
$awsS3ClientId = 'liip_imagine.cache.resolver.'.$resolverName.'.client';
$container->setDefinition($awsS3ClientId, $awsS3ClientDefinition);

$resolverDefinition = new DefinitionDecorator('liip_imagine.cache.resolver.prototype.aws_s3');
Expand Down
23 changes: 23 additions & 0 deletions DependencyInjection/LiipImagineExtension.php
Expand Up @@ -63,6 +63,8 @@ public function load(array $configs, ContainerBuilder $container)
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('imagine.xml');

$this->setFactories($container);

if (interface_exists('Imagine\Image\Metadata\MetadataReaderInterface')) {
$container->getDefinition('liip_imagine.'.$config['driver'])->addMethodCall('setMetadataReader', array(new Reference('liip_imagine.meta_data.reader')));
} else {
Expand Down Expand Up @@ -113,4 +115,25 @@ protected function loadLoaders(array $config, ContainerBuilder $container)
$factory->create($container, $loaderName, $loaderConfig[$factoryName]);
}
}

/**
* @param ContainerBuilder $container
*/
private function setFactories($container)
{
$factories = array(
'liip_imagine.mime_type_guesser' => array('Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser', 'getInstance'),
'liip_imagine.extension_guesser' => array('Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser', 'getInstance'),
);

foreach ($factories as $service => $factory) {
$definition = $container->getDefinition($service);
if (method_exists($definition, 'setFactory')) {
$definition->setFactory($factory);
} else {
$definition->setFactoryClass($factory[0]);
$definition->setFactoryMethod($factory[1]);
}
}
}
}
4 changes: 0 additions & 4 deletions Resources/config/imagine.xml
Expand Up @@ -244,15 +244,11 @@
<service
id="liip_imagine.mime_type_guesser"
class="Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface"
factory-class="Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser"
factory-method="getInstance"
/>

<service
id="liip_imagine.extension_guesser"
class="Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesserInterface"
factory-class="Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser"
factory-method="getInstance"
/>

<service id="liip_imagine.binary.mime_type_guesser" class="%liip_imagine.binary.mime_type_guesser.class%">
Expand Down
Expand Up @@ -107,8 +107,12 @@ public function testCreateS3ClientDefinitionOnCreate()

$clientDefinition = $container->getDefinition('liip_imagine.cache.resolver.theresolvername.client');
$this->assertEquals('Aws\S3\S3Client', $clientDefinition->getClass());
$this->assertEquals('Aws\S3\S3Client', $clientDefinition->getFactoryClass());
$this->assertEquals('factory', $clientDefinition->getFactoryMethod());
if (method_exists($clientDefinition, 'getFactory')) {
$this->assertEquals(array('Aws\S3\S3Client', 'factory'), $clientDefinition->getFactory());
} else {
$this->assertEquals('Aws\S3\S3Client', $clientDefinition->getFactoryClass());
$this->assertEquals('factory', $clientDefinition->getFactoryMethod());
}
$this->assertEquals(array('theClientConfigKey' => 'theClientConfigVal'), $clientDefinition->getArgument(0));
}

Expand Down
20 changes: 20 additions & 0 deletions Tests/DependencyInjection/LiipImagineExtensionTest.php
Expand Up @@ -62,6 +62,26 @@ public function testCustomRouteRequirements()
$this->assertEquals('value1', $variable1, sprintf('%s parameter is correct', $variable1));
}

public function testFactoriesConfiguration()
{
$this->createEmptyConfiguration();

$factories = array(
'liip_imagine.mime_type_guesser' => array('Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser', 'getInstance'),
'liip_imagine.extension_guesser' => array('Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser', 'getInstance'),
);

foreach ($factories as $service => $factory) {
$definition = $this->containerBuilder->getDefinition($service);
if (method_exists($definition, 'getFactory')) {
$this->assertEquals($factory, $definition->getFactory());
} else {
$this->assertEquals($factory[0], $definition->getFactoryClass());
$this->assertEquals($factory[1], $definition->getFactoryMethod());
}
}
}

/**
* @return ContainerBuilder
*/
Expand Down

0 comments on commit f332505

Please sign in to comment.