Skip to content

Commit

Permalink
Fixed validation logic error in repository engines factories
Browse files Browse the repository at this point in the history
  • Loading branch information
alongosz committed Jan 14, 2022
1 parent 94f3864 commit db869b3
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 38 deletions.
31 changes: 17 additions & 14 deletions src/bundle/Core/ApiLoader/SearchEngineFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,30 +55,33 @@ public function getSearchEngines()

/**
* Builds search engine identified by its identifier (the "alias" attribute in the service tag),
* resolved for current siteaccess.
*
* @return \Ibexa\Contracts\Core\Search\Handler
* resolved for current SiteAccess.
*
* @throws \Ibexa\Bundle\Core\ApiLoader\Exception\InvalidSearchEngine
*/
public function buildSearchEngine()
public function buildSearchEngine(): SearchHandler
{
$repositoryConfig = $this->repositoryConfigurationProvider->getRepositoryConfig();

if (
!(
isset($repositoryConfig['search']['engine'])
&& isset($this->searchEngines[$repositoryConfig['search']['engine']])
)
) {
$searchEngineAlias = $repositoryConfig['search']['engine'] ?? null;
if (null === $searchEngineAlias) {
throw new InvalidSearchEngine(
sprintf(
'Ibexa "%s" Repository has no Search Engine configured',
$this->repositoryConfigurationProvider->getCurrentRepositoryAlias()
)
);
}

if (!isset($this->searchEngines[$searchEngineAlias])) {
throw new InvalidSearchEngine(
"Invalid search engine '{$repositoryConfig['search']['engine']}'. " .
"Could not find any service tagged with 'ezplatform.search_engine' " .
"with alias '{$repositoryConfig['search']['engine']}'."
"Invalid search engine '{$searchEngineAlias}'. " .
"Could not find any service tagged with 'ibexa.search.engine' " .
"with alias '{$searchEngineAlias}'."
);
}

return $this->searchEngines[$repositoryConfig['search']['engine']];
return $this->searchEngines[$searchEngineAlias];
}
}

Expand Down
30 changes: 18 additions & 12 deletions src/bundle/Core/ApiLoader/SearchEngineIndexerFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
*/
namespace Ibexa\Bundle\Core\ApiLoader;

use Ibexa\Bundle\Core\ApiLoader\Exception\InvalidSearchEngine;
use Ibexa\Bundle\Core\ApiLoader\Exception\InvalidSearchEngineIndexer;
use Ibexa\Core\Search\Common\Indexer as SearchEngineIndexer;

Expand Down Expand Up @@ -55,30 +56,35 @@ public function getSearchEngineIndexers()

/**
* Build search engine indexer identified by its identifier (the "alias" attribute in the service tag),
* resolved for current siteaccess.
* resolved for current SiteAccess.
*
* @throws \Ibexa\Bundle\Core\ApiLoader\Exception\InvalidSearchEngineIndexer
*
* @return \Ibexa\Core\Search\Common\Indexer
*/
public function buildSearchEngineIndexer()
public function buildSearchEngineIndexer(): SearchEngineIndexer
{
$repositoryConfig = $this->repositoryConfigurationProvider->getRepositoryConfig();

if (
!(
isset($repositoryConfig['search']['engine'])
&& isset($this->searchEngineIndexers[$repositoryConfig['search']['engine']])
)
) {
$searchEngineAlias = $repositoryConfig['search']['engine'] ?? null;
if (null === $searchEngineAlias) {
throw new InvalidSearchEngine(
sprintf(
'Ibexa "%s" Repository has no Search Engine configured',
$this->repositoryConfigurationProvider->getCurrentRepositoryAlias()
)
);
}

if (!isset($this->searchEngineIndexers[$searchEngineAlias])) {
throw new InvalidSearchEngineIndexer(
"Invalid search engine '{$repositoryConfig['search']['engine']}'. " .
"Could not find any service tagged with 'ezplatform.search_engine.indexer' " .
"with alias '{$repositoryConfig['search']['engine']}'."
"Invalid search engine '{$searchEngineAlias}'. " .
"Could not find any service tagged with 'ibexa.search.engine.indexer' " .
"with alias '{$searchEngineAlias}'."
);
}

return $this->searchEngineIndexers[$repositoryConfig['search']['engine']];
return $this->searchEngineIndexers[$searchEngineAlias];
}
}

Expand Down
27 changes: 15 additions & 12 deletions src/bundle/Core/ApiLoader/StorageEngineFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,23 +55,26 @@ public function getStorageEngines()
* Builds storage engine identified by $storageEngineIdentifier (the "alias" attribute in the service tag).
*
* @throws \Ibexa\Bundle\Core\ApiLoader\Exception\InvalidStorageEngine
*
* @return \Ibexa\Contracts\Core\Persistence\Handler
*/
public function buildStorageEngine()
public function buildStorageEngine(): PersistenceHandler
{
$repositoryConfig = $this->repositoryConfigurationProvider->getRepositoryConfig();

if (
!(
isset($repositoryConfig['storage']['engine'])
&& isset($this->storageEngines[$repositoryConfig['storage']['engine']])
)
) {
$storageEngineAlias = $repositoryConfig['storage']['engine'] ?? null;
if (null === $storageEngineAlias) {
throw new InvalidStorageEngine(
sprintf(
'Ibexa "%s" Repository has no Storage Engine configured',
$this->repositoryConfigurationProvider->getCurrentRepositoryAlias()
)
);
}

if (!isset($this->storageEngines[$storageEngineAlias])) {
throw new InvalidStorageEngine(
"Invalid storage engine '{$repositoryConfig['storage']['engine']}'. " .
'Could not find any service tagged with ezpublish.storageEngine ' .
"with alias {$repositoryConfig['storage']['engine']}."
"Invalid storage engine '{$storageEngineAlias}'. " .
'Could not find any service tagged with ibexa.storage ' .
"with alias {$storageEngineAlias}."
);
}

Expand Down

0 comments on commit db869b3

Please sign in to comment.