Bene has uploaded a new change for review.
https://gerrit.wikimedia.org/r/276723
Change subject: Make api modules work with narrower interfaces
......................................................................
Make api modules work with narrower interfaces
This patch removes bindings to FingerprintProvider from term related api
modules and checks for narrower interfaces for labels, descriptions and
aliases.
Change-Id: I6e704b2898a33c16b4368fb1afd0dccc53011c4e
---
M repo/includes/Api/EditEntity.php
M repo/includes/Api/SetAliases.php
M repo/includes/Api/SetDescription.php
M repo/includes/Api/SetLabel.php
4 files changed, 44 insertions(+), 27 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/23/276723/1
diff --git a/repo/includes/Api/EditEntity.php b/repo/includes/Api/EditEntity.php
index 22e90ec..254ff30 100644
--- a/repo/includes/Api/EditEntity.php
+++ b/repo/includes/Api/EditEntity.php
@@ -23,7 +23,9 @@
use Wikibase\DataModel\Entity\Property;
use Wikibase\DataModel\Statement\Statement;
use Wikibase\DataModel\Statement\StatementListProvider;
-use Wikibase\DataModel\Term\FingerprintProvider;
+use Wikibase\DataModel\Term\AliasesProvider;
+use Wikibase\DataModel\Term\DescriptionsProvider;
+use Wikibase\DataModel\Term\LabelsProvider;
use Wikibase\EntityFactory;
use Wikibase\Lib\ContentLanguages;
use Wikibase\Lib\Store\EntityRevisionLookup;
@@ -314,7 +316,7 @@
// for more efficient validation!
if ( array_key_exists( 'labels', $data ) ) {
- if ( !( $entity instanceof FingerprintProvider ) ) {
+ if ( !( $entity instanceof LabelsProvider ) ) {
$this->errorReporter->dieError( 'The given
entity cannot contain labels', 'not-supported' );
}
$this->assertArray( $data['labels'], 'List of labels
must be an array' );
@@ -322,7 +324,7 @@
}
if ( array_key_exists( 'descriptions', $data ) ) {
- if ( !( $entity instanceof FingerprintProvider ) ) {
+ if ( !( $entity instanceof DescriptionsProvider ) ) {
$this->errorReporter->dieError( 'The given
entity cannot contain descriptions', 'not-supported' );
}
$this->assertArray( $data['descriptions'], 'List of
descriptions must be an array' );
@@ -330,7 +332,7 @@
}
if ( array_key_exists( 'aliases', $data ) ) {
- if ( !( $entity instanceof FingerprintProvider ) ) {
+ if ( !( $entity instanceof AliasesProvider ) ) {
$this->errorReporter->dieError( 'The given
entity cannot contain aliases', 'not-supported' );
}
$this->assertArray( $data['aliases'], 'List of aliases
must be an array' );
@@ -605,12 +607,16 @@
private function buildResult( EntityDocument $entity ) {
$builder = $this->getResultBuilder();
- if ( $entity instanceof FingerprintProvider ) {
- $fingerprint = $entity->getFingerprint();
+ if ( $entity instanceof LabelsProvider ) {
+ $builder->addLabels( $entity->getLabels(), 'entity' );
+ }
- $builder->addLabels( $fingerprint->getLabels(),
'entity' );
- $builder->addDescriptions(
$fingerprint->getDescriptions(), 'entity' );
- $builder->addAliasGroupList(
$fingerprint->getAliasGroups(), 'entity' );
+ if ( $entity instanceof DescriptionsProvider ) {
+ $builder->addDescriptions( $entity->getDescriptions(),
'entity' );
+ }
+
+ if ( $entity instanceof AliasesProvider ) {
+ $builder->addAliasGroupList( $entity->getAliasGroups(),
'entity' );
}
if ( $entity instanceof Item ) {
diff --git a/repo/includes/Api/SetAliases.php b/repo/includes/Api/SetAliases.php
index 4a9e636..60c601a 100644
--- a/repo/includes/Api/SetAliases.php
+++ b/repo/includes/Api/SetAliases.php
@@ -9,7 +9,7 @@
use Wikibase\ChangeOp\ChangeOps;
use Wikibase\ChangeOp\FingerprintChangeOpFactory;
use Wikibase\DataModel\Entity\EntityDocument;
-use Wikibase\DataModel\Term\FingerprintProvider;
+use Wikibase\DataModel\Term\AliasesProvider;
use Wikibase\Repo\WikibaseRepo;
/**
@@ -102,7 +102,7 @@
* @see ModifyEntity::modifyEntity
*/
protected function modifyEntity( EntityDocument &$entity, array
$params, $baseRevId ) {
- if ( !( $entity instanceof FingerprintProvider ) ) {
+ if ( !( $entity instanceof AliasesProvider ) ) {
$this->errorReporter->dieError( 'The given entity
cannot contain aliases', 'not-supported' );
}
@@ -111,6 +111,8 @@
/** @var ChangeOp[] $aliasesChangeOps */
$aliasesChangeOps = $this->getChangeOps( $params );
+
+ $aliasGroups = $entity->getAliasGroups();
if ( count( $aliasesChangeOps ) == 1 ) {
$this->applyChangeOp( $aliasesChangeOps[0], $entity,
$summary );
@@ -125,16 +127,14 @@
$summary->setLanguage( $language );
// Get the full list of current aliases
- $fingerprint = $entity->getFingerprint();
- $aliases = $fingerprint->hasAliasGroup( $language )
- ? $fingerprint->getAliasGroup( $language
)->getAliases()
- : array();
- $summary->addAutoSummaryArgs( $aliases );
+ if ( $aliasGroups->hasGroupForLanguage( $language ) ) {
+ $aliases = $aliasGroups->getByLanguage(
$language )->getAliases();
+ $summary->addAutoSummaryArgs( $aliases );
+ }
}
- $fingerprint = $entity->getFingerprint();
- if ( $fingerprint->hasAliasGroup( $language ) ) {
- $aliasGroupList =
$fingerprint->getAliasGroups()->getWithLanguages( array( $language ) );
+ if ( $aliasGroups->hasGroupForLanguage( $language ) ) {
+ $aliasGroupList = $aliasGroups->getWithLanguages(
array( $language ) );
$this->getResultBuilder()->addAliasGroupList(
$aliasGroupList, 'entity' );
}
diff --git a/repo/includes/Api/SetDescription.php
b/repo/includes/Api/SetDescription.php
index 373b6c8..494a34a 100644
--- a/repo/includes/Api/SetDescription.php
+++ b/repo/includes/Api/SetDescription.php
@@ -6,7 +6,7 @@
use Wikibase\ChangeOp\ChangeOpDescription;
use Wikibase\ChangeOp\FingerprintChangeOpFactory;
use Wikibase\DataModel\Entity\EntityDocument;
-use Wikibase\DataModel\Term\FingerprintProvider;
+use Wikibase\DataModel\Term\DescriptionsProvider;
use Wikibase\Repo\WikibaseRepo;
/**
@@ -52,7 +52,7 @@
* @see ModifyEntity::modifyEntity
*/
protected function modifyEntity( EntityDocument &$entity, array
$params, $baseRevId ) {
- if ( !( $entity instanceof FingerprintProvider ) ) {
+ if ( !( $entity instanceof DescriptionsProvider ) ) {
$this->errorReporter->dieError( 'The given entity
cannot contain descriptions', 'not-supported' );
}
@@ -62,9 +62,11 @@
$changeOp = $this->getChangeOp( $params );
$this->applyChangeOp( $changeOp, $entity, $summary );
+ $descriptions = $entity->getDescriptions();
$resultBuilder = $this->getResultBuilder();
- if ( $entity->getFingerprint()->hasDescription( $language ) ) {
- $termList =
$entity->getFingerprint()->getDescriptions()->getWithLanguages( array(
$language ) );
+
+ if ( $descriptions->hasTermForLanguage( $language ) ) {
+ $termList = $descriptions->getWithLanguages( array(
$language ) );
$resultBuilder->addDescriptions( $termList, 'entity' );
} else {
$resultBuilder->addRemovedDescription( $language,
'entity' );
diff --git a/repo/includes/Api/SetLabel.php b/repo/includes/Api/SetLabel.php
index ccb8f85..8421172 100644
--- a/repo/includes/Api/SetLabel.php
+++ b/repo/includes/Api/SetLabel.php
@@ -6,8 +6,9 @@
use Wikibase\ChangeOp\ChangeOpLabel;
use Wikibase\ChangeOp\FingerprintChangeOpFactory;
use Wikibase\DataModel\Entity\EntityDocument;
-use Wikibase\DataModel\Term\FingerprintProvider;
+use Wikibase\DataModel\Term\LabelsProvider;
use Wikibase\Repo\WikibaseRepo;
+use Wikibase\Summary;
/**
* API module to set the label for a Wikibase entity.
@@ -50,9 +51,15 @@
/**
* @see ModifyEntity::modifyEntity
+ *
+ * @param EntityDocument $entity
+ * @param array $params
+ * @param int $baseRevId
+ *
+ * @return Summary
*/
protected function modifyEntity( EntityDocument &$entity, array
$params, $baseRevId ) {
- if ( !( $entity instanceof FingerprintProvider ) ) {
+ if ( !( $entity instanceof LabelsProvider ) ) {
$this->errorReporter->dieError( 'The given entity
cannot contain labels', 'not-supported' );
}
@@ -62,9 +69,11 @@
$changeOp = $this->getChangeOp( $params );
$this->applyChangeOp( $changeOp, $entity, $summary );
+ $labels = $entity->getLabels();
$resultBuilder = $this->getResultBuilder();
- if ( $entity->getFingerprint()->hasLabel( $language ) ) {
- $termList =
$entity->getFingerprint()->getLabels()->getWithLanguages( array( $language ) );
+
+ if ( $labels->hasTermForLanguage( $language ) ) {
+ $termList = $labels->getWithLanguages( array( $language
) );
$resultBuilder->addLabels( $termList, 'entity' );
} else {
$resultBuilder->addRemovedLabel( $language, 'entity' );
--
To view, visit https://gerrit.wikimedia.org/r/276723
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6e704b2898a33c16b4368fb1afd0dccc53011c4e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Bene <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits