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

Reply via email to