Skip to content

Commit e019a50

Browse files
committed
MAGETWO-69559: Declaration of dependencies for indexers
1 parent 9badb94 commit e019a50

39 files changed

+3134
-482
lines changed

app/code/Magento/Indexer/Console/Command/AbstractIndexerCommand.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
namespace Magento\Indexer\Console\Command;
77

88
use Magento\Backend\App\Area\FrontNameResolver;
9-
use Magento\Framework\App\ObjectManager;
10-
use Magento\Framework\App\ObjectManager\ConfigLoader;
119
use Magento\Framework\ObjectManagerInterface;
1210
use Symfony\Component\Console\Command\Command;
1311
use Magento\Framework\Indexer\IndexerInterface;
@@ -54,14 +52,24 @@ public function __construct(
5452
}
5553

5654
/**
57-
* Get all indexers
55+
* Return the array of all indexers with keys as indexer ids.
5856
*
5957
* @return IndexerInterface[]
6058
* @since 2.0.0
6159
*/
6260
protected function getAllIndexers()
6361
{
64-
return $this->getCollectionFactory()->create()->getItems();
62+
$indexers = $this->getCollectionFactory()->create()->getItems();
63+
return array_combine(
64+
array_map(
65+
function ($item) {
66+
/** @var IndexerInterface $item */
67+
return $item->getId();
68+
},
69+
$indexers
70+
),
71+
$indexers
72+
);
6573
}
6674

6775
/**

app/code/Magento/Indexer/Console/Command/AbstractIndexerManageCommand.php

Lines changed: 9 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,9 @@
55
*/
66
namespace Magento\Indexer\Console\Command;
77

8+
use Magento\Framework\Indexer\IndexerInterface;
89
use Symfony\Component\Console\Input\InputInterface;
9-
use Symfony\Component\Console\Output\OutputInterface;
10-
use Symfony\Component\Console\Input\InputOption;
1110
use Symfony\Component\Console\Input\InputArgument;
12-
use Magento\Framework\Indexer\IndexerInterface;
13-
use Magento\Framework\App\ObjectManagerFactory;
14-
use Magento\Indexer\Model\IndexerFactory;
1511

1612
/**
1713
* An Abstract class for all Indexer related commands.
@@ -25,28 +21,7 @@ abstract class AbstractIndexerManageCommand extends AbstractIndexerCommand
2521
const INPUT_KEY_INDEXERS = 'index';
2622

2723
/**
28-
* @var IndexerFactory
29-
* @since 2.2.0
30-
*/
31-
private $indexerFactory;
32-
33-
/**
34-
* Constructor
35-
*
36-
* @param ObjectManagerFactory $objectManagerFactory
37-
* @param IndexerFactory|null $indexerFactory
38-
* @since 2.2.0
39-
*/
40-
public function __construct(
41-
ObjectManagerFactory $objectManagerFactory,
42-
IndexerFactory $indexerFactory = null
43-
) {
44-
parent::__construct($objectManagerFactory);
45-
$this->indexerFactory = $indexerFactory;
46-
}
47-
48-
/**
49-
* Gets list of indexers
24+
* Returns the ordered list of indexers.
5025
*
5126
* @param InputInterface $input
5227
* @return IndexerInterface[]
@@ -60,32 +35,21 @@ protected function getIndexers(InputInterface $input)
6035
$requestedTypes = $input->getArgument(self::INPUT_KEY_INDEXERS);
6136
$requestedTypes = array_filter(array_map('trim', $requestedTypes), 'strlen');
6237
}
38+
6339
if (empty($requestedTypes)) {
64-
return $this->getAllIndexers();
40+
$indexers = $this->getAllIndexers();
6541
} else {
66-
$indexers = [];
67-
$unsupportedTypes = [];
68-
foreach ($requestedTypes as $code) {
69-
$indexer = $this->getIndexerFactory()->create();
70-
try {
71-
$indexer->load($code);
72-
$indexers[] = $indexer;
73-
} catch (\Exception $e) {
74-
$unsupportedTypes[] = $code;
75-
}
76-
}
42+
$availableIndexers = $this->getAllIndexers();
43+
$unsupportedTypes = array_diff($requestedTypes, array_keys($availableIndexers));
7744
if ($unsupportedTypes) {
78-
$availableTypes = [];
79-
$indexers = $this->getAllIndexers();
80-
foreach ($indexers as $indexer) {
81-
$availableTypes[] = $indexer->getId();
82-
}
8345
throw new \InvalidArgumentException(
8446
"The following requested index types are not supported: '" . join("', '", $unsupportedTypes)
85-
. "'." . PHP_EOL . 'Supported types: ' . join(", ", $availableTypes)
47+
. "'." . PHP_EOL . 'Supported types: ' . join(", ", array_keys($availableIndexers))
8648
);
8749
}
50+
$indexers = array_intersect_key($availableIndexers, array_flip($requestedTypes));
8851
}
52+
8953
return $indexers;
9054
}
9155

@@ -105,19 +69,4 @@ public function getInputList()
10569
),
10670
];
10771
}
108-
109-
/**
110-
* Get indexer factory
111-
*
112-
* @return IndexerFactory
113-
* @deprecated 2.2.0
114-
* @since 2.2.0
115-
*/
116-
private function getIndexerFactory()
117-
{
118-
if (null === $this->indexerFactory) {
119-
$this->indexerFactory = $this->getObjectManager()->get(IndexerFactory::class);
120-
}
121-
return $this->indexerFactory;
122-
}
12372
}

0 commit comments

Comments
 (0)