Addshore has uploaded a new change for review. https://gerrit.wikimedia.org/r/232052
Change subject: Kill ModifyClaim base class ...................................................................... Kill ModifyClaim base class Change-Id: Ifc11926663c6d08014cb6cc3ebab49e24ae40444 --- M repo/includes/api/CreateClaim.php D repo/includes/api/ModifyClaim.php M repo/includes/api/RemoveClaims.php M repo/includes/api/RemoveQualifiers.php M repo/includes/api/RemoveReferences.php M repo/includes/api/SetClaim.php M repo/includes/api/SetClaimValue.php M repo/includes/api/SetQualifier.php M repo/includes/api/SetReference.php 9 files changed, 543 insertions(+), 186 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/52/232052/1 diff --git a/repo/includes/api/CreateClaim.php b/repo/includes/api/CreateClaim.php index 47099d6..68724c8 100644 --- a/repo/includes/api/CreateClaim.php +++ b/repo/includes/api/CreateClaim.php @@ -2,10 +2,16 @@ namespace Wikibase\Repo\Api; +use ApiBase; use ApiMain; use Wikibase\ChangeOp\ChangeOpMainSnak; use Wikibase\ChangeOp\StatementChangeOpFactory; +use Wikibase\DataModel\DeserializerFactory; +use Wikibase\DataModel\Entity\Entity; +use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Entity\PropertyId; +use Wikibase\DataModel\Services\Statement\StatementGuidParser; +use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Repo\WikibaseRepo; /** @@ -18,7 +24,12 @@ * @author Daniel Kinzler * @author Tobias Gritschacher < [email protected] > */ -class CreateClaim extends ModifyClaim { +class CreateClaim extends ApiBase { + + /** + * @var StatementModificationHelper + */ + private $modificationHelper; /** * @var StatementChangeOpFactory @@ -31,6 +42,21 @@ private $errorReporter; /** + * @var ResultBuilder + */ + private $resultBuilder; + + /** + * @var EntityLoadingHelper + */ + private $entityLoadingHelper; + + /** + * @var EntitySavingHelper + */ + private $entitySavingHelper; + + /** * @param ApiMain $mainModule * @param string $moduleName * @param string $modulePrefix @@ -40,7 +66,20 @@ $wikibaseRepo = WikibaseRepo::getDefaultInstance(); $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( $this->getContext() ); - $changeOpFactoryProvider = WikibaseRepo::getDefaultInstance()->getChangeOpFactoryProvider(); + + $this->modificationHelper = new StatementModificationHelper( + $wikibaseRepo->getSnakConstructionService(), + $wikibaseRepo->getEntityIdParser(), + $wikibaseRepo->getStatementGuidValidator(), + $apiHelperFactory->getErrorReporter( $this ) + ); + + $this->guidParser = $wikibaseRepo->getStatementGuidParser(); + $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); + $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); + $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); + + $changeOpFactoryProvider = $wikibaseRepo->getChangeOpFactoryProvider(); $this->errorReporter = $apiHelperFactory->getErrorReporter( $this ); $this->statementChangeOpFactory = $changeOpFactoryProvider->getStatementChangeOpFactory(); @@ -82,10 +121,10 @@ $statement = $entity->getStatements()->getFirstStatementWithGuid( $changeOp->getStatementGuid() ); - $status = $this->saveChanges( $entity, $summary ); - $this->getResultBuilder()->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); - $this->getResultBuilder()->markSuccess(); - $this->getResultBuilder()->addStatement( $statement ); + $status = $this->entitySavingHelper->attemptSaveEntity( $entity, $summary, EDIT_UPDATE ); + $this->resultBuilder->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); + $this->resultBuilder->markSuccess(); + $this->resultBuilder->addStatement( $statement ); } /** @@ -119,6 +158,16 @@ if ( isset( $params['value'] ) && json_decode( $params['value'], true ) === null ) { $this->errorReporter->dieError( 'Could not decode snak value', 'invalid-snak' ); } + } + + /** + * @see EntitySavingHelper::loadEntityRevision + */ + private function loadEntityRevision( + EntityId $entityId, + $revId = EntityRevisionLookup::LATEST_FROM_MASTER + ) { + return $this->entityLoadingHelper->loadEntityRevision( $entityId, $revId ); } /** @@ -159,6 +208,14 @@ self::PARAM_TYPE => 'text', self::PARAM_REQUIRED => false, ), + 'summary' => array( + ApiBase::PARAM_TYPE => 'string', + ), + 'token' => null, + 'baserevid' => array( + ApiBase::PARAM_TYPE => 'integer', + ), + 'bot' => false, ), parent::getAllowedParams() ); diff --git a/repo/includes/api/ModifyClaim.php b/repo/includes/api/ModifyClaim.php deleted file mode 100644 index 98341ab..0000000 --- a/repo/includes/api/ModifyClaim.php +++ /dev/null @@ -1,140 +0,0 @@ -<?php - -namespace Wikibase\Repo\Api; - -use ApiBase; -use ApiMain; -use Status; -use Wikibase\DataModel\Entity\Entity; -use Wikibase\DataModel\Entity\EntityId; -use Wikibase\DataModel\Services\Statement\StatementGuidParser; -use Wikibase\Lib\Store\EntityRevisionLookup; -use Wikibase\Repo\WikibaseRepo; -use Wikibase\Summary; - -/** - * Base class for modifying claims. - * - * @since 0.4 - * - * @licence GNU GPL v2+ - * @author Tobias Gritschacher < [email protected] > - * @author Jeroen De Dauw < [email protected] > - */ -abstract class ModifyClaim extends ApiBase { - - /** - * @since 0.4 - * - * @var StatementModificationHelper - */ - protected $modificationHelper; - - /** - * @since 0.5 - * - * @var StatementGuidParser - */ - protected $guidParser; - - /** - * @var ResultBuilder - */ - private $resultBuilder; - - /** - * @var EntityLoadingHelper - */ - private $entityLoadingHelper; - - /** - * @var EntitySavingHelper - */ - private $entitySavingHelper; - - /** - * @param ApiMain $mainModule - * @param string $moduleName - * @param string $modulePrefix - * - * @see ApiBase::__construct - */ - public function __construct( ApiMain $mainModule, $moduleName, $modulePrefix = '' ) { - parent::__construct( $mainModule, $moduleName, $modulePrefix ); - - $wikibaseRepo = WikibaseRepo::getDefaultInstance(); - $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( $this->getContext() ); - - $this->modificationHelper = new StatementModificationHelper( - $wikibaseRepo->getSnakConstructionService(), - $wikibaseRepo->getEntityIdParser(), - $wikibaseRepo->getStatementGuidValidator(), - $apiHelperFactory->getErrorReporter( $this ) - ); - - $this->guidParser = WikibaseRepo::getDefaultInstance()->getStatementGuidParser(); - $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); - $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); - $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); - } - - /** - * @see EntitySavingHelper::attemptSaveEntity - */ - protected function attemptSaveEntity( Entity $entity, $summary, $flags = 0 ) { - return $this->entitySavingHelper->attemptSaveEntity( $entity, $summary, $flags ); - } - - /** - * @return ResultBuilder - */ - protected function getResultBuilder() { - return $this->resultBuilder; - } - - /** - * @see EntitySavingHelper::loadEntityRevision - */ - protected function loadEntityRevision( - EntityId $entityId, - $revId = EntityRevisionLookup::LATEST_FROM_MASTER - ) { - return $this->entityLoadingHelper->loadEntityRevision( $entityId, $revId ); - } - - /** - * @since 0.4 - * - * @param Entity $entity - * @param Summary $summary - * - * @returns Status - */ - public function saveChanges( Entity $entity, Summary $summary ) { - return $this->attemptSaveEntity( - $entity, - $summary, - EDIT_UPDATE - ); - } - - /** - * @see ApiBase::getAllowedParams - */ - protected function getAllowedParams() { - return array_merge( - parent::getAllowedParams(), - array( - 'summary' => array( - self::PARAM_TYPE => 'string', - ), - 'token' => null, - 'baserevid' => array( - self::PARAM_TYPE => 'integer', - ), - 'bot' => false, - ) - ); - } - -} diff --git a/repo/includes/api/RemoveClaims.php b/repo/includes/api/RemoveClaims.php index e681d0a..7804d45 100644 --- a/repo/includes/api/RemoveClaims.php +++ b/repo/includes/api/RemoveClaims.php @@ -2,15 +2,19 @@ namespace Wikibase\Repo\Api; +use ApiBase; use ApiMain; use Wikibase\ChangeOp\ChangeOp; use Wikibase\ChangeOp\ChangeOpException; use Wikibase\ChangeOp\ChangeOps; use Wikibase\ChangeOp\StatementChangeOpFactory; +use Wikibase\DataModel\Entity\Entity; use Wikibase\DataModel\Entity\EntityId; +use Wikibase\DataModel\Services\Statement\StatementGuidParser; use Wikibase\DataModel\Statement\Statement; use Wikibase\DataModel\Statement\StatementList; use Wikibase\DataModel\Statement\StatementListProvider; +use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Repo\WikibaseRepo; /** @@ -22,7 +26,17 @@ * @author Jeroen De Dauw < [email protected] > * @author Tobias Gritschacher < [email protected] > */ -class RemoveClaims extends ModifyClaim { +class RemoveClaims extends ApiBase { + + /** + * @var StatementModificationHelper + */ + private $modificationHelper; + + /** + * @var StatementGuidParser + */ + private $guidParser; /** * @var StatementChangeOpFactory @@ -35,6 +49,21 @@ private $errorReporter; /** + * @var ResultBuilder + */ + private $resultBuilder; + + /** + * @var EntityLoadingHelper + */ + private $entityLoadingHelper; + + /** + * @var EntitySavingHelper + */ + private $entitySavingHelper; + + /** * @param ApiMain $mainModule * @param string $moduleName * @param string $modulePrefix @@ -44,6 +73,19 @@ $wikibaseRepo = WikibaseRepo::getDefaultInstance(); $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( $this->getContext() ); + + $this->modificationHelper = new StatementModificationHelper( + $wikibaseRepo->getSnakConstructionService(), + $wikibaseRepo->getEntityIdParser(), + $wikibaseRepo->getStatementGuidValidator(), + $apiHelperFactory->getErrorReporter( $this ) + ); + + $this->guidParser = $wikibaseRepo->getStatementGuidParser(); + $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); + $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); + $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); + $changeOpFactoryProvider = $wikibaseRepo->getChangeOpFactoryProvider(); $this->errorReporter = $apiHelperFactory->getErrorReporter( $this ); @@ -80,10 +122,19 @@ $this->errorReporter->dieException( $e, 'failed-save' ); } - $status = $this->saveChanges( $entity, $summary ); - $this->getResultBuilder()->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); - $this->getResultBuilder()->markSuccess(); - $this->getResultBuilder()->setList( null, 'claims', $params['claim'], 'claim' ); + $status = $this->entitySavingHelper->attemptSaveEntity( $entity, $summary, EDIT_UPDATE ); + $this->resultBuilder->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); + $this->resultBuilder->markSuccess(); + $this->resultBuilder->setList( null, 'claims', $params['claim'], 'claim' ); + } + /** + * @see EntitySavingHelper::loadEntityRevision + */ + private function loadEntityRevision( + EntityId $entityId, + $revId = EntityRevisionLookup::LATEST_FROM_MASTER + ) { + return $this->entityLoadingHelper->loadEntityRevision( $entityId, $revId ); } /** @@ -121,7 +172,10 @@ * @param StatementList $statements * @param string[] $requiredGuids */ - private function assertStatementListContainsGuids( StatementList $statements, array $requiredGuids ) { + private function assertStatementListContainsGuids( + StatementList $statements, + array $requiredGuids + ) { $existingGuids = array(); /** @var Statement $statement */ @@ -184,6 +238,14 @@ self::PARAM_ISMULTI => true, self::PARAM_REQUIRED => true, ), + 'summary' => array( + ApiBase::PARAM_TYPE => 'string', + ), + 'token' => null, + 'baserevid' => array( + ApiBase::PARAM_TYPE => 'integer', + ), + 'bot' => false, ), parent::getAllowedParams() ); diff --git a/repo/includes/api/RemoveQualifiers.php b/repo/includes/api/RemoveQualifiers.php index d7c18a6..2682048 100644 --- a/repo/includes/api/RemoveQualifiers.php +++ b/repo/includes/api/RemoveQualifiers.php @@ -2,12 +2,18 @@ namespace Wikibase\Repo\Api; +use ApiBase; use ApiMain; use Wikibase\ChangeOp\ChangeOp; use Wikibase\ChangeOp\ChangeOpException; use Wikibase\ChangeOp\ChangeOps; use Wikibase\ChangeOp\StatementChangeOpFactory; +use Wikibase\DataModel\DeserializerFactory; +use Wikibase\DataModel\Entity\Entity; +use Wikibase\DataModel\Entity\EntityId; +use Wikibase\DataModel\Services\Statement\StatementGuidParser; use Wikibase\DataModel\Statement\Statement; +use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Repo\WikibaseRepo; /** @@ -19,7 +25,17 @@ * @author Jeroen De Dauw < [email protected] > * @author Tobias Gritschacher < [email protected] > */ -class RemoveQualifiers extends ModifyClaim { +class RemoveQualifiers extends ApiBase { + + /** + * @var StatementModificationHelper + */ + private $statementModificationHelper; + + /** + * @var StatementGuidParser + */ + private $guidParser; /** * @var StatementChangeOpFactory @@ -32,6 +48,21 @@ private $errorReporter; /** + * @var ResultBuilder + */ + private $resultBuilder; + + /** + * @var EntityLoadingHelper + */ + private $entityLoadingHelper; + + /** + * @var EntitySavingHelper + */ + private $entitySavingHelper; + + /** * @param ApiMain $mainModule * @param string $moduleName * @param string $modulePrefix @@ -41,7 +72,20 @@ $wikibaseRepo = WikibaseRepo::getDefaultInstance(); $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( $this->getContext() ); - $changeOpFactoryProvider = WikibaseRepo::getDefaultInstance()->getChangeOpFactoryProvider(); + + $this->modificationHelper = new StatementModificationHelper( + $wikibaseRepo->getSnakConstructionService(), + $wikibaseRepo->getEntityIdParser(), + $wikibaseRepo->getStatementGuidValidator(), + $apiHelperFactory->getErrorReporter( $this ) + ); + + $this->guidParser = $wikibaseRepo->getStatementGuidParser(); + $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); + $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); + $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); + + $changeOpFactoryProvider = $wikibaseRepo->getChangeOpFactoryProvider(); $this->errorReporter = $apiHelperFactory->getErrorReporter( $this ); $this->statementChangeOpFactory = $changeOpFactoryProvider->getStatementChangeOpFactory(); @@ -64,9 +108,9 @@ $entityRevision = $this->loadEntityRevision( $entityId ); } $entity = $entityRevision->getEntity(); - $summary = $this->modificationHelper->createSummary( $params, $this ); + $summary = $this->statementModificationHelper->createSummary( $params, $this ); - $claim = $this->modificationHelper->getStatementFromEntity( $guid, $entity ); + $claim = $this->statementModificationHelper->getStatementFromEntity( $guid, $entity ); $qualifierHashes = $this->getQualifierHashesFromParams( $params, $claim ); @@ -79,18 +123,28 @@ $this->errorReporter->dieException( $e, 'failed-save' ); } - $status = $this->saveChanges( $entity, $summary ); - $this->getResultBuilder()->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); - $this->getResultBuilder()->markSuccess(); + $status = $this->entitySavingHelper->attemptSaveEntity( $entity, $summary, EDIT_UPDATE ); + $this->resultBuilder->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); + $this->resultBuilder->markSuccess(); } /** * Check the provided parameters */ private function validateParameters( array $params ) { - if ( !( $this->modificationHelper->validateStatementGuid( $params['claim'] ) ) ) { + if ( !( $this->statementModificationHelper->validateStatementGuid( $params['claim'] ) ) ) { $this->errorReporter->dieError( 'Invalid claim guid', 'invalid-guid' ); } + } + + /** + * @see EntitySavingHelper::loadEntityRevision + */ + private function loadEntityRevision( + EntityId $entityId, + $revId = EntityRevisionLookup::LATEST_FROM_MASTER + ) { + return $this->entityLoadingHelper->loadEntityRevision( $entityId, $revId ); } /** @@ -103,7 +157,10 @@ $changeOps = array(); foreach ( $qualifierHashes as $qualifierHash ) { - $changeOps[] = $this->statementChangeOpFactory->newRemoveQualifierOp( $claimGuid, $qualifierHash ); + $changeOps[] = $this->statementChangeOpFactory->newRemoveQualifierOp( + $claimGuid, + $qualifierHash + ); } return $changeOps; @@ -160,6 +217,14 @@ self::PARAM_REQUIRED => true, self::PARAM_ISMULTI => true, ), + 'summary' => array( + ApiBase::PARAM_TYPE => 'string', + ), + 'token' => null, + 'baserevid' => array( + ApiBase::PARAM_TYPE => 'integer', + ), + 'bot' => false, ), parent::getAllowedParams() ); diff --git a/repo/includes/api/RemoveReferences.php b/repo/includes/api/RemoveReferences.php index 2c08640..0f582d9 100644 --- a/repo/includes/api/RemoveReferences.php +++ b/repo/includes/api/RemoveReferences.php @@ -2,12 +2,18 @@ namespace Wikibase\Repo\Api; +use ApiBase; use ApiMain; use Wikibase\ChangeOp\ChangeOp; use Wikibase\ChangeOp\ChangeOpException; use Wikibase\ChangeOp\ChangeOps; use Wikibase\ChangeOp\StatementChangeOpFactory; +use Wikibase\DataModel\DeserializerFactory; +use Wikibase\DataModel\Entity\Entity; +use Wikibase\DataModel\Entity\EntityId; +use Wikibase\DataModel\Services\Statement\StatementGuidParser; use Wikibase\DataModel\Statement\Statement; +use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Repo\WikibaseRepo; /** @@ -19,7 +25,17 @@ * @author Jeroen De Dauw < [email protected] > * @author Tobias Gritschacher < [email protected] > */ -class RemoveReferences extends ModifyClaim { +class RemoveReferences extends ApiBase { + + /** + * @var StatementModificationHelper + */ + private $modificationHelper; + + /** + * @var StatementGuidParser + */ + private $guidParser; /** * @var StatementChangeOpFactory @@ -32,6 +48,21 @@ private $errorReporter; /** + * @var ResultBuilder + */ + private $resultBuilder; + + /** + * @var EntityLoadingHelper + */ + private $entityLoadingHelper; + + /** + * @var EntitySavingHelper + */ + private $entitySavingHelper; + + /** * @param ApiMain $mainModule * @param string $moduleName * @param string $modulePrefix @@ -41,7 +72,20 @@ $wikibaseRepo = WikibaseRepo::getDefaultInstance(); $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( $this->getContext() ); - $changeOpFactoryProvider = WikibaseRepo::getDefaultInstance()->getChangeOpFactoryProvider(); + + $this->modificationHelper = new StatementModificationHelper( + $wikibaseRepo->getSnakConstructionService(), + $wikibaseRepo->getEntityIdParser(), + $wikibaseRepo->getStatementGuidValidator(), + $apiHelperFactory->getErrorReporter( $this ) + ); + + $this->guidParser = $wikibaseRepo->getStatementGuidParser(); + $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); + $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); + $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); + + $changeOpFactoryProvider = $wikibaseRepo->getChangeOpFactoryProvider(); $this->errorReporter = $apiHelperFactory->getErrorReporter( $this ); $this->statementChangeOpFactory = $changeOpFactoryProvider->getStatementChangeOpFactory(); @@ -86,9 +130,9 @@ $this->errorReporter->dieException( $e, 'failed-save' ); } - $status = $this->saveChanges( $entity, $summary ); - $this->getResultBuilder()->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); - $this->getResultBuilder()->markSuccess(); + $status = $this->entitySavingHelper->attemptSaveEntity( $entity, $summary, EDIT_UPDATE ); + $this->resultBuilder->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); + $this->resultBuilder->markSuccess(); } /** @@ -137,6 +181,16 @@ } /** + * @see EntitySavingHelper::loadEntityRevision + */ + protected function loadEntityRevision( + EntityId $entityId, + $revId = EntityRevisionLookup::LATEST_FROM_MASTER + ) { + return $this->entityLoadingHelper->loadEntityRevision( $entityId, $revId ); + } + + /** * @see ApiBase::isWriteMode */ public function isWriteMode() { @@ -167,6 +221,14 @@ self::PARAM_REQUIRED => true, self::PARAM_ISMULTI => true, ), + 'summary' => array( + ApiBase::PARAM_TYPE => 'string', + ), + 'token' => null, + 'baserevid' => array( + ApiBase::PARAM_TYPE => 'integer', + ), + 'bot' => false, ), parent::getAllowedParams() ); diff --git a/repo/includes/api/SetClaim.php b/repo/includes/api/SetClaim.php index a63ae57..361c18c 100644 --- a/repo/includes/api/SetClaim.php +++ b/repo/includes/api/SetClaim.php @@ -2,6 +2,7 @@ namespace Wikibase\Repo\Api; +use ApiBase; use ApiMain; use DataValues\IllegalValueException; use Deserializers\Deserializer; @@ -14,9 +15,12 @@ use Wikibase\ChangeOp\StatementChangeOpFactory; use Wikibase\ClaimSummaryBuilder; use Wikibase\DataModel\Entity\Entity; +use Wikibase\DataModel\Entity\EntityId; +use Wikibase\DataModel\Services\Statement\StatementGuidParser; use Wikibase\DataModel\Services\Statement\StatementGuidParsingException; use Wikibase\DataModel\Statement\Statement; use Wikibase\DataModel\Statement\StatementListProvider; +use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Repo\Diff\ClaimDiffer; use Wikibase\Repo\WikibaseRepo; use Wikibase\Summary; @@ -30,7 +34,17 @@ * @author Tobias Gritschacher < [email protected] > * @author Adam Shorland */ -class SetClaim extends ModifyClaim { +class SetClaim extends ApiBase { + + /** + * @var StatementModificationHelper + */ + private $modificationHelper; + + /** + * @var StatementGuidParser + */ + private $guidParser; /** * @var StatementChangeOpFactory @@ -48,6 +62,21 @@ private $statementDeserializer; /** + * @var ResultBuilder + */ + private $resultBuilder; + + /** + * @var EntityLoadingHelper + */ + private $entityLoadingHelper; + + /** + * @var EntitySavingHelper + */ + private $entitySavingHelper; + + /** * @param ApiMain $mainModule * @param string $moduleName * @param string $modulePrefix @@ -57,6 +86,19 @@ $wikibaseRepo = WikibaseRepo::getDefaultInstance(); $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( $this->getContext() ); + + $this->modificationHelper = new StatementModificationHelper( + $wikibaseRepo->getSnakConstructionService(), + $wikibaseRepo->getEntityIdParser(), + $wikibaseRepo->getStatementGuidValidator(), + $apiHelperFactory->getErrorReporter( $this ) + ); + + $this->guidParser = $wikibaseRepo->getStatementGuidParser(); + $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); + $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); + $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); + $changeOpFactoryProvider = $wikibaseRepo->getChangeOpFactoryProvider(); $this->statementDeserializer = $wikibaseRepo->getStatementDeserializer(); @@ -101,10 +143,10 @@ $this->modificationHelper->applyChangeOp( $changeop, $entity, $summary ); - $status = $this->saveChanges( $entity, $summary ); - $this->getResultBuilder()->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); - $this->getResultBuilder()->markSuccess(); - $this->getResultBuilder()->addStatement( $claim ); + $status = $this->entitySavingHelper->attemptSaveEntity( $entity, $summary, EDIT_UPDATE ); + $this->resultBuilder->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); + $this->resultBuilder->markSuccess(); + $this->resultBuilder->addStatement( $claim ); } /** @@ -176,6 +218,16 @@ } /** + * @see EntitySavingHelper::loadEntityRevision + */ + private function loadEntityRevision( + EntityId $entityId, + $revId = EntityRevisionLookup::LATEST_FROM_MASTER + ) { + return $this->entityLoadingHelper->loadEntityRevision( $entityId, $revId ); + } + + /** * @see ApiBase::isWriteMode */ public function isWriteMode() { @@ -204,6 +256,14 @@ 'index' => array( self::PARAM_TYPE => 'integer', ), + 'summary' => array( + ApiBase::PARAM_TYPE => 'string', + ), + 'token' => null, + 'baserevid' => array( + ApiBase::PARAM_TYPE => 'integer', + ), + 'bot' => false, ), parent::getAllowedParams() ); diff --git a/repo/includes/api/SetClaimValue.php b/repo/includes/api/SetClaimValue.php index 64921ea..59f74e0 100644 --- a/repo/includes/api/SetClaimValue.php +++ b/repo/includes/api/SetClaimValue.php @@ -2,8 +2,14 @@ namespace Wikibase\Repo\Api; +use ApiBase; use ApiMain; use Wikibase\ChangeOp\StatementChangeOpFactory; +use Wikibase\DataModel\DeserializerFactory; +use Wikibase\DataModel\Entity\Entity; +use Wikibase\DataModel\Entity\EntityId; +use Wikibase\DataModel\Services\Statement\StatementGuidParser; +use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Repo\WikibaseRepo; /** @@ -15,7 +21,17 @@ * @author Jeroen De Dauw < [email protected] > * @author Tobias Gritschacher < [email protected] > */ -class SetClaimValue extends ModifyClaim { +class SetClaimValue extends ApiBase { + + /** + * @var StatementModificationHelper + */ + private $modificationHelper; + + /** + * @var StatementGuidParser + */ + private $guidParser; /** * @var StatementChangeOpFactory @@ -28,6 +44,21 @@ private $errorReporter; /** + * @var ResultBuilder + */ + private $resultBuilder; + + /** + * @var EntityLoadingHelper + */ + private $entityLoadingHelper; + + /** + * @var EntitySavingHelper + */ + private $entitySavingHelper; + + /** * @param ApiMain $mainModule * @param string $moduleName * @param string $modulePrefix @@ -37,6 +68,19 @@ $wikibaseRepo = WikibaseRepo::getDefaultInstance(); $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( $this->getContext() ); + + $this->modificationHelper = new StatementModificationHelper( + $wikibaseRepo->getSnakConstructionService(), + $wikibaseRepo->getEntityIdParser(), + $wikibaseRepo->getStatementGuidValidator(), + $apiHelperFactory->getErrorReporter( $this ) + ); + + $this->guidParser = $wikibaseRepo->getStatementGuidParser(); + $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); + $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); + $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); + $changeOpFactoryProvider = $wikibaseRepo->getChangeOpFactoryProvider(); $this->errorReporter = $apiHelperFactory->getErrorReporter( $this ); @@ -65,7 +109,10 @@ $claim = $this->modificationHelper->getStatementFromEntity( $guid, $entity ); - $snak = $this->modificationHelper->getSnakInstance( $params, $claim->getMainSnak()->getPropertyId() ); + $snak = $this->modificationHelper->getSnakInstance( + $params, + $claim->getMainSnak()->getPropertyId() + ); $summary = $this->modificationHelper->createSummary( $params, $this ); @@ -73,10 +120,20 @@ $this->modificationHelper->applyChangeOp( $changeOp, $entity, $summary ); - $status = $this->saveChanges( $entity, $summary ); - $this->getResultBuilder()->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); - $this->getResultBuilder()->markSuccess(); - $this->getResultBuilder()->addStatement( $claim ); + $status = $this->entitySavingHelper->attemptSaveEntity( $entity, $summary, EDIT_UPDATE ); + $this->resultBuilder->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); + $this->resultBuilder->markSuccess(); + $this->resultBuilder->addStatement( $claim ); + } + + /** + * @see EntitySavingHelper::loadEntityRevision + */ + private function loadEntityRevision( + EntityId $entityId, + $revId = EntityRevisionLookup::LATEST_FROM_MASTER + ) { + return $this->entityLoadingHelper->loadEntityRevision( $entityId, $revId ); } /** @@ -122,6 +179,14 @@ self::PARAM_TYPE => array( 'value', 'novalue', 'somevalue' ), self::PARAM_REQUIRED => true, ), + 'summary' => array( + ApiBase::PARAM_TYPE => 'string', + ), + 'token' => null, + 'baserevid' => array( + ApiBase::PARAM_TYPE => 'integer', + ), + 'bot' => false, ), parent::getAllowedParams() ); diff --git a/repo/includes/api/SetQualifier.php b/repo/includes/api/SetQualifier.php index c7825bb..a99310c 100644 --- a/repo/includes/api/SetQualifier.php +++ b/repo/includes/api/SetQualifier.php @@ -2,11 +2,17 @@ namespace Wikibase\Repo\Api; +use ApiBase; use ApiMain; use Wikibase\ChangeOp\ChangeOpQualifier; use Wikibase\ChangeOp\StatementChangeOpFactory; +use Wikibase\DataModel\DeserializerFactory; +use Wikibase\DataModel\Entity\Entity; +use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Entity\PropertyId; +use Wikibase\DataModel\Services\Statement\StatementGuidParser; use Wikibase\DataModel\Statement\Statement; +use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Repo\WikibaseRepo; /** @@ -19,7 +25,17 @@ * @author Daniel Kinzler * @author Tobias Gritschacher < [email protected] > */ -class SetQualifier extends ModifyClaim { +class SetQualifier extends ApiBase { + + /** + * @var StatementModificationHelper + */ + private $modificationHelper; + + /** + * @var StatementGuidParser + */ + private $guidParser; /** * @var StatementChangeOpFactory @@ -32,6 +48,21 @@ private $errorReporter; /** + * @var ResultBuilder + */ + private $resultBuilder; + + /** + * @var EntityLoadingHelper + */ + private $entityLoadingHelper; + + /** + * @var EntitySavingHelper + */ + private $entitySavingHelper; + + /** * @param ApiMain $mainModule * @param string $moduleName * @param string $modulePrefix @@ -41,6 +72,19 @@ $wikibaseRepo = WikibaseRepo::getDefaultInstance(); $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( $this->getContext() ); + + $this->modificationHelper = new StatementModificationHelper( + $wikibaseRepo->getSnakConstructionService(), + $wikibaseRepo->getEntityIdParser(), + $wikibaseRepo->getStatementGuidValidator(), + $apiHelperFactory->getErrorReporter( $this ) + ); + + $this->guidParser = $wikibaseRepo->getStatementGuidParser(); + $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); + $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); + $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); + $changeOpFactoryProvider = $wikibaseRepo->getChangeOpFactoryProvider(); $this->errorReporter = $apiHelperFactory->getErrorReporter( $this ); @@ -75,10 +119,10 @@ $changeOp = $this->getChangeOp(); $this->modificationHelper->applyChangeOp( $changeOp, $entity, $summary ); - $status = $this->saveChanges( $entity, $summary ); - $this->getResultBuilder()->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); - $this->getResultBuilder()->markSuccess(); - $this->getResultBuilder()->addStatement( $statement ); + $status = $this->entitySavingHelper->attemptSaveEntity( $entity, $summary, EDIT_UPDATE ); + $this->resultBuilder->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); + $this->resultBuilder->markSuccess(); + $this->resultBuilder->addStatement( $statement ); } /** @@ -106,7 +150,10 @@ } } - if ( isset( $params['snaktype'] ) && $params['snaktype'] === 'value' && !isset( $params['value'] ) ) { + if ( isset( $params['snaktype'] ) && + $params['snaktype'] === 'value' && + !isset( $params['value'] ) + ) { $this->errorReporter->dieError( 'When setting a qualifier that is a PropertyValueSnak, the value needs to be provided', 'param-missing' @@ -125,6 +172,16 @@ 'no-such-qualifier' ); } + } + + /** + * @see EntitySavingHelper::loadEntityRevision + */ + private function loadEntityRevision( + EntityId $entityId, + $revId = EntityRevisionLookup::LATEST_FROM_MASTER + ) { + return $this->entityLoadingHelper->loadEntityRevision( $entityId, $revId ); } /** @@ -192,6 +249,14 @@ self::PARAM_TYPE => 'string', self::PARAM_REQUIRED => false, ), + 'summary' => array( + ApiBase::PARAM_TYPE => 'string', + ), + 'token' => null, + 'baserevid' => array( + ApiBase::PARAM_TYPE => 'integer', + ), + 'bot' => false, ), parent::getAllowedParams() ); diff --git a/repo/includes/api/SetReference.php b/repo/includes/api/SetReference.php index fe80095..9d765c0 100644 --- a/repo/includes/api/SetReference.php +++ b/repo/includes/api/SetReference.php @@ -2,14 +2,19 @@ namespace Wikibase\Repo\Api; +use ApiBase; use ApiMain; use Deserializers\Exceptions\DeserializationException; use Wikibase\ChangeOp\ChangeOpReference; use Wikibase\ChangeOp\StatementChangeOpFactory; use Wikibase\DataModel\DeserializerFactory; +use Wikibase\DataModel\Entity\Entity; +use Wikibase\DataModel\Entity\EntityId; use Wikibase\DataModel\Reference; +use Wikibase\DataModel\Services\Statement\StatementGuidParser; use Wikibase\DataModel\Snak\SnakList; use Wikibase\DataModel\Statement\Statement; +use Wikibase\Lib\Store\EntityRevisionLookup; use Wikibase\Repo\WikibaseRepo; /** @@ -21,7 +26,17 @@ * @author Jeroen De Dauw < [email protected] > * @author Tobias Gritschacher < [email protected] > */ -class SetReference extends ModifyClaim { +class SetReference extends ApiBase { + + /** + * @var StatementModificationHelper + */ + private $modificationHelper; + + /** + * @var StatementGuidParser + */ + private $guidParser; /** * @var StatementChangeOpFactory @@ -39,6 +54,21 @@ private $deserializerFactory; /** + * @var ResultBuilder + */ + private $resultBuilder; + + /** + * @var EntityLoadingHelper + */ + private $entityLoadingHelper; + + /** + * @var EntitySavingHelper + */ + private $entitySavingHelper; + + /** * @param ApiMain $mainModule * @param string $moduleName * @param string $modulePrefix @@ -48,6 +78,19 @@ $wikibaseRepo = WikibaseRepo::getDefaultInstance(); $apiHelperFactory = $wikibaseRepo->getApiHelperFactory( $this->getContext() ); + + $this->modificationHelper = new StatementModificationHelper( + $wikibaseRepo->getSnakConstructionService(), + $wikibaseRepo->getEntityIdParser(), + $wikibaseRepo->getStatementGuidValidator(), + $apiHelperFactory->getErrorReporter( $this ) + ); + + $this->guidParser = $wikibaseRepo->getStatementGuidParser(); + $this->resultBuilder = $apiHelperFactory->getResultBuilder( $this ); + $this->entityLoadingHelper = $apiHelperFactory->getEntityLoadingHelper( $this ); + $this->entitySavingHelper = $apiHelperFactory->getEntitySavingHelper( $this ); + $changeOpFactoryProvider = $wikibaseRepo->getChangeOpFactoryProvider(); $this->statementChangeOpFactory = $changeOpFactoryProvider->getStatementChangeOpFactory(); @@ -106,8 +149,8 @@ $changeOp = $this->getChangeOp( $newReference ); $this->modificationHelper->applyChangeOp( $changeOp, $entity, $summary ); - $status = $this->saveChanges( $entity, $summary ); - $resultBuilder = $this->getResultBuilder(); + $status = $this->entitySavingHelper->attemptSaveEntity( $entity, $summary, EDIT_UPDATE ); + $resultBuilder = $this->resultBuilder; $resultBuilder->addRevisionIdFromStatusToResult( $status, 'pageinfo' ); $resultBuilder->markSuccess(); $resultBuilder->addReference( $newReference ); @@ -166,6 +209,16 @@ } /** + * @see EntitySavingHelper::loadEntityRevision + */ + protected function loadEntityRevision( + EntityId $entityId, + $revId = EntityRevisionLookup::LATEST_FROM_MASTER + ) { + return $this->entityLoadingHelper->loadEntityRevision( $entityId, $revId ); + } + + /** * @see ApiBase::isWriteMode */ public function isWriteMode() { @@ -204,6 +257,14 @@ 'index' => array( self::PARAM_TYPE => 'integer', ), + 'summary' => array( + ApiBase::PARAM_TYPE => 'string', + ), + 'token' => null, + 'baserevid' => array( + ApiBase::PARAM_TYPE => 'integer', + ), + 'bot' => false, ), parent::getAllowedParams() ); -- To view, visit https://gerrit.wikimedia.org/r/232052 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ifc11926663c6d08014cb6cc3ebab49e24ae40444 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Addshore <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
