jenkins-bot has submitted this change and it was merged. Change subject: Inline the instantiation of EntityParserOutputDataUpdater into EntityParserOutputGenerator ......................................................................
Inline the instantiation of EntityParserOutputDataUpdater into EntityParserOutputGenerator As said in https://gerrit.wikimedia.org/r/#/c/244643/3/repo/includes/DataUpdates/EntityParserOutputDataUpdater.php and other comments, the border between these two classes is not very obvious. Both are supposed to generate and/or update the parser output. Also what we currently call "data updater" is so simple that it's barely worth the cost of an additional class. This patch removes the injection aspect, but does not remove the EntityParserOutputDataUpdater. Further refactoring is left for later patches. Bug: T114220 Change-Id: I3dfe8eca6533d37002bdfc6cbd196879d3410632 --- M repo/includes/ParserOutput/EntityParserOutputDataUpdater.php M repo/includes/ParserOutput/EntityParserOutputGenerator.php M repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php M repo/tests/phpunit/includes/ParserOutput/EntityParserOutputDataUpdaterTest.php M repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php 5 files changed, 25 insertions(+), 20 deletions(-) Approvals: Daniel Kinzler: Looks good to me, approved jenkins-bot: Verified diff --git a/repo/includes/ParserOutput/EntityParserOutputDataUpdater.php b/repo/includes/ParserOutput/EntityParserOutputDataUpdater.php index 31531c7..3cb694c 100644 --- a/repo/includes/ParserOutput/EntityParserOutputDataUpdater.php +++ b/repo/includes/ParserOutput/EntityParserOutputDataUpdater.php @@ -20,6 +20,11 @@ class EntityParserOutputDataUpdater { /** + * @var ParserOutput + */ + private $parserOutput; + + /** * @var ParserOutputDataUpdate[] */ private $dataUpdates; @@ -35,11 +40,12 @@ private $siteLinkDataUpdates = array(); /** + * @param ParserOutput $parserOutput * @param ParserOutputDataUpdate[] $dataUpdates * * @throws InvalidArgumentException */ - public function __construct( array $dataUpdates ) { + public function __construct( ParserOutput $parserOutput, array $dataUpdates ) { foreach ( $dataUpdates as $dataUpdate ) { if ( $dataUpdate instanceof StatementDataUpdate ) { $this->statementDataUpdates[] = $dataUpdate; @@ -51,6 +57,7 @@ } } + $this->parserOutput = $parserOutput; $this->dataUpdates = $dataUpdates; } @@ -97,12 +104,9 @@ } } - /** - * @param ParserOutput $parserOutput - */ - public function updateParserOutput( ParserOutput $parserOutput ) { + public function finish() { foreach ( $this->dataUpdates as $dataUpdate ) { - $dataUpdate->updateParserOutput( $parserOutput ); + $dataUpdate->updateParserOutput( $this->parserOutput ); } } diff --git a/repo/includes/ParserOutput/EntityParserOutputGenerator.php b/repo/includes/ParserOutput/EntityParserOutputGenerator.php index f884f9e..e26d06a 100644 --- a/repo/includes/ParserOutput/EntityParserOutputGenerator.php +++ b/repo/includes/ParserOutput/EntityParserOutputGenerator.php @@ -76,9 +76,9 @@ private $entityDataFormatProvider; /** - * @var EntityParserOutputDataUpdater + * @var ParserOutputDataUpdate[] */ - private $parserOutputDataUpdater; + private $dataUpdates; /** * @var string @@ -93,7 +93,7 @@ LanguageFallbackChain $languageFallbackChain, TemplateFactory $templateFactory, EntityDataFormatProvider $entityDataFormatProvider, - EntityParserOutputDataUpdater $parserOutputDataUpdater, + array $dataUpdates, $languageCode ) { $this->entityViewFactory = $entityViewFactory; @@ -104,7 +104,7 @@ $this->languageCode = $languageCode; $this->templateFactory = $templateFactory; $this->entityDataFormatProvider = $entityDataFormatProvider; - $this->parserOutputDataUpdater = $parserOutputDataUpdater; + $this->dataUpdates = $dataUpdates; $this->languageCode = $languageCode; } @@ -142,8 +142,9 @@ $entity = $entityRevision->getEntity(); - $this->parserOutputDataUpdater->processEntity( $entity ); - $this->parserOutputDataUpdater->updateParserOutput( $parserOutput ); + $dataUpdater = new EntityParserOutputDataUpdater( $parserOutput, $this->dataUpdates ); + $dataUpdater->processEntity( $entity ); + $dataUpdater->finish(); $configVars = $this->configBuilder->build( $entity ); $parserOutput->addJsConfigVars( $configVars ); diff --git a/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php b/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php index 96c5231..ef3adbd 100644 --- a/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php +++ b/repo/includes/ParserOutput/EntityParserOutputGeneratorFactory.php @@ -134,7 +134,7 @@ $this->getLanguageFallbackChain( $languageCode ), $this->templateFactory, $this->entityDataFormatProvider, - new EntityParserOutputDataUpdater( $this->getDataUpdates() ), + $this->getDataUpdates(), $languageCode ); } diff --git a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputDataUpdaterTest.php b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputDataUpdaterTest.php index 6bb4b72..4a923c1 100644 --- a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputDataUpdaterTest.php +++ b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputDataUpdaterTest.php @@ -2,6 +2,7 @@ namespace Wikibase\Repo\Tests\ParserOutput; +use ParserOutput; use PHPUnit_Framework_TestCase; use Wikibase\DataModel\Entity\Item; use Wikibase\DataModel\SiteLinkList; @@ -40,14 +41,14 @@ $siteLinkDataUpdate->expects( $this->once() ) ->method( 'updateParserOutput' ); - $instance = new EntityParserOutputDataUpdater( array( + $instance = new EntityParserOutputDataUpdater( $parserOutput, array( $statementDataUpdate, $siteLinkDataUpdate, ) ); foreach ( $entities as $entity ) { $instance->processEntity( $entity ); } - $instance->updateParserOutput( $parserOutput ); + $instance->finish(); } public function entitiesProvider() { @@ -72,7 +73,7 @@ */ public function testGivenInvalidDataUpdate_constructorThrowsException( array $argument ) { $this->setExpectedException( 'InvalidArgumentException' ); - new EntityParserOutputDataUpdater( $argument ); + new EntityParserOutputDataUpdater( new ParserOutput(), $argument ); } public function invalidConstructorArgumentProvider() { diff --git a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php index f53a198..220d064 100644 --- a/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php +++ b/repo/tests/phpunit/includes/ParserOutput/EntityParserOutputGeneratorTest.php @@ -15,15 +15,14 @@ use Wikibase\DataModel\Entity\PropertyId; use Wikibase\DataModel\Services\Lookup\InMemoryDataTypeLookup; use Wikibase\DataModel\Snak\PropertyValueSnak; -use Wikibase\Repo\ParserOutput\EntityParserOutputGenerator; use Wikibase\EntityRevision; use Wikibase\Lib\Store\PropertyDataTypeMatcher; use Wikibase\Lib\Store\Sql\SqlEntityInfoBuilderFactory; -use Wikibase\Repo\ParserOutput\EntityParserOutputDataUpdater; +use Wikibase\Repo\LinkedData\EntityDataFormatProvider; +use Wikibase\Repo\ParserOutput\EntityParserOutputGenerator; use Wikibase\Repo\ParserOutput\ExternalLinksDataUpdate; use Wikibase\Repo\ParserOutput\ImageLinksDataUpdate; use Wikibase\Repo\ParserOutput\ReferencedEntitiesDataUpdate; -use Wikibase\Repo\LinkedData\EntityDataFormatProvider; use Wikibase\View\Template\TemplateFactory; /** @@ -161,7 +160,7 @@ $this->newLanguageFallbackChain(), TemplateFactory::getDefaultInstance(), $entityDataFormatProvider, - new EntityParserOutputDataUpdater( $dataUpdates ), + $dataUpdates, 'en' ); } -- To view, visit https://gerrit.wikimedia.org/r/245878 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I3dfe8eca6533d37002bdfc6cbd196879d3410632 Gerrit-PatchSet: 4 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]> Gerrit-Reviewer: Aude <[email protected]> Gerrit-Reviewer: Daniel Kinzler <[email protected]> Gerrit-Reviewer: Hoo man <[email protected]> Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
