Addshore has uploaded a new change for review.
https://gerrit.wikimedia.org/r/94145
Change subject: Reduce ResultBuilder constructor to 2 usages
......................................................................
Reduce ResultBuilder constructor to 2 usages
Change-Id: I9dd063dda3873296b179edd03f2096bcc0f552c9
---
M repo/includes/api/ApiWikibase.php
M repo/includes/api/EditEntity.php
M repo/includes/api/LinkTitles.php
M repo/includes/api/SetAliases.php
M repo/includes/api/SetDescription.php
M repo/includes/api/SetLabel.php
M repo/includes/api/SetSiteLink.php
M repo/tests/phpunit/includes/api/ResultBuilderTest.php
8 files changed, 40 insertions(+), 47 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/45/94145/1
diff --git a/repo/includes/api/ApiWikibase.php
b/repo/includes/api/ApiWikibase.php
index f270808..33930e9 100644
--- a/repo/includes/api/ApiWikibase.php
+++ b/repo/includes/api/ApiWikibase.php
@@ -4,20 +4,13 @@
use Revision;
use Title;
-use User, Status, ApiBase;
-use Wikibase\Claims;
-use Wikibase\DataModel\SimpleSiteLink;
+use User;
+use Status;
+use ApiBase;
use Wikibase\EntityContent;
-use Wikibase\Lib\Serializers\ClaimsSerializer;
-use Wikibase\Lib\Serializers\EntitySerializer;
use Wikibase\Settings;
use Wikibase\EditEntity;
use Wikibase\Repo\WikibaseRepo;
-use Wikibase\Lib\Serializers\LabelSerializer;
-use Wikibase\Lib\Serializers\DescriptionSerializer;
-use Wikibase\Lib\Serializers\AliasSerializer;
-use Wikibase\Lib\Serializers\SiteLinkSerializer;
-use Wikibase\Lib\Serializers\SerializationOptions;
use Wikibase\Summary;
use WikiPage;
@@ -31,6 +24,15 @@
*/
abstract class ApiWikibase extends \ApiBase {
+ protected $resultBuilder;
+
+ public function __construct( $mainModule, $moduleName, $modulePrefix =
'' ) {
+ parent::__construct( $mainModule, $moduleName, $modulePrefix );
+
+ // todo inject serialization factory to result builder
+ $this->resultBuilder = new ResultBuilder( $this->getResult() );
+ }
+
/**
* Wrapper message for single errors
*
diff --git a/repo/includes/api/EditEntity.php b/repo/includes/api/EditEntity.php
index 046d8da..ee09e68 100644
--- a/repo/includes/api/EditEntity.php
+++ b/repo/includes/api/EditEntity.php
@@ -464,17 +464,15 @@
* @param Entity $entity
*/
protected function buildResult( Entity $entity ) {
- $builder = new ResultBuilder( $this->getResult() );
-
- $builder->addLabels( $entity->getLabels(), 'entity' );
- $builder->addDescriptions( $entity->getDescriptions(), 'entity'
);
- $builder->addAliases( $entity->getAllAliases(), 'entity' );
+ $this->resultBuilder->addLabels( $entity->getLabels(), 'entity'
);
+ $this->resultBuilder->addDescriptions(
$entity->getDescriptions(), 'entity' );
+ $this->resultBuilder->addAliases( $entity->getAllAliases(),
'entity' );
if ( $entity instanceof Item ) {
- $builder->addSiteLinks( $entity->getSimpleSiteLinks(),
'entity' );
+ $this->resultBuilder->addSiteLinks(
$entity->getSimpleSiteLinks(), 'entity' );
}
- $builder->addClaims( $entity->getClaims(), 'entity' );
+ $this->resultBuilder->addClaims( $entity->getClaims(), 'entity'
);
}
/**
diff --git a/repo/includes/api/LinkTitles.php b/repo/includes/api/LinkTitles.php
index 2d5b0a7..58648c9 100644
--- a/repo/includes/api/LinkTitles.php
+++ b/repo/includes/api/LinkTitles.php
@@ -2,12 +2,10 @@
namespace Wikibase\Api;
-use ApiBase, User, Status;
+use ApiBase, Status;
use Wikibase\DataModel\Entity\ItemId;
use Wikibase\DataModel\SimpleSiteLink;
use Wikibase\EntityContent;
-use Wikibase\EntityContentFactory;
-use Wikibase\Item;
use Wikibase\ItemContent;
use Wikibase\Repo\WikibaseRepo;
use Wikibase\StoreFactory;
@@ -109,8 +107,7 @@
$this->dieUsage( 'No common item detected, unable to
link titles' , 'no-common-item' );
}
- $builder = new ResultBuilder( $this->getResult() );
- $builder->addSiteLinks( $return, 'entity' );
+ $this->resultBuilder->addSiteLinks( $return, 'entity' );
$status = $this->getAttemptSaveStatus( $itemContent, $summary,
$flags );
$this->buildResult( $itemContent, $status );
wfProfileOut( __METHOD__ );
diff --git a/repo/includes/api/SetAliases.php b/repo/includes/api/SetAliases.php
index eab09e5..c933963 100644
--- a/repo/includes/api/SetAliases.php
+++ b/repo/includes/api/SetAliases.php
@@ -5,7 +5,7 @@
use Wikibase\ChangeOp\ChangeOp;
use Wikibase\ChangeOp\ChangeOpException;
use Wikibase\ChangeOp\ChangeOps;
-use ApiBase, User, Language;
+use ApiBase;
use Wikibase\EntityContent;
use Wikibase\Utils;
use Wikibase\ChangeOp\ChangeOpAliases;
@@ -91,9 +91,8 @@
}
$aliases = $entity->getAliases( $language );
- $builder = new ResultBuilder( $this->getResult() );
if ( count( $aliases ) ) {
- $builder->addAliases( array( $language => $aliases ),
'entity' );
+ $this->resultBuilder->addAliases( array( $language =>
$aliases ), 'entity' );
}
wfProfileOut( __METHOD__ );
diff --git a/repo/includes/api/SetDescription.php
b/repo/includes/api/SetDescription.php
index 01a3eea..19c2381 100644
--- a/repo/includes/api/SetDescription.php
+++ b/repo/includes/api/SetDescription.php
@@ -2,9 +2,7 @@
namespace Wikibase\Api;
-use ApiBase;
use Wikibase\EntityContent;
-use Wikibase\Utils;
use Wikibase\ChangeOp\ChangeOpDescription;
/**
@@ -44,8 +42,7 @@
$this->getChangeOp( $params )->apply( $entity, $summary );
$descriptions = array( $language => ( $entity->getDescription(
$language ) !== false ) ? $entity->getDescription( $language ) : "" );
- $builder = new ResultBuilder( $this->getResult() );
- $builder->addDescriptions( $descriptions, 'entity' );
+ $this->resultBuilder->addDescriptions( $descriptions, 'entity'
);
wfProfileOut( __METHOD__ );
return $summary;
diff --git a/repo/includes/api/SetLabel.php b/repo/includes/api/SetLabel.php
index 44a6586..282aacb 100644
--- a/repo/includes/api/SetLabel.php
+++ b/repo/includes/api/SetLabel.php
@@ -2,9 +2,7 @@
namespace Wikibase\Api;
-use ApiBase;
use Wikibase\EntityContent;
-use Wikibase\Utils;
use Wikibase\ChangeOp\ChangeOpLabel;
/**
@@ -44,8 +42,7 @@
$this->getChangeOp( $params )->apply( $entity, $summary );
$labels = array( $language => ( $entity->getLabel( $language )
!== false ) ? $entity->getLabel( $language ) : "" );
- $builder = new ResultBuilder( $this->getResult() );
- $builder->addLabels( $labels, 'entity' );
+ $this->resultBuilder->addLabels( $labels, 'entity' );
wfProfileOut( __METHOD__ );
return $summary;
diff --git a/repo/includes/api/SetSiteLink.php
b/repo/includes/api/SetSiteLink.php
index 3ee4a43..d54e84e 100644
--- a/repo/includes/api/SetSiteLink.php
+++ b/repo/includes/api/SetSiteLink.php
@@ -3,10 +3,9 @@
namespace Wikibase\Api;
use Wikibase\ChangeOp\ChangeOpSiteLink;
-use ApiBase, User;
+use ApiBase;
use Wikibase\EntityContent;
use Wikibase\ItemContent;
-use Wikibase\Utils;
/**
* API module to associate a page on a site with a Wikibase entity or remove
an already made such association.
@@ -61,7 +60,6 @@
$item = $entityContent->getItem();
$linksite = $this->stringNormalizer->trimToNFC(
$params['linksite'] );
- $builder = new ResultBuilder( $this->getResult() );
if (
isset( $params['linksite'] ) &&
( is_null( $params['linktitle'] ) ||
$params['linktitle'] === '' ) )
@@ -69,12 +67,12 @@
if ( $item->hasLinkToSite( $linksite ) ) {
$link = $item->getSimpleSiteLink( $linksite );
$this->getChangeOp( $params )->apply( $item,
$summary );
- $builder->addSiteLinks( array( $link ),
'entity', 'sitelinks', 'sitelink', array( 'removed' ) );
+ $this->resultBuilder->addSiteLinks( array(
$link ), 'entity', 'sitelinks', 'sitelink', array( 'removed' ) );
}
} else {
$this->getChangeOp( $params )->apply( $item, $summary );
$link = $item->getSimpleSiteLink( $linksite );
- $builder->addSiteLinks( array( $link ), 'entity',
'sitelinks', 'sitelink', array( 'url' ) );
+ $this->resultBuilder->addSiteLinks( array( $link ),
'entity', 'sitelinks', 'sitelink', array( 'url' ) );
}
wfProfileOut( __METHOD__ );
diff --git a/repo/tests/phpunit/includes/api/ResultBuilderTest.php
b/repo/tests/phpunit/includes/api/ResultBuilderTest.php
index f3d00c1..82207aa 100644
--- a/repo/tests/phpunit/includes/api/ResultBuilderTest.php
+++ b/repo/tests/phpunit/includes/api/ResultBuilderTest.php
@@ -25,8 +25,13 @@
return new ApiResult( $apiMain );
}
+ protected function getResultBuilder( $result ){
+ return new ResultBuilder( $result );
+ }
+
public function testCanConstruct(){
- $resultBuilder = new ResultBuilder( $this->getDefaultResult() );
+ $result = $this->getDefaultResult();
+ $resultBuilder = $this->getResultBuilder( $result );
$this->assertInstanceOf( '\Wikibase\Api\ResultBuilder',
$resultBuilder );
}
@@ -35,7 +40,7 @@
*/
public function testBadConstruction( $result ){
$this->setExpectedException( 'InvalidArgumentException' );
- new ResultBuilder( $result );
+ $this->getResultBuilder( $result );
}
public static function provideBadConstructionData() {
@@ -52,7 +57,7 @@
*/
public function testMarkResultSuccess( $param, $expected ){
$result = $this->getDefaultResult();
- $resultBuilder = new ResultBuilder( $result );
+ $resultBuilder = $this->getResultBuilder( $result );
$resultBuilder->markSuccess( $param );
$this->assertEquals( array( 'success' => $expected ),
$result->getData() );
}
@@ -67,7 +72,7 @@
public function testMarkResultSuccessExceptions( $param ){
$this->setExpectedException( 'InvalidArgumentException' );
$result = $this->getDefaultResult();
- $resultBuilder = new ResultBuilder( $result );
+ $resultBuilder = $this->getResultBuilder( $result );
$resultBuilder->markSuccess( $param );
}
@@ -96,7 +101,7 @@
),
);
- $resultBuilder = new ResultBuilder( $result );
+ $resultBuilder = $this->getResultBuilder( $result );
$resultBuilder->addLabels( $labels, $path );
$this->assertEquals( $expected, $result->getData() );
@@ -123,7 +128,7 @@
),
);
- $resultBuilder = new ResultBuilder( $result );
+ $resultBuilder = $this->getResultBuilder( $result );
$resultBuilder->addDescriptions( $descriptions, $path );
$this->assertEquals( $expected, $result->getData() );
@@ -162,7 +167,7 @@
),
);
- $resultBuilder = new ResultBuilder( $result );
+ $resultBuilder = $this->getResultBuilder( $result );
$resultBuilder->addAliases( $aliases, $path );
$this->assertEquals( $expected, $result->getData() );
@@ -191,7 +196,7 @@
),
);
- $resultBuilder = new ResultBuilder( $result );
+ $resultBuilder = $this->getResultBuilder( $result );
$resultBuilder->addSiteLinks( $sitelinks, $path );
$this->assertEquals( $expected, $result->getData() );
@@ -226,7 +231,7 @@
),
);
- $resultBuilder = new ResultBuilder( $result );
+ $resultBuilder = $this->getResultBuilder( $result );
$resultBuilder->addClaims( $claims, $path );
$this->assertEquals( $expected, $result->getData() );
--
To view, visit https://gerrit.wikimedia.org/r/94145
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I9dd063dda3873296b179edd03f2096bcc0f552c9
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