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

Reply via email to