Tobias Gritschacher has uploaded a new change for review.
https://gerrit.wikimedia.org/r/94137
Change subject: Fix comparison of objects in ClaimDiffer
......................................................................
Fix comparison of objects in ClaimDiffer
ClaimDiffer was detecting changes in the mainsnak even if nothing was
changed. This was due to a wrong comparison method used for comparing snak
objects.
Change-Id: I2f3273596731276770c66695ac839aa6912f133d
---
M lib/includes/ClaimDiffer.php
1 file changed, 13 insertions(+), 12 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/37/94137/1
diff --git a/lib/includes/ClaimDiffer.php b/lib/includes/ClaimDiffer.php
index 5b42066..70f993e 100644
--- a/lib/includes/ClaimDiffer.php
+++ b/lib/includes/ClaimDiffer.php
@@ -5,6 +5,7 @@
use Diff\Diff;
use Diff\Differ;
use Diff\DiffOpChange;
+use Wikibase\DataModel\Internal\ObjectComparer;
/**
* Class for generating a ClaimDifference given two claims.
@@ -69,7 +70,9 @@
private function diffMainSnaks( $oldClaim, $newClaim ) {
$oldClaimMainSnak = $oldClaim === null ? null :
$oldClaim->getMainSnak();
$newClaimMainSnak = $newClaim === null ? null :
$newClaim->getMainSnak();
- if( $oldClaimMainSnak !== $newClaimMainSnak ){
+
+ $mainSnakComparer = new ObjectComparer();
+ if( !$mainSnakComparer->dataEquals( $oldClaimMainSnak,
$newClaimMainSnak ) ) {
return new DiffOpChange( $oldClaimMainSnak,
$newClaimMainSnak );
}
return null;
@@ -79,15 +82,13 @@
* @param Claim $oldClaim
* @param Claim $newClaim
*
- * @return DiffOpChange|null
+ * @return Diff
*/
private function diffQualifiers( $oldClaim, $newClaim ) {
$oldQualifiers = $oldClaim === null ? array() :
iterator_to_array( $oldClaim->getQualifiers() );
$newQualifiers = $newClaim === null ? array() :
iterator_to_array( $newClaim->getQualifiers() );
- if( $oldQualifiers !== $newQualifiers ){
- return new Diff( $this->listDiffer->doDiff(
$oldQualifiers, $newQualifiers ), false );
- }
- return null;
+
+ return new Diff( $this->listDiffer->doDiff( $oldQualifiers,
$newQualifiers ), false );
}
/**
@@ -99,7 +100,9 @@
private function diffRank( $oldClaim, $newClaim ) {
$oldRank = $oldClaim === null ? null : $oldClaim->getRank();
$newRank = $newClaim === null ? null : $newClaim->getRank();
- if( $oldRank !== $newRank ){
+
+ $rankComparer = new ObjectComparer();
+ if( !$rankComparer->dataEquals( $oldRank, $newRank ) ){
return new DiffOpChange( $oldRank, $newRank );
}
return null;
@@ -109,15 +112,13 @@
* @param Statement $oldClaim
* @param Statement $newClaim
*
- * @return DiffOpChange|null
+ * @return Diff
*/
private function diffReferences( $oldClaim, $newClaim ) {
$oldReferences = $oldClaim === null ? array() :
iterator_to_array( $oldClaim->getReferences() );
$newReferences = $newClaim === null ? array() :
iterator_to_array( $newClaim->getReferences() );
- if( $oldReferences !== $newReferences ){
- return new Diff( $this->listDiffer->doDiff(
$oldReferences, $newReferences ), false );
- }
- return null;
+
+ return new Diff( $this->listDiffer->doDiff( $oldReferences,
$newReferences ), false );
}
}
--
To view, visit https://gerrit.wikimedia.org/r/94137
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I2f3273596731276770c66695ac839aa6912f133d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Tobias Gritschacher <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits