Thiemo Mättig (WMDE) has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/328490 )
Change subject: Remove misplaced namespace lookup method from EntityTitleStoreLookup ...................................................................... Remove misplaced namespace lookup method from EntityTitleStoreLookup This patch does two closely related things: * Remove the namespace lookup from the title lookup interface. There was only one consumer. There is also code in EntityContentFactory that implements this namespace lookup method. This code is untouched. No caller needed the interface there. * Change more generic title lookups into EntityTitleStoreLookup in cases where the additional guarantee is crucial. I may have missed places. This should not block this patch. Bug: T152498 Change-Id: I1fec984d3bb89f52a6d599d49f9f617beb34731b --- M lib/includes/Store/EntityNamespaceLookup.php M repo/includes/Api/ModifyEntity.php M repo/includes/EditEntity.php M repo/includes/Hooks/EditFilterHookRunner.php M repo/includes/Interactors/ItemMergeInteractor.php M repo/includes/Interactors/RedirectCreationInteractor.php M repo/includes/ParserOutput/ReferencedEntitiesDataUpdater.php M repo/includes/Store/EntityTitleStoreLookup.php M repo/includes/WikibaseRepo.php M repo/tests/phpunit/includes/Hooks/EditFilterHookRunnerTest.php 10 files changed, 39 insertions(+), 36 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/90/328490/1 diff --git a/lib/includes/Store/EntityNamespaceLookup.php b/lib/includes/Store/EntityNamespaceLookup.php index 87355b7..d1922fe 100644 --- a/lib/includes/Store/EntityNamespaceLookup.php +++ b/lib/includes/Store/EntityNamespaceLookup.php @@ -17,7 +17,7 @@ * @author Adrian Heine <[email protected]> * @author Thiemo Mättig */ -final class EntityNamespaceLookup { +class EntityNamespaceLookup { /** * @var int[] diff --git a/repo/includes/Api/ModifyEntity.php b/repo/includes/Api/ModifyEntity.php index ca22ad6..3e38106 100644 --- a/repo/includes/Api/ModifyEntity.php +++ b/repo/includes/Api/ModifyEntity.php @@ -14,7 +14,7 @@ use Wikibase\DataModel\Entity\EntityDocument; use Wikibase\DataModel\Entity\ItemId; use Wikibase\Lib\Store\EntityRevisionLookup; -use Wikibase\Lib\Store\EntityTitleLookup; +use Wikibase\Repo\Store\EntityTitleStoreLookup; use Wikibase\Repo\SiteLinkTargetProvider; use Wikibase\Repo\Store\EntityPermissionChecker; use Wikibase\Repo\WikibaseRepo; @@ -44,7 +44,7 @@ protected $siteLinkTargetProvider; /** - * @var EntityTitleLookup + * @var EntityTitleStoreLookup */ private $titleLookup; @@ -131,7 +131,7 @@ } /** - * @return EntityTitleLookup + * @return EntityTitleStoreLookup */ protected function getTitleLookup() { return $this->titleLookup; diff --git a/repo/includes/EditEntity.php b/repo/includes/EditEntity.php index 6eb21a1..e9110ba 100644 --- a/repo/includes/EditEntity.php +++ b/repo/includes/EditEntity.php @@ -17,7 +17,7 @@ use Wikibase\DataModel\Services\Diff\EntityPatcher; use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Lib\Store\EntityStore; -use Wikibase\Lib\Store\EntityTitleLookup; +use Wikibase\Repo\Store\EntityTitleStoreLookup; use Wikibase\Lib\Store\StorageException; use Wikibase\Repo\Hooks\EditFilterHookRunner; use Wikibase\Repo\Store\EntityPermissionChecker; @@ -41,7 +41,7 @@ private $entityRevisionLookup; /** - * @var EntityTitleLookup + * @var EntityTitleStoreLookup */ private $titleLookup; @@ -172,7 +172,7 @@ /** * @since 0.5 * - * @param EntityTitleLookup $titleLookup + * @param EntityTitleStoreLookup $titleLookup * @param EntityRevisionLookup $entityLookup * @param EntityStore $entityStore * @param EntityPermissionChecker $permissionChecker @@ -193,7 +193,7 @@ * @throws InvalidArgumentException */ public function __construct( - EntityTitleLookup $titleLookup, + EntityTitleStoreLookup $titleLookup, EntityRevisionLookup $entityLookup, EntityStore $entityStore, EntityPermissionChecker $permissionChecker, diff --git a/repo/includes/Hooks/EditFilterHookRunner.php b/repo/includes/Hooks/EditFilterHookRunner.php index 2c962c1..4b173b4 100644 --- a/repo/includes/Hooks/EditFilterHookRunner.php +++ b/repo/includes/Hooks/EditFilterHookRunner.php @@ -14,8 +14,9 @@ use Wikibase\DataModel\Entity\EntityDocument; use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Entity\EntityRedirect; -use Wikibase\Repo\Store\EntityTitleStoreLookup; +use Wikibase\Lib\Store\EntityNamespaceLookup; use Wikibase\Repo\Content\EntityContentFactory; +use Wikibase\Repo\Store\EntityTitleStoreLookup; use WikiPage; /** @@ -26,6 +27,11 @@ * @author Addshore */ class EditFilterHookRunner { + + /** + * @var EntityNamespaceLookup + */ + private $namespaceLookup; /** * @var EntityTitleStoreLookup @@ -43,11 +49,13 @@ private $context; /** + * @param EntityNamespaceLookup $namespaceLookup * @param EntityTitleStoreLookup $titleLookup * @param EntityContentFactory $entityContentFactory * @param IContextSource $context */ public function __construct( + EntityNamespaceLookup $namespaceLookup, EntityTitleStoreLookup $titleLookup, EntityContentFactory $entityContentFactory, IContextSource $context @@ -58,6 +66,7 @@ $context = new DerivativeContext( $context ); } + $this->namespaceLookup = $namespaceLookup; $this->titleLookup = $titleLookup; $this->entityContentFactory = $entityContentFactory; $this->context = $context; @@ -135,7 +144,7 @@ // "Special:NewProperty" instead of "Property:NewProperty", while // the AbuseFilter itself will get a Title object with the correct // namespace IDs for Property entities. - $namespace = $this->titleLookup->getNamespaceForType( $entityType ); + $namespace = $this->namespaceLookup->getEntityNamespace( $entityType ); $title = Title::makeTitle( $namespace, 'New' . ucfirst( $entityType ) ); } diff --git a/repo/includes/Interactors/ItemMergeInteractor.php b/repo/includes/Interactors/ItemMergeInteractor.php index e1e7af5..3d61b58 100644 --- a/repo/includes/Interactors/ItemMergeInteractor.php +++ b/repo/includes/Interactors/ItemMergeInteractor.php @@ -14,7 +14,7 @@ use Wikibase\EntityContent; use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Lib\Store\EntityStore; -use Wikibase\Lib\Store\EntityTitleLookup; +use Wikibase\Repo\Store\EntityTitleStoreLookup; use Wikibase\Lib\Store\RevisionedUnresolvedRedirectException; use Wikibase\Lib\Store\StorageException; use Wikibase\Repo\Store\EntityPermissionChecker; @@ -67,7 +67,7 @@ private $interactorRedirect; /** - * @var EntityTitleLookup + * @var EntityTitleStoreLookup */ private $entityTitleLookup; @@ -79,7 +79,7 @@ * @param SummaryFormatter $summaryFormatter * @param User $user * @param RedirectCreationInteractor $interactorRedirect - * @param EntityTitleLookup $entityTitleLookup + * @param EntityTitleStoreLookup $entityTitleLookup */ public function __construct( MergeChangeOpsFactory $changeOpFactory, @@ -89,7 +89,7 @@ SummaryFormatter $summaryFormatter, User $user, RedirectCreationInteractor $interactorRedirect, - EntityTitleLookup $entityTitleLookup + EntityTitleStoreLookup $entityTitleLookup ) { $this->changeOpFactory = $changeOpFactory; diff --git a/repo/includes/Interactors/RedirectCreationInteractor.php b/repo/includes/Interactors/RedirectCreationInteractor.php index 15309e1..0ce545c 100644 --- a/repo/includes/Interactors/RedirectCreationInteractor.php +++ b/repo/includes/Interactors/RedirectCreationInteractor.php @@ -9,7 +9,7 @@ use Wikibase\DataModel\Services\Lookup\EntityRedirectLookupException; use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Lib\Store\EntityStore; -use Wikibase\Lib\Store\EntityTitleLookup; +use Wikibase\Repo\Store\EntityTitleStoreLookup; use Wikibase\Lib\Store\StorageException; use Wikibase\Lib\Store\RevisionedUnresolvedRedirectException; use Wikibase\Repo\Hooks\EditFilterHookRunner; @@ -29,7 +29,7 @@ class RedirectCreationInteractor { /** - * @var EntityTitleLookup + * @var EntityTitleStoreLookup */ private $entityTitleLookup; @@ -76,7 +76,7 @@ * @param User $user * @param EditFilterHookRunner $editFilterHookRunner * @param EntityRedirectLookup $entityRedirectLookup - * @param EntityTitleLookup $entityTitleLookup + * @param EntityTitleStoreLookup $entityTitleLookup */ public function __construct( EntityRevisionLookup $entityRevisionLookup, @@ -86,7 +86,7 @@ User $user, EditFilterHookRunner $editFilterHookRunner, EntityRedirectLookup $entityRedirectLookup, - EntityTitleLookup $entityTitleLookup + EntityTitleStoreLookup $entityTitleLookup ) { $this->entityRevisionLookup = $entityRevisionLookup; $this->entityStore = $entityStore; diff --git a/repo/includes/ParserOutput/ReferencedEntitiesDataUpdater.php b/repo/includes/ParserOutput/ReferencedEntitiesDataUpdater.php index 198b442..f2efce9 100644 --- a/repo/includes/ParserOutput/ReferencedEntitiesDataUpdater.php +++ b/repo/includes/ParserOutput/ReferencedEntitiesDataUpdater.php @@ -15,7 +15,7 @@ use Wikibase\DataModel\Snak\PropertyValueSnak; use Wikibase\DataModel\Snak\Snak; use Wikibase\DataModel\Statement\Statement; -use Wikibase\Lib\Store\EntityTitleLookup; +use Wikibase\Repo\Store\EntityTitleStoreLookup; /** * Finds linked entities on an Entity and add the links to ParserOutput. @@ -30,7 +30,7 @@ class ReferencedEntitiesDataUpdater implements StatementDataUpdater, SiteLinkDataUpdater { /** - * @var EntityTitleLookup + * @var EntityTitleStoreLookup */ private $entityTitleLookup; @@ -45,13 +45,13 @@ private $entityIds = array(); /** - * @param EntityTitleLookup $entityTitleLookup + * @param EntityTitleStoreLookup $entityTitleLookup * @param EntityIdParser $externalEntityIdParser Parser for external entity IDs (usually URIs) * into EntityIds. Such external entity IDs may be used for units in QuantityValues, for * calendar models in TimeValue, and for the reference globe in GlobeCoordinateValues. */ public function __construct( - EntityTitleLookup $entityTitleLookup, + EntityTitleStoreLookup $entityTitleLookup, EntityIdParser $externalEntityIdParser ) { $this->entityTitleLookup = $entityTitleLookup; diff --git a/repo/includes/Store/EntityTitleStoreLookup.php b/repo/includes/Store/EntityTitleStoreLookup.php index 29e4ab6..0d4d597 100644 --- a/repo/includes/Store/EntityTitleStoreLookup.php +++ b/repo/includes/Store/EntityTitleStoreLookup.php @@ -2,7 +2,6 @@ namespace Wikibase\Repo\Store; -use OutOfBoundsException; use Wikibase\Lib\Store\EntityTitleLookup; /** @@ -19,17 +18,5 @@ * @author Thiemo Mättig */ interface EntityTitleStoreLookup extends EntityTitleLookup { - - /** - * Determines what namespace is suitable for the given type of entities. - * - * @since 0.5 - * - * @param string $entityType the entity type to look up, as returned by Entity::getType() - * - * @throws OutOfBoundsException - * @return int the namespace ID for this type - */ - public function getNamespaceForType( $entityType ); } diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php index 2ede042..6cc7ad3 100644 --- a/repo/includes/WikibaseRepo.php +++ b/repo/includes/WikibaseRepo.php @@ -652,6 +652,7 @@ */ private function newEditFilterHookRunner( IContextSource $context ) { return new EditFilterHookRunner( + $this->getEntityNamespaceLookup(), $this->getEntityTitleLookup(), $this->getEntityContentFactory(), $context diff --git a/repo/tests/phpunit/includes/Hooks/EditFilterHookRunnerTest.php b/repo/tests/phpunit/includes/Hooks/EditFilterHookRunnerTest.php index 1e00927..7245657 100644 --- a/repo/tests/phpunit/includes/Hooks/EditFilterHookRunnerTest.php +++ b/repo/tests/phpunit/includes/Hooks/EditFilterHookRunnerTest.php @@ -15,9 +15,10 @@ use Wikibase\DataModel\Entity\Item; use Wikibase\DataModel\Entity\ItemId; use Wikibase\ItemContent; -use Wikibase\Repo\Store\EntityTitleStoreLookup; +use Wikibase\Lib\Store\EntityNamespaceLookup; use Wikibase\Repo\Content\EntityContentFactory; use Wikibase\Repo\Hooks\EditFilterHookRunner; +use Wikibase\Repo\Store\EntityTitleStoreLookup; /** * @covers Wikibase\Repo\Hooks\EditFilterHookRunner @@ -38,6 +39,10 @@ public function getEditFilterHookRunner() { $context = new RequestContext(); $context->setRequest( new FauxRequest() ); + + $namespaceLookup = $this->getMockBuilder( EntityNamespaceLookup::class ) + ->disableOriginalConstructor() + ->getMock(); $entityTitleLookup = $this->getMock( EntityTitleStoreLookup::class ); $entityTitleLookup->expects( $this->any() ) @@ -62,6 +67,7 @@ ->will( $this->returnValue( ItemContent::newEmpty() ) ); return new EditFilterHookRunner( + $namespaceLookup, $entityTitleLookup, $entityContentFactory, $context -- To view, visit https://gerrit.wikimedia.org/r/328490 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1fec984d3bb89f52a6d599d49f9f617beb34731b Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
