From 714502fa1f51bf7e9b372c799d811483b5db3b1c Mon Sep 17 00:00:00 2001 From: esodin Date: Thu, 17 Jul 2014 16:01:10 +0300 Subject: [PATCH 1/4] Issue: Parent is missing in the fields list that causes RoutingMissingException on flushing --- DependencyInjection/FOSElasticaExtension.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/DependencyInjection/FOSElasticaExtension.php b/DependencyInjection/FOSElasticaExtension.php index 292a9a5..89ac3dd 100644 --- a/DependencyInjection/FOSElasticaExtension.php +++ b/DependencyInjection/FOSElasticaExtension.php @@ -391,7 +391,13 @@ class FOSElasticaExtension extends Extension $arguments[] = array(new Reference($callbackId), 'serialize'); } else { $abstractId = 'fos_elastica.object_persister'; - $arguments[] = $this->indexConfigs[$indexName]['types'][$typeName]['mapping']['properties']; + $mapping = $this->indexConfigs[$indexName]['types'][$typeName]['mapping']; + $argument = $mapping['properties']; + if(isset($mapping['_parent'])){ + $argument['_parent'] = $mapping['_parent']; + } + $arguments[] = $argument; + } $serviceId = sprintf('fos_elastica.object_persister.%s.%s', $indexName, $typeName); From 1ef55b1239a5b7c161da512d3a611d4cab9d30f9 Mon Sep 17 00:00:00 2001 From: esodin Date: Thu, 24 Jul 2014 17:03:26 +0300 Subject: [PATCH 2/4] Issue: Parent is missing in the fields list that causes RoutingMissingException on flushing - test --- .../FOSElasticaExtensionTest.php | 36 +++++++++++++++++++ .../DependencyInjection/config/config.yml | 21 +++++++++++ 2 files changed, 57 insertions(+) create mode 100644 Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php create mode 100644 Tests/Functional/DependencyInjection/config/config.yml diff --git a/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php b/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php new file mode 100644 index 0000000..f210136 --- /dev/null +++ b/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php @@ -0,0 +1,36 @@ +setParameter('kernel.debug', true); + + $extension = new FOSElasticaExtension; + + $extension->load($config, $containerBuilder); + + $this->assertTrue($containerBuilder->hasDefinition('fos_elastica.object_persister.test_index.child_field')); + + $persisterCallDefinition = $containerBuilder->getDefinition('fos_elastica.object_persister.test_index.child_field'); + + $this->assertArrayHasKey('_parent', $persisterCallDefinition->getArguments()['index_3']); + } + +} \ No newline at end of file diff --git a/Tests/Functional/DependencyInjection/config/config.yml b/Tests/Functional/DependencyInjection/config/config.yml new file mode 100644 index 0000000..5528d18 --- /dev/null +++ b/Tests/Functional/DependencyInjection/config/config.yml @@ -0,0 +1,21 @@ +fos_elastica: + clients: + default: + url: http://localhost:9200 + indexes: + test_index: + client: default + types: + parent_field: + mappings: + text: ~ + persistence: + driver: orm + model: foo_model + child_field: + mappings: + text: ~ + persistence: + driver: orm + model: foo_model + _parent: { type: "parent_field", property: "parent" } From 001b38cf59839d7acf230d76e765e77235af0842 Mon Sep 17 00:00:00 2001 From: esodin Date: Thu, 24 Jul 2014 17:07:22 +0300 Subject: [PATCH 3/4] Issue: Parent is missing in the fields list that causes RoutingMissingException on flushing - test --- .../DependencyInjection/FOSElasticaExtensionTest.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php b/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php index f210136..a02c35e 100644 --- a/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php +++ b/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php @@ -30,7 +30,10 @@ class FOSElasticaExtensionTest extends \PHPUnit_Framework_TestCase $persisterCallDefinition = $containerBuilder->getDefinition('fos_elastica.object_persister.test_index.child_field'); - $this->assertArrayHasKey('_parent', $persisterCallDefinition->getArguments()['index_3']); + $arguments = $persisterCallDefinition->getArguments()['index_3']; + + $this->assertArrayHasKey('_parent', $arguments); + $this->assertEquals('parent_field', $arguments['_parent']['type']); } } \ No newline at end of file From 659468ae3a47605d236bd726695a2bd65782cdfd Mon Sep 17 00:00:00 2001 From: esodin Date: Thu, 24 Jul 2014 17:36:45 +0300 Subject: [PATCH 4/4] Issue: Parent is missing in the fields list that causes RoutingMissingException on flushing - test --- .../DependencyInjection/FOSElasticaExtensionTest.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php b/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php index a02c35e..06676ef 100644 --- a/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php +++ b/Tests/Functional/DependencyInjection/FOSElasticaExtensionTest.php @@ -30,7 +30,8 @@ class FOSElasticaExtensionTest extends \PHPUnit_Framework_TestCase $persisterCallDefinition = $containerBuilder->getDefinition('fos_elastica.object_persister.test_index.child_field'); - $arguments = $persisterCallDefinition->getArguments()['index_3']; + $arguments = $persisterCallDefinition->getArguments(); + $arguments = $arguments['index_3']; $this->assertArrayHasKey('_parent', $arguments); $this->assertEquals('parent_field', $arguments['_parent']['type']);