diff --git a/DependencyInjection/FOSElasticaExtension.php b/DependencyInjection/FOSElasticaExtension.php
index 0cb5c27..f264d7c 100644
--- a/DependencyInjection/FOSElasticaExtension.php
+++ b/DependencyInjection/FOSElasticaExtension.php
@@ -70,10 +70,9 @@ class FOSElasticaExtension extends Extension
{
$clientIds = array();
foreach ($clients as $name => $clientConfig) {
- $clientDef = $container->getDefinition('fos_elastica.client');
- $clientDef->replaceArgument(0, $clientConfig);
-
$clientId = sprintf('fos_elastica.client.%s', $name);
+ $clientDef = new Definition('%fos_elastica.client.class%', array($clientConfig));
+ $clientDef->addMethodCall('setLogger', array(new Reference('fos_elastica.logger')));
$container->setDefinition($clientId, $clientDef);
@@ -144,14 +143,15 @@ class FOSElasticaExtension extends Extension
*/
protected function loadIndexFinder(ContainerBuilder $container, $name, $indexId)
{
- $abstractTransformerId = 'fos_elastica.elastica_to_model_transformer.collection.prototype';
+ /* Note: transformer services may conflict with "collection.index", if
+ * an index and type names were "collection" and an index, respectively.
+ */
$transformerId = sprintf('fos_elastica.elastica_to_model_transformer.collection.%s', $name);
- $transformerDef = new DefinitionDecorator($abstractTransformerId);
+ $transformerDef = new DefinitionDecorator('fos_elastica.elastica_to_model_transformer.collection');
$container->setDefinition($transformerId, $transformerDef);
- $abstractFinderId = 'fos_elastica.finder.prototype';
$finderId = sprintf('fos_elastica.finder.%s', $name);
- $finderDef = new DefinitionDecorator($abstractFinderId);
+ $finderDef = new DefinitionDecorator('fos_elastica.finder');
$finderDef->replaceArgument(0, new Reference($indexId));
$finderDef->replaceArgument(1, new Reference($transformerId));
@@ -262,6 +262,9 @@ class FOSElasticaExtension extends Extension
if (isset($typeConfig['elastica_to_model_transformer']['service'])) {
return $typeConfig['elastica_to_model_transformer']['service'];
}
+ /* Note: transformer services may conflict with "prototype.driver", if
+ * the index and type names were "prototype" and a driver, respectively.
+ */
$abstractId = sprintf('fos_elastica.elastica_to_model_transformer.prototype.%s', $typeConfig['driver']);
$serviceId = sprintf('fos_elastica.elastica_to_model_transformer.%s.%s', $indexName, $typeName);
$serviceDef = new DefinitionDecorator($abstractId);
@@ -285,9 +288,9 @@ class FOSElasticaExtension extends Extension
if (isset($typeConfig['model_to_elastica_transformer']['service'])) {
return $typeConfig['model_to_elastica_transformer']['service'];
}
- $abstractId = sprintf('fos_elastica.model_to_elastica_transformer.prototype.auto');
+
$serviceId = sprintf('fos_elastica.model_to_elastica_transformer.%s.%s', $indexName, $typeName);
- $serviceDef = new DefinitionDecorator($abstractId);
+ $serviceDef = new DefinitionDecorator('fos_elastica.model_to_elastica_transformer');
$serviceDef->replaceArgument(0, array(
'identifier' => $typeConfig['identifier']
));
@@ -298,9 +301,8 @@ class FOSElasticaExtension extends Extension
protected function loadObjectPersister(array $typeConfig, Definition $typeDef, ContainerBuilder $container, $indexName, $typeName, $transformerId)
{
- $abstractId = sprintf('fos_elastica.object_persister.prototype');
$serviceId = sprintf('fos_elastica.object_persister.%s.%s', $indexName, $typeName);
- $serviceDef = new DefinitionDecorator($abstractId);
+ $serviceDef = new DefinitionDecorator('fos_elastica.object_persister');
$serviceDef->replaceArgument(0, $typeDef);
$serviceDef->replaceArgument(1, new Reference($transformerId));
$serviceDef->replaceArgument(2, $typeConfig['model']);
@@ -315,7 +317,9 @@ class FOSElasticaExtension extends Extension
if (isset($typeConfig['provider']['service'])) {
return $typeConfig['provider']['service'];
}
-
+ /* Note: provider services may conflict with "prototype.driver", if the
+ * index and type names were "prototype" and a driver, respectively.
+ */
$providerId = sprintf('fos_elastica.provider.%s.%s', $indexName, $typeName);
$providerDef = new DefinitionDecorator('fos_elastica.provider.prototype.' . $typeConfig['driver']);
$providerDef->addTag('fos_elastica.provider', array('index' => $indexName, 'type' => $typeName));
@@ -333,6 +337,9 @@ class FOSElasticaExtension extends Extension
if (isset($typeConfig['listener']['service'])) {
return $typeConfig['listener']['service'];
}
+ /* Note: listener services may conflict with "prototype.driver", if the
+ * index and type names were "prototype" and a driver, respectively.
+ */
$abstractListenerId = sprintf('fos_elastica.listener.prototype.%s', $typeConfig['driver']);
$listenerId = sprintf('fos_elastica.listener.%s.%s', $indexName, $typeName);
$listenerDef = new DefinitionDecorator($abstractListenerId);
@@ -384,9 +391,8 @@ class FOSElasticaExtension extends Extension
if (isset($typeConfig['finder']['service'])) {
$finderId = $typeConfig['finder']['service'];
} else {
- $abstractFinderId = 'fos_elastica.finder.prototype';
$finderId = sprintf('fos_elastica.finder.%s.%s', $indexName, $typeName);
- $finderDef = new DefinitionDecorator($abstractFinderId);
+ $finderDef = new DefinitionDecorator('fos_elastica.finder');
$finderDef->replaceArgument(0, $typeDef);
$finderDef->replaceArgument(1, new Reference($elasticaToModelId));
$container->setDefinition($finderId, $finderDef);
diff --git a/Resources/config/config.xml b/Resources/config/config.xml
index a0819fb..dfb417d 100644
--- a/Resources/config/config.xml
+++ b/Resources/config/config.xml
@@ -27,13 +27,6 @@
-
-
-
-
-
-
-
@@ -43,26 +36,26 @@
-
+
-
+
-
+
-
+