diff --git a/src/bundle/IbexaSolrBundle.php b/src/bundle/IbexaSolrBundle.php index 205b03ae..64252c4b 100644 --- a/src/bundle/IbexaSolrBundle.php +++ b/src/bundle/IbexaSolrBundle.php @@ -8,8 +8,6 @@ namespace Ibexa\Bundle\Solr; use Ibexa\Bundle\Solr\DependencyInjection\IbexaSolrExtension; -use Ibexa\Solr\Container\Compiler\AggregateCriterionVisitorPass; -use Ibexa\Solr\Container\Compiler\AggregateSortClauseVisitorPass; use Ibexa\Solr\Container\Compiler\CoreFilterRegistryPass; use Ibexa\Solr\Container\Compiler\EndpointRegistryPass; use Ibexa\Solr\Container\Compiler\FieldMapperPass; @@ -29,8 +27,6 @@ public function build(ContainerBuilder $container): void $container->addCompilerPass(new FieldMapperPass\ContentFieldMapperPass()); $container->addCompilerPass(new FieldMapperPass\ContentTranslationFieldMapperPass()); $container->addCompilerPass(new FieldMapperPass\LocationFieldMapperPass()); - $container->addCompilerPass(new AggregateCriterionVisitorPass()); - $container->addCompilerPass(new AggregateSortClauseVisitorPass()); $container->addCompilerPass(new EndpointRegistryPass()); $container->addCompilerPass(new GatewayRegistryPass()); $container->addCompilerPass(new CoreFilterRegistryPass()); diff --git a/src/lib/Container/Compiler/AggregateCriterionVisitorPass.php b/src/lib/Container/Compiler/AggregateCriterionVisitorPass.php deleted file mode 100644 index 6732dc3e..00000000 --- a/src/lib/Container/Compiler/AggregateCriterionVisitorPass.php +++ /dev/null @@ -1,63 +0,0 @@ -hasDefinition('ibexa.solr.query.content.criterion_visitor.aggregate') && - !$container->hasDefinition('ibexa.solr.query.location.criterion_visitor.aggregate') - ) { - return; - } - - if ($container->hasDefinition('ibexa.solr.query.content.criterion_visitor.aggregate')) { - $aggregateContentCriterionVisitorDefinition = $container->getDefinition( - 'ibexa.solr.query.content.criterion_visitor.aggregate' - ); - - $visitors = $container->findTaggedServiceIds( - 'ibexa.search.solr.query.content.criterion.visitor' - ); - - $this->addHandlers($aggregateContentCriterionVisitorDefinition, $visitors); - } - - if ($container->hasDefinition('ibexa.solr.query.location.criterion_visitor.aggregate')) { - $aggregateLocationCriterionVisitorDefinition = $container->getDefinition( - 'ibexa.solr.query.location.criterion_visitor.aggregate' - ); - - $visitors = $container->findTaggedServiceIds( - 'ibexa.search.solr.query.location.criterion.visitor' - ); - - $this->addHandlers($aggregateLocationCriterionVisitorDefinition, $visitors); - } - } - - /** - * @param array> $handlers - */ - protected function addHandlers(Definition $definition, array $handlers): void - { - foreach ($handlers as $id => $attributes) { - $definition->addMethodCall('addVisitor', [new Reference($id)]); - } - } -} diff --git a/src/lib/Container/Compiler/AggregateSortClauseVisitorPass.php b/src/lib/Container/Compiler/AggregateSortClauseVisitorPass.php deleted file mode 100644 index c0325028..00000000 --- a/src/lib/Container/Compiler/AggregateSortClauseVisitorPass.php +++ /dev/null @@ -1,66 +0,0 @@ -hasDefinition('ibexa.solr.query.content.sort_clause_visitor.aggregate') && - !$container->hasDefinition('ibexa.solr.query.location.sort_clause_visitor.aggregate') - ) { - return; - } - - if ($container->hasDefinition('ibexa.solr.query.content.sort_clause_visitor.aggregate')) { - $aggregateContentSortClauseVisitorDefinition = $container->getDefinition( - 'ibexa.solr.query.content.sort_clause_visitor.aggregate' - ); - - $visitors = $container->findTaggedServiceIds( - 'ibexa.search.solr.query.content.sort_clause.visitor' - ); - - $this->addHandlers($aggregateContentSortClauseVisitorDefinition, $visitors); - } - - if ($container->hasDefinition('ibexa.solr.query.location.sort_clause_visitor.aggregate')) { - $aggregateLocationSortClauseVisitorDefinition = $container->getDefinition( - 'ibexa.solr.query.location.sort_clause_visitor.aggregate' - ); - - $visitors = $container->findTaggedServiceIds( - 'ibexa.search.solr.query.location.sort_clause.visitor' - ); - - $this->addHandlers($aggregateLocationSortClauseVisitorDefinition, $visitors); - } - } - - /** - * @param array> $handlers - */ - protected function addHandlers(Definition $definition, array $handlers): void - { - foreach ($handlers as $id => $attributes) { - $definition->addMethodCall('addVisitor', [new Reference($id)]); - } - } -} diff --git a/src/lib/Query/Common/CriterionVisitor/Aggregate.php b/src/lib/Query/Common/CriterionVisitor/Aggregate.php index 3b60e281..75fc5d47 100644 --- a/src/lib/Query/Common/CriterionVisitor/Aggregate.php +++ b/src/lib/Query/Common/CriterionVisitor/Aggregate.php @@ -8,7 +8,6 @@ namespace Ibexa\Solr\Query\Common\CriterionVisitor; use Ibexa\Contracts\Core\Repository\Exceptions\NotImplementedException; -use Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion; use Ibexa\Contracts\Core\Repository\Values\Content\Query\CriterionInterface; use Ibexa\Contracts\Solr\Query\CriterionVisitor; @@ -20,28 +19,18 @@ class Aggregate extends CriterionVisitor /** * Array of available visitors. * - * @var \Ibexa\Contracts\Solr\Query\CriterionVisitor[] + * @var iterable<\Ibexa\Contracts\Solr\Query\CriterionVisitor> */ - protected array $visitors = []; + protected iterable $visitors; /** * Construct from optional visitor array. * - * @param \Ibexa\Contracts\Solr\Query\CriterionVisitor[] $visitors + * @param iterable<\Ibexa\Contracts\Solr\Query\CriterionVisitor> $visitors */ - public function __construct(array $visitors = []) + public function __construct(iterable $visitors) { - foreach ($visitors as $visitor) { - $this->addVisitor($visitor); - } - } - - /** - * Adds visitor. - */ - public function addVisitor(CriterionVisitor $visitor): void - { - $this->visitors[] = $visitor; + $this->visitors = $visitors; } /** diff --git a/src/lib/Query/Common/FacetBuilderVisitor/Aggregate.php b/src/lib/Query/Common/FacetBuilderVisitor/Aggregate.php deleted file mode 100644 index e69de29b..00000000 diff --git a/src/lib/Query/Common/SortClauseVisitor/Aggregate.php b/src/lib/Query/Common/SortClauseVisitor/Aggregate.php index e3c6b029..c7ddc0ac 100644 --- a/src/lib/Query/Common/SortClauseVisitor/Aggregate.php +++ b/src/lib/Query/Common/SortClauseVisitor/Aggregate.php @@ -19,25 +19,16 @@ class Aggregate extends SortClauseVisitor /** * Array of available visitors. * - * @var \Ibexa\Contracts\Solr\Query\SortClauseVisitor[] + * @var iterable<\Ibexa\Contracts\Solr\Query\SortClauseVisitor> */ - protected array $visitors = []; + protected iterable $visitors; /** - * Construct from optional visitor array. - * - * @param \Ibexa\Contracts\Solr\Query\SortClauseVisitor[] $visitors + * @param iterable<\Ibexa\Contracts\Solr\Query\SortClauseVisitor> $visitors */ - public function __construct(array $visitors = []) - { - foreach ($visitors as $visitor) { - $this->addVisitor($visitor); - } - } - - public function addVisitor(SortClauseVisitor $visitor): void + public function __construct(iterable $visitors) { - $this->visitors[] = $visitor; + $this->visitors = $visitors; } /** diff --git a/src/lib/Resources/config/container/solr/services.yml b/src/lib/Resources/config/container/solr/services.yml index f83703c6..3b35cebe 100644 --- a/src/lib/Resources/config/container/solr/services.yml +++ b/src/lib/Resources/config/container/solr/services.yml @@ -32,25 +32,25 @@ services: arguments: $visitors: !tagged_iterator ibexa.search.solr.query.content.embedding.visitor - # Note: services tagged with 'ibexa.search.solr.query.content.criterion.visitor' - # are registered to this one using compilation pass ibexa.solr.query.content.criterion_visitor.aggregate: class: Ibexa\Solr\Query\Common\CriterionVisitor\Aggregate + arguments: + $visitors: !tagged_iterator ibexa.search.solr.query.content.criterion.visitor - # Note: services tagged with 'ibexa.search.solr.query.content.sort_clause.visitor' - # are registered to this one using compilation pass ibexa.solr.query.content.sort_clause_visitor.aggregate: class: Ibexa\Solr\Query\Common\SortClauseVisitor\Aggregate + arguments: + $visitors: !tagged_iterator ibexa.search.solr.query.content.sort_clause.visitor - # Note: services tagged with 'ibexa.search.solr.query.location.criterion.visitor' - # are registered to this one using compilation pass ibexa.solr.query.location.criterion_visitor.aggregate: class: Ibexa\Solr\Query\Common\CriterionVisitor\Aggregate + arguments: + $visitors: !tagged_iterator ibexa.search.solr.query.location.criterion.visitor - # Note: services tagged with 'ibexa.search.solr.query.location.sort_clause.visitor' - # are registered to this one using compilation pass ibexa.solr.query.location.sort_clause_visitor.aggregate: class: Ibexa\Solr\Query\Common\SortClauseVisitor\Aggregate + arguments: + $visitors: !tagged_iterator ibexa.search.solr.query.location.sort_clause.visitor # Note: services tagged with 'ibexa.search.solr.field.mapper.block' # are registered to this one using compilation pass @@ -81,7 +81,7 @@ services: - '%ibexa.search.solr.field_mapper.boost_factor_provider.map%' Ibexa\Solr\FieldMapper\IndexingDepthProvider: - class: \Ibexa\Solr\FieldMapper\IndexingDepthProvider + class: Ibexa\Solr\FieldMapper\IndexingDepthProvider arguments: - '%ibexa.search.solr.field_mapper.indexing_depth_provider.map%' - '%ibexa.search.solr.field_mapper.indexing_depth_provider.default%' diff --git a/tests/lib/Container/Compiler/AggregateCriterionVisitorPassTest.php b/tests/lib/Container/Compiler/AggregateCriterionVisitorPassTest.php deleted file mode 100644 index ebf94b70..00000000 --- a/tests/lib/Container/Compiler/AggregateCriterionVisitorPassTest.php +++ /dev/null @@ -1,54 +0,0 @@ -setDefinition( - 'ibexa.solr.query.content.criterion_visitor.aggregate', - new Definition() - ); - } - - /** - * Register the compiler pass under test, just like you would do inside a bundle's load() - * method:. - * - * $container->addCompilerPass(new MyCompilerPass()); - */ - protected function registerCompilerPass(ContainerBuilder $container): void - { - $container->addCompilerPass(new AggregateCriterionVisitorPass()); - } - - public function testAddVisitor(): void - { - $serviceId = 'service_id'; - $def = new Definition(); - $def->addTag('ibexa.search.solr.query.content.criterion.visitor'); - $this->setDefinition($serviceId, $def); - - $this->compile(); - - $this->assertContainerBuilderHasServiceDefinitionWithMethodCall( - 'ibexa.solr.query.content.criterion_visitor.aggregate', - 'addVisitor', - [new Reference($serviceId)] - ); - } -} diff --git a/tests/lib/Container/Compiler/AggregateSortClauseVisitorPassTest.php b/tests/lib/Container/Compiler/AggregateSortClauseVisitorPassTest.php deleted file mode 100644 index 311d0992..00000000 --- a/tests/lib/Container/Compiler/AggregateSortClauseVisitorPassTest.php +++ /dev/null @@ -1,54 +0,0 @@ -setDefinition( - 'ibexa.solr.query.content.sort_clause_visitor.aggregate', - new Definition() - ); - } - - /** - * Register the compiler pass under test, just like you would do inside a bundle's load() - * method:. - * - * $container->addCompilerPass(new MyCompilerPass()); - */ - protected function registerCompilerPass(ContainerBuilder $container): void - { - $container->addCompilerPass(new AggregateSortClauseVisitorPass()); - } - - public function testAddVisitor(): void - { - $serviceId = 'service_id'; - $def = new Definition(); - $def->addTag('ibexa.search.solr.query.content.sort_clause.visitor'); - $this->setDefinition($serviceId, $def); - - $this->compile(); - - $this->assertContainerBuilderHasServiceDefinitionWithMethodCall( - 'ibexa.solr.query.content.sort_clause_visitor.aggregate', - 'addVisitor', - [new Reference($serviceId)] - ); - } -} diff --git a/tests/lib/SetupFactory/LegacySetupFactory.php b/tests/lib/SetupFactory/LegacySetupFactory.php index aff3220a..eccc4d36 100644 --- a/tests/lib/SetupFactory/LegacySetupFactory.php +++ b/tests/lib/SetupFactory/LegacySetupFactory.php @@ -78,8 +78,6 @@ protected function loadSolrSettings(ContainerBuilder $containerBuilder): void $containerBuilder->addCompilerPass(new Compiler\FieldMapperPass\ContentFieldMapperPass()); $containerBuilder->addCompilerPass(new Compiler\FieldMapperPass\ContentTranslationFieldMapperPass()); $containerBuilder->addCompilerPass(new Compiler\FieldMapperPass\LocationFieldMapperPass()); - $containerBuilder->addCompilerPass(new Compiler\AggregateCriterionVisitorPass()); - $containerBuilder->addCompilerPass(new Compiler\AggregateSortClauseVisitorPass()); $containerBuilder->addCompilerPass(new Compiler\EndpointRegistryPass()); $containerBuilder->addCompilerPass(new AggregateFieldValueMapperPass()); $containerBuilder->addCompilerPass(new FieldRegistryPass());