[MediaWiki-commits] [Gerrit] mediawiki...Wikibase[master]: Use repo-specific base concept URI to build concepturi in wb...

2017-03-24 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/343093 )

Change subject: Use repo-specific base concept URI to build concepturi in 
wbsearchentities results
..


Use repo-specific base concept URI to build concepturi in wbsearchentities 
results

Bug: T154590
Change-Id: I964be139970f6accb8dd002cbc56e054b2750e3c
---
M repo/Wikibase.php
M repo/includes/Api/SearchEntities.php
M repo/includes/WikibaseRepo.php
M repo/tests/phpunit/includes/Api/SearchEntitiesTest.php
M repo/tests/phpunit/includes/WikibaseRepoTest.php
5 files changed, 62 insertions(+), 13 deletions(-)

Approvals:
  Daniel Kinzler: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/repo/Wikibase.php b/repo/Wikibase.php
index 5236193..75473dc 100644
--- a/repo/Wikibase.php
+++ b/repo/Wikibase.php
@@ -228,7 +228,7 @@
$repo->getPropertyDataTypeLookup(),
$repo->getTermsLanguages(),
$repo->getEnabledEntityTypes(),
-   $repo->getSettings()->getSetting( 
'conceptBaseUri' )
+   $repo->getConceptBaseUris()
);
},
];
diff --git a/repo/includes/Api/SearchEntities.php 
b/repo/includes/Api/SearchEntities.php
index cf07fe4..eb2d20d 100644
--- a/repo/includes/Api/SearchEntities.php
+++ b/repo/includes/Api/SearchEntities.php
@@ -4,6 +4,8 @@
 
 use ApiBase;
 use ApiMain;
+use LogicException;
+use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
 use Wikibase\Lib\ContentLanguages;
@@ -43,9 +45,9 @@
private $entityTypes;
 
/**
-* @var string
+* @var string[]
 */
-   private $conceptBaseUri;
+   private $conceptBaseUris;
 
/**
 * @param ApiMain $mainModule
@@ -55,7 +57,7 @@
 * @param PropertyDataTypeLookup $propertyDataTypeLookup
 * @param ContentLanguages $termLanguages
 * @param string[] $entityTypes
-* @param string $conceptBaseUri
+* @param string[] $conceptBaseUris Associative array mapping 
repository names to base URIs of concept URIs
 *
 * @see ApiBase::__construct
 */
@@ -67,7 +69,7 @@
PropertyDataTypeLookup $propertyDataTypeLookup,
ContentLanguages $termLanguages,
array $entityTypes,
-   $conceptBaseUri
+   array $conceptBaseUris
) {
parent::__construct( $mainModule, $moduleName, '' );
 
@@ -76,7 +78,7 @@
$this->propertyDataTypeLookup = $propertyDataTypeLookup;
$this->termsLanguages = $termLanguages;
$this->entityTypes = $entityTypes;
-   $this->conceptBaseUri = $conceptBaseUri;
+   $this->conceptBaseUris = $conceptBaseUris;
}
 
/**
@@ -120,7 +122,7 @@
$entry = array(
'repository' => $entityId->getRepositoryName(),
'id' => $entityId->getSerialization(),
-   'concepturi' => $this->conceptBaseUri . 
$entityId->getSerialization(),
+   'concepturi' => $this->getConceptUri( $entityId ),
'url' => $title->getFullURL(),
'title' => $title->getPrefixedText(),
'pageid' => $title->getArticleID()
@@ -169,6 +171,31 @@
}
 
/**
+* @param EntityId $entityId
+*
+* @return string
+*/
+   private function getConceptUri( EntityId $entityId ) {
+   $baseUri = $this->getConceptBaseUri( $entityId );
+   return $baseUri . $entityId->getLocalPart();
+   }
+
+   /**
+* @param EntityId $entityId
+*
+* @throws LogicException when there is no base URI for the repository 
$entityId belongs to
+*
+* @return string
+*/
+   private function getConceptBaseUri( EntityId $entityId ) {
+   if ( !isset( 
$this->conceptBaseUris[$entityId->getRepositoryName()] ) ) {
+   throw new LogicException( 'No base URI for for concept 
URI for repository: ' . $entityId->getRepositoryName() );
+   }
+
+   return $this->conceptBaseUris[$entityId->getRepositoryName()];
+   }
+
+   /**
 * @see ApiBase::execute()
 */
public function execute() {
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index 3b2e065..50708f1 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -1916,4 +1916,11 @@
return 
$this->repositoryDefinitions->getEntityTypeToRepositoryMapping();
}
 
+   /**
+* @return string[] Associative array 

[MediaWiki-commits] [Gerrit] mediawiki...Wikibase[master]: Use repo-specific base concept URI to build concepturi in wb...

2017-03-16 Thread WMDE-leszek (Code Review)
WMDE-leszek has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/343093 )

Change subject: Use repo-specific base concept URI to build concepturi in 
wbsearchentities results
..

Use repo-specific base concept URI to build concepturi in wbsearchentities 
results

Bug: T154590
Change-Id: I964be139970f6accb8dd002cbc56e054b2750e3c
---
M repo/Wikibase.php
M repo/includes/Api/SearchEntities.php
M repo/includes/WikibaseRepo.php
M repo/tests/phpunit/includes/Api/SearchEntitiesTest.php
M repo/tests/phpunit/includes/WikibaseRepoTest.php
5 files changed, 58 insertions(+), 9 deletions(-)


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

diff --git a/repo/Wikibase.php b/repo/Wikibase.php
index 5236193..75473dc 100644
--- a/repo/Wikibase.php
+++ b/repo/Wikibase.php
@@ -228,7 +228,7 @@
$repo->getPropertyDataTypeLookup(),
$repo->getTermsLanguages(),
$repo->getEnabledEntityTypes(),
-   $repo->getSettings()->getSetting( 
'conceptBaseUri' )
+   $repo->getConceptBaseUris()
);
},
];
diff --git a/repo/includes/Api/SearchEntities.php 
b/repo/includes/Api/SearchEntities.php
index cf07fe4..eb2d20d 100644
--- a/repo/includes/Api/SearchEntities.php
+++ b/repo/includes/Api/SearchEntities.php
@@ -4,6 +4,8 @@
 
 use ApiBase;
 use ApiMain;
+use LogicException;
+use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\PropertyId;
 use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
 use Wikibase\Lib\ContentLanguages;
@@ -43,9 +45,9 @@
private $entityTypes;
 
/**
-* @var string
+* @var string[]
 */
-   private $conceptBaseUri;
+   private $conceptBaseUris;
 
/**
 * @param ApiMain $mainModule
@@ -55,7 +57,7 @@
 * @param PropertyDataTypeLookup $propertyDataTypeLookup
 * @param ContentLanguages $termLanguages
 * @param string[] $entityTypes
-* @param string $conceptBaseUri
+* @param string[] $conceptBaseUris Associative array mapping 
repository names to base URIs of concept URIs
 *
 * @see ApiBase::__construct
 */
@@ -67,7 +69,7 @@
PropertyDataTypeLookup $propertyDataTypeLookup,
ContentLanguages $termLanguages,
array $entityTypes,
-   $conceptBaseUri
+   array $conceptBaseUris
) {
parent::__construct( $mainModule, $moduleName, '' );
 
@@ -76,7 +78,7 @@
$this->propertyDataTypeLookup = $propertyDataTypeLookup;
$this->termsLanguages = $termLanguages;
$this->entityTypes = $entityTypes;
-   $this->conceptBaseUri = $conceptBaseUri;
+   $this->conceptBaseUris = $conceptBaseUris;
}
 
/**
@@ -120,7 +122,7 @@
$entry = array(
'repository' => $entityId->getRepositoryName(),
'id' => $entityId->getSerialization(),
-   'concepturi' => $this->conceptBaseUri . 
$entityId->getSerialization(),
+   'concepturi' => $this->getConceptUri( $entityId ),
'url' => $title->getFullURL(),
'title' => $title->getPrefixedText(),
'pageid' => $title->getArticleID()
@@ -169,6 +171,31 @@
}
 
/**
+* @param EntityId $entityId
+*
+* @return string
+*/
+   private function getConceptUri( EntityId $entityId ) {
+   $baseUri = $this->getConceptBaseUri( $entityId );
+   return $baseUri . $entityId->getLocalPart();
+   }
+
+   /**
+* @param EntityId $entityId
+*
+* @throws LogicException when there is no base URI for the repository 
$entityId belongs to
+*
+* @return string
+*/
+   private function getConceptBaseUri( EntityId $entityId ) {
+   if ( !isset( 
$this->conceptBaseUris[$entityId->getRepositoryName()] ) ) {
+   throw new LogicException( 'No base URI for for concept 
URI for repository: ' . $entityId->getRepositoryName() );
+   }
+
+   return $this->conceptBaseUris[$entityId->getRepositoryName()];
+   }
+
+   /**
 * @see ApiBase::execute()
 */
public function execute() {
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index 3b2e065..50708f1 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -1916,4 +1916,11 @@
return 
$this->repositoryDefinitions->getEntityTypeToRepositoryMapping();
}
 
+   /**
+* @return string[] Associat