jenkins-bot has submitted this change and it was merged. Change subject: Added getClaimGuidParser and initial usage ......................................................................
Added getClaimGuidParser and initial usage Change-Id: I5718b339dead1058402979023dae060db9b125dd --- M lib/includes/parsers/EntityIdParser.php M repo/includes/WikibaseRepo.php M repo/includes/api/GetClaims.php 3 files changed, 39 insertions(+), 22 deletions(-) Approvals: Addshore: Looks good to me, approved jenkins-bot: Verified diff --git a/lib/includes/parsers/EntityIdParser.php b/lib/includes/parsers/EntityIdParser.php index 0f3a114..47e7834 100644 --- a/lib/includes/parsers/EntityIdParser.php +++ b/lib/includes/parsers/EntityIdParser.php @@ -12,6 +12,8 @@ /** * Parser that parses entity id strings into EntityId objects. * + * TODO: this should be turned into a proper adapter using a DataModel EntityIdParser + * * @since 0.4 * * @file diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php index a7a4ef6..1b52bb1 100644 --- a/repo/includes/WikibaseRepo.php +++ b/repo/includes/WikibaseRepo.php @@ -6,6 +6,9 @@ use DataValues\DataValueFactory; use ValueFormatters\FormatterOptions; use ValueParsers\ParserOptions; +use Wikibase\DataModel\Claim\ClaimGuidParser; +use Wikibase\DataModel\Entity\BasicEntityIdParser; +use Wikibase\DataModel\Entity\DispatchingEntityIdParser; use Wikibase\EntityContentFactory; use Wikibase\EntityLookup; use Wikibase\LanguageFallbackChainFactory; @@ -258,6 +261,21 @@ } /** + * @since 0.5 + * + * @return ClaimGuidParser + */ + public function getClaimGuidParser() { + $idBuilders = BasicEntityIdParser::getBuilders(); + + // TODO: extensions need to be able to add builders. + + $parser = new DispatchingEntityIdParser( $idBuilders ); + + return new ClaimGuidParser( $parser ); + } + + /** * @since 0.4 * * @return EntityIdFormatter diff --git a/repo/includes/api/GetClaims.php b/repo/includes/api/GetClaims.php index 140cf86..e00c3d8 100644 --- a/repo/includes/api/GetClaims.php +++ b/repo/includes/api/GetClaims.php @@ -3,14 +3,13 @@ namespace Wikibase\Api; use ApiBase; -use MWException; +use Wikibase\DataModel\Claim\ClaimGuidParser; use Wikibase\DataModel\Entity\EntityId; use Wikibase\Lib\ClaimGuidValidator; use Wikibase\Lib\Serializers\ClaimSerializer; use Wikibase\Lib\Serializers\SerializerFactory; use Wikibase\Entity; use Wikibase\EntityContentFactory; -use Wikibase\Property; use Wikibase\Claims; use Wikibase\Claim; use Wikibase\Repo\WikibaseRepo; @@ -191,35 +190,33 @@ * Second element is either null or a claim GUID */ protected function getIdentifiers( $params ) { + if ( isset( $params['claim'] ) ) { + $claimGuid = $params['claim']; + $entityId = $this->getEntityIdFromClaimGuid( $params['claim'] ); - $claimGuid = null; - - // @todo handle the settings in a more generalized way for all the api modules - $settings = WikibaseRepo::getDefaultInstance()->getSettings(); - $claimGuidValidator = new ClaimGuidValidator(); - - if ( isset( $params['claim'] ) && $claimGuidValidator->validateFormat( $params['claim'] ) === false ) { - $this->dieUsage( 'Invalid claim guid' , 'invalid-guid' ); - } - - if ( isset( $params['entity'] ) && isset( $params['claim'] ) ) { - $entityId = Entity::getIdFromClaimGuid( $params['claim'] ); - - if ( $entityId !== $params['entity'] ) { + if( isset( $params['entity'] ) && $entityId !== $params['entity'] ) { $this->dieUsage( 'If both entity id and claim key are provided they need to point to the same entity', 'param-illegal' ); } - } - else if ( isset( $params['entity'] ) ) { + } else { + $claimGuid = null; $entityId = $params['entity']; - } - else { - $entityId = Entity::getIdFromClaimGuid( $params['claim'] ); - $claimGuid = $params['claim']; } return array( $entityId, $claimGuid ); } + protected function getEntityIdFromClaimGuid( $claimGuid ) { + $claimGuidValidator = new ClaimGuidValidator(); + + if ( $claimGuidValidator->validateFormat( $claimGuid ) === false ) { + $this->dieUsage( 'Invalid claim guid' , 'invalid-guid' ); + } + + $claimGuidParser = WikibaseRepo::getDefaultInstance()->getClaimGuidParser(); + + return $claimGuidParser->parse( $claimGuid )->getEntityId()->getSerialization(); + } + /** * @see ApiBase::getAllowedParams * -- To view, visit https://gerrit.wikimedia.org/r/83781 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5718b339dead1058402979023dae060db9b125dd Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Jeroen De Dauw <jeroended...@gmail.com> Gerrit-Reviewer: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: jenkins-bot _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits