Ladsgroup has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/339809 )

Change subject: Inject SetReference dependencies
......................................................................

Inject SetReference dependencies

Bug: T159026
Change-Id: I758b9dcf76d8441f2d004a58efcb3fec35aa3bdc
---
M repo/Wikibase.php
M repo/includes/Api/SetReference.php
2 files changed, 57 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/09/339809/1

diff --git a/repo/Wikibase.php b/repo/Wikibase.php
index 46019b7..15d553f 100644
--- a/repo/Wikibase.php
+++ b/repo/Wikibase.php
@@ -394,7 +394,37 @@
                        );
                }
        ];
-       $wgAPIModules['wbsetreference'] = Wikibase\Repo\Api\SetReference::class;
+       $wgAPIModules['wbsetreference'] = [
+               'class' => Wikibase\Repo\Api\SetReference::class,
+               'factory' => function( ApiMain $mainModule, $moduleName ) {
+                       $wikibaseRepo = 
Wikibase\Repo\WikibaseRepo::getDefaultInstance();
+                       $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( 
$mainModule->getContext() );
+                       $changeOpFactoryProvider = 
$wikibaseRepo->getChangeOpFactoryProvider();
+
+                       $modificationHelper = new 
Wikibase\Repo\Api\StatementModificationHelper(
+                               $wikibaseRepo->getSnakFactory(),
+                               $wikibaseRepo->getEntityIdParser(),
+                               $wikibaseRepo->getStatementGuidValidator(),
+                               $apiHelperFactory->getErrorReporter( 
$mainModule )
+                       );
+
+                       return new Wikibase\Repo\Api\SetReference(
+                               $mainModule,
+                               $moduleName,
+                               
$wikibaseRepo->getExternalFormatDeserializerFactory(),
+                               $apiHelperFactory->getErrorReporter( 
$mainModule ),
+                               
$changeOpFactoryProvider->getStatementChangeOpFactory(),
+                               $modificationHelper,
+                               $wikibaseRepo->getStatementGuidParser(),
+                               function ( $module ) use ( $apiHelperFactory ) {
+                                       return 
$apiHelperFactory->getResultBuilder( $module );
+                               },
+                               function ( $module ) use ( $apiHelperFactory ) {
+                                       return 
$apiHelperFactory->getEntitySavingHelper( $module );
+                               }
+                       );
+               }
+       ];
        $wgAPIModules['wbremovereferences'] = [
                'class' => Wikibase\Repo\Api\RemoveReferences::class,
                'factory' => function( ApiMain $mainModule, $moduleName ) {
diff --git a/repo/includes/Api/SetReference.php 
b/repo/includes/Api/SetReference.php
index 7721b10..95ea500 100644
--- a/repo/includes/Api/SetReference.php
+++ b/repo/includes/Api/SetReference.php
@@ -61,29 +61,34 @@
        /**
         * @param ApiMain $mainModule
         * @param string $moduleName
-        * @param string $modulePrefix
+        * @param DeserializerFactory $deserializerFactory
+        * @param ApiErrorReporter $errorReporter
+        * @param StatementChangeOpFactory $statementChangeOpFactory
+        * @param StatementModificationHelper $modificationHelper
+        * @param StatementGuidParser $guidParser
+        * @param callable $resultBuilderInstantiator
+        * @param callable $entitySavingHelperInstantiator
         */
-       public function __construct( ApiMain $mainModule, $moduleName, 
$modulePrefix = '' ) {
-               parent::__construct( $mainModule, $moduleName, $modulePrefix );
+       public function __construct(
+               ApiMain $mainModule,
+               $moduleName,
+               DeserializerFactory $deserializerFactory,
+               ApiErrorReporter $errorReporter,
+               StatementChangeOpFactory $statementChangeOpFactory,
+               StatementModificationHelper $modificationHelper,
+               StatementGuidParser $guidParser,
+               callable $resultBuilderInstantiator,
+               callable $entitySavingHelperInstantiator
+       ) {
+               parent::__construct( $mainModule, $moduleName );
 
-               $wikibaseRepo = WikibaseRepo::getDefaultInstance();
-               $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( 
$this->getContext() );
-               $changeOpFactoryProvider = 
$wikibaseRepo->getChangeOpFactoryProvider();
-
-               $this->statementChangeOpFactory = 
$changeOpFactoryProvider->getStatementChangeOpFactory();
-               $this->errorReporter = $apiHelperFactory->getErrorReporter( 
$this );
-               $this->deserializerFactory = 
$wikibaseRepo->getExternalFormatDeserializerFactory();
-
-               $this->modificationHelper = new StatementModificationHelper(
-                       $wikibaseRepo->getSnakFactory(),
-                       $wikibaseRepo->getEntityIdParser(),
-                       $wikibaseRepo->getStatementGuidValidator(),
-                       $apiHelperFactory->getErrorReporter( $this )
-               );
-
-               $this->guidParser = $wikibaseRepo->getStatementGuidParser();
-               $this->resultBuilder = $apiHelperFactory->getResultBuilder( 
$this );
-               $this->entitySavingHelper = 
$apiHelperFactory->getEntitySavingHelper( $this );
+               $this->deserializerFactory = $deserializerFactory;
+               $this->errorReporter = $errorReporter;
+               $this->statementChangeOpFactory = $statementChangeOpFactory;
+               $this->modificationHelper = $modificationHelper;
+               $this->guidParser = $guidParser;
+               $this->resultBuilder = $resultBuilderInstantiator( $this );
+               $this->entitySavingHelper = $entitySavingHelperInstantiator( 
$this );
        }
 
        /**

-- 
To view, visit https://gerrit.wikimedia.org/r/339809
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I758b9dcf76d8441f2d004a58efcb3fec35aa3bdc
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Ladsgroup <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to