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

Reply via email to