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

Reply via email to