jenkins-bot has submitted this change and it was merged.

Change subject: Do not pass a whole list of claims to ClaimSummaryBuilder
......................................................................


Do not pass a whole list of claims to ClaimSummaryBuilder

Also removed some not needed internal complexity

Change-Id: I354063978be5c16bbc6b0eae46063100de44a18c
---
M repo/includes/ClaimSummaryBuilder.php
M repo/includes/api/SetClaim.php
M repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php
3 files changed, 20 insertions(+), 28 deletions(-)

Approvals:
  Thiemo Mättig (WMDE): Looks good to me, approved
  jenkins-bot: Verified



diff --git a/repo/includes/ClaimSummaryBuilder.php 
b/repo/includes/ClaimSummaryBuilder.php
index 162a801..87bf980 100644
--- a/repo/includes/ClaimSummaryBuilder.php
+++ b/repo/includes/ClaimSummaryBuilder.php
@@ -4,7 +4,6 @@
 
 use InvalidArgumentException;
 use Wikibase\DataModel\Claim\Claim;
-use Wikibase\DataModel\Claim\Claims;
 use Wikibase\Repo\Diff\ClaimDiffer;
 
 /**
@@ -52,20 +51,19 @@
         * constructs an edit-summary based upon that information and returns
         * a Summary object holding this edit-summary
         *
-        * @param Claims $existingClaims
+        * @param Claim|null $oldClaim
         * @param Claim $newClaim
         *
         * @return Summary
         */
-       public function buildClaimSummary( Claims $existingClaims, Claim 
$newClaim ) {
+       public function buildClaimSummary( Claim $oldClaim = null, Claim 
$newClaim ) {
                $guid = $newClaim->getGuid();
-               $oldClaim = $existingClaims->getClaimWithGuid( $guid );
 
                $summary = new Summary( $this->apiModuleName );
                $summary->addAutoCommentArgs( 1 ); // only one claim touched, 
so we're always having singular here
                $summaryArgs = $this->buildSummaryArgs(
-                       new Claims( array( $newClaim ) ),
-                       array( $guid )
+                       $newClaim,
+                       $guid
                );
                $summary->addAutoSummaryArgs( $summaryArgs );
 
@@ -105,27 +103,23 @@
         * Builds an associative array that can be used as summary arguments. 
It uses property IDs as
         * array keys and builds arrays of the main Snaks of all Claims given 
by the GUIDs.
         *
-        * @param Claims $claims
-        * @param string[] $guids
+        * @param Claim $newClaim
+        * @param string $guid
         *
         * @return array[] Associative array that contains property ID => array 
of main Snaks
         */
-       private function buildSummaryArgs( Claims $claims, array $guids ) {
+       private function buildSummaryArgs( Claim $newClaim, $guid ) {
                $pairs = array();
 
-               foreach ( $guids as $guid ) {
-                       $claim = $claims->getClaimWithGuid( $guid );
+               if ( $newClaim->getGuid() === $guid ) {
+                       $snak = $newClaim->getMainSnak();
+                       $key = $snak->getPropertyId()->getSerialization();
 
-                       if ( $claim !== null ) {
-                               $snak = $claim->getMainSnak();
-                               $key = 
$snak->getPropertyId()->getSerialization();
-
-                               if ( !array_key_exists( $key, $pairs ) ) {
-                                       $pairs[$key] = array();
-                               }
-
-                               $pairs[$key][] = $snak;
+                       if ( !array_key_exists( $key, $pairs ) ) {
+                               $pairs[$key] = array();
                        }
+
+                       $pairs[$key][] = $snak;
                }
 
                return array( $pairs );
diff --git a/repo/includes/api/SetClaim.php b/repo/includes/api/SetClaim.php
index a04b397..45bd7cb 100644
--- a/repo/includes/api/SetClaim.php
+++ b/repo/includes/api/SetClaim.php
@@ -104,8 +104,11 @@
                        $this->getModuleName(),
                        new ClaimDiffer( new OrderedListDiffer( new 
ComparableComparer() ) )
                );
+
+               $claims = new Claims( $entity->getClaims() );
+
                $summary = $claimSummaryBuilder->buildClaimSummary(
-                       new Claims( $entity->getClaims() ),
+                       $claims->getClaimWithGuid( $claim->getGuid() ),
                        $claim
                );
 
diff --git a/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php 
b/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php
index d32b29f..ffa6791 100644
--- a/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php
+++ b/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php
@@ -7,7 +7,6 @@
 use Diff\Differ\OrderedListDiffer;
 use Wikibase\ClaimSummaryBuilder;
 use Wikibase\DataModel\Claim\Claim;
-use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Reference;
 use Wikibase\DataModel\Snak\PropertyNoValueSnak;
 use Wikibase\DataModel\Snak\PropertySomeValueSnak;
@@ -134,11 +133,10 @@
                        new ClaimDiffer( new OrderedListDiffer( new 
ComparableComparer() ) )
                );
 
-               $claims = new Claims();
                $newClaims = $this->claimProvider();
 
                foreach ( $newClaims as $newClaim ) {
-                       $summary = $claimSummaryBuilder->buildClaimSummary( 
$claims, $newClaim );
+                       $summary = $claimSummaryBuilder->buildClaimSummary( 
null, $newClaim );
                        $this->assertInstanceOf( 'Wikibase\Summary', $summary, 
"this should return a Summary object" );
                        $this->assertEquals( 'wbsetclaim', 
$summary->getModuleName() );
                        $this->assertEquals( 'create', 
$summary->getActionName() );
@@ -158,10 +156,7 @@
                        new ClaimDiffer( new OrderedListDiffer( new 
ComparableComparer() ) )
                );
 
-               $claims = new Claims();
-               $claims->addClaim( $originalClaim );
-
-               $summary = $claimSummaryBuilder->buildClaimSummary( $claims, 
$modifiedClaim );
+               $summary = $claimSummaryBuilder->buildClaimSummary( 
$originalClaim, $modifiedClaim );
                $this->assertInstanceOf( 'Wikibase\Summary', $summary, "this 
should return a Summary object" );
                $this->assertEquals( 'wbsetclaim', $summary->getModuleName() );
                $this->assertEquals( $action, $summary->getActionName() );

-- 
To view, visit https://gerrit.wikimedia.org/r/208095
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I354063978be5c16bbc6b0eae46063100de44a18c
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Jeroen De Dauw <jeroended...@gmail.com>
Gerrit-Reviewer: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <thiemo.maet...@wikimedia.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to