Matthias Mullie has uploaded a new change for review.
https://gerrit.wikimedia.org/r/182825
Change subject: Make MappingValidator agnostic of specific implementation
......................................................................
Make MappingValidator agnostic of specific implementation
Instead of expecting MW-specific keys & objects, accept them via
arguments & process them, regardless of what exectly they are.
In this case, they'll still be the same keys & objects, but it'll
allow others using this class to use it with their own types.
Change-Id: Ib0287a6a18cef3e4a9b7975597680a04305a3be9
---
M includes/Maintenance/Validators/MappingValidator.php
M maintenance/updateOneSearchIndexConfig.php
2 files changed, 20 insertions(+), 23 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/CirrusSearch
refs/changes/25/182825/1
diff --git a/includes/Maintenance/Validators/MappingValidator.php
b/includes/Maintenance/Validators/MappingValidator.php
index c2e5ad4..38c936c 100644
--- a/includes/Maintenance/Validators/MappingValidator.php
+++ b/includes/Maintenance/Validators/MappingValidator.php
@@ -33,14 +33,9 @@
private $mappingConfig;
/**
- * @var Type
+ * @var Type[]
*/
- private $pageType;
-
- /**
- * @var Type
- */
- private $namespaceType;
+ private $types;
/**
* @todo: this constructor takes way too much arguments - refactor
@@ -49,19 +44,17 @@
* @param bool $optimizeIndexForExperimentalHighlighter
* @param array $availablePlugins
* @param array $mappingConfig
- * @param Type $pageType
- * @param Type $namespaceType
+ * @param Type[] $types Array with type names as key & type object as
value
* @param Maintenance $out
*/
- public function __construct( Index $index,
$optimizeIndexForExperimentalHighlighter, array $availablePlugins, array
$mappingConfig, Type $pageType, Type $namespaceType, Maintenance $out = null ) {
+ public function __construct( Index $index,
$optimizeIndexForExperimentalHighlighter, array $availablePlugins, array
$mappingConfig, array $types, Maintenance $out = null ) {
parent::__construct( $out );
$this->index = $index;
$this->optimizeIndexForExperimentalHighlighter =
$optimizeIndexForExperimentalHighlighter;
$this->availablePlugins = $availablePlugins;
$this->mappingConfig = $mappingConfig;
- $this->pageType = $pageType;
- $this->namespaceType = $namespaceType;
+ $this->types = $types;
}
/**
@@ -79,18 +72,23 @@
$requiredMappings = $this->mappingConfig;
if ( !$this->checkMapping( $requiredMappings ) ) {
+ /** @var Mapping[] $actions */
+ $actions = array();
+
// TODO Conflict resolution here might leave old
portions of mappings
- $pageAction = new Mapping( $this->pageType );
- foreach ( $requiredMappings[ 'page' ] as $key => $value
) {
- $pageAction->setParam( $key, $value );
+ foreach ( $this->types as $typeName => $type ) {
+ $action = new Mapping( $type );
+ foreach ( $requiredMappings[$typeName] as $key
=> $value ) {
+ $action->setParam( $key, $value );
+ }
+
+ $actions[] = $action;
}
- $namespaceAction = new Mapping( $this->namespaceType );
- foreach ( $requiredMappings[ 'namespace' ] as $key =>
$value ) {
- $namespaceAction->setParam( $key, $value );
- }
+
try {
- $pageAction->send();
- $namespaceAction->send();
+ foreach ( $actions as $action ) {
+ $action->send();
+ }
$this->output( "corrected\n" );
} catch ( ExceptionInterface $e ) {
$this->output( "failed!\n" );
diff --git a/maintenance/updateOneSearchIndexConfig.php
b/maintenance/updateOneSearchIndexConfig.php
index 6d57aeb..e7558e7 100644
--- a/maintenance/updateOneSearchIndexConfig.php
+++ b/maintenance/updateOneSearchIndexConfig.php
@@ -319,8 +319,7 @@
$this->optimizeIndexForExperimentalHighlighter,
$this->availablePlugins,
$this->getMappingConfig(),
- $this->getPageType(),
- $this->getNamespaceType(),
+ array( 'page' => $this->getPageType(), 'namespace' =>
$this->getNamespaceType() ),
$this
);
$validator->printDebugCheckConfig( $this->printDebugCheckConfig
);
--
To view, visit https://gerrit.wikimedia.org/r/182825
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib0287a6a18cef3e4a9b7975597680a04305a3be9
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/CirrusSearch
Gerrit-Branch: master
Gerrit-Owner: Matthias Mullie <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits