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

Reply via email to