Tobias Gritschacher has submitted this change and it was merged.

Change subject: (bug 44683) Fixed unserialization of qualifiers in claim 
serializer
......................................................................


(bug 44683) Fixed unserialization of qualifiers in claim serializer

The claim serializer assumed the qualifiers in a serialized claim would be a 
plain
array of snaks. However, the qualifiers should be sent to API in the same 
serialized
form they are returned which is a serialized SnakList object.

Change-Id: I7a729a7d86529f359d5ee33d895985e89e9c69ee
---
M lib/includes/serializers/ClaimSerializer.php
1 file changed, 6 insertions(+), 10 deletions(-)

Approvals:
  Tobias Gritschacher: Verified; Looks good to me, approved
  jenkins-bot: Checked



diff --git a/lib/includes/serializers/ClaimSerializer.php 
b/lib/includes/serializers/ClaimSerializer.php
index bc0dc54..f041c8e 100644
--- a/lib/includes/serializers/ClaimSerializer.php
+++ b/lib/includes/serializers/ClaimSerializer.php
@@ -104,7 +104,7 @@
                $snakSerializer = new SnakSerializer( $this->options );
                $serialization['mainsnak'] = $snakSerializer->getSerialized( 
$claim->getMainSnak() );
 
-               $snaksSerializer = new ByPropertyListSerializer( 'qualifier', 
$snakSerializer, $this->options );
+               $snaksSerializer = new ByPropertyListSerializer( 'qualifiers', 
$snakSerializer, $this->options );
                $qualifiers = $snaksSerializer->getSerialized( 
$claim->getQualifiers() );
 
                if ( $qualifiers !== array() ) {
@@ -168,26 +168,22 @@
                        }
                }
 
-               $snakDeserializer = new SnakSerializer(); // FIXME: derp 
injection
+               $snakUnserializer = new SnakSerializer(); // FIXME: derp 
injection
 
                $claimClass = $isStatement ? '\Wikibase\Statement' : 
'\Wikibase\Claim';
 
                /**
                 * @var Claim $claim
                 */
-               $claim = new $claimClass( 
$snakDeserializer->newFromSerialization( $serialization['mainsnak'] ) );
+               $claim = new $claimClass( 
$snakUnserializer->newFromSerialization( $serialization['mainsnak'] ) );
                assert( $claim instanceof Claim );
 
                $claim->setGuid( $serialization['id'] );
 
                if ( array_key_exists( 'qualifiers', $serialization ) ) {
-                       $qualifiers = array();
-
-                       foreach ( $serialization['qualifiers'] as $qualifier ) {
-                               $qualifiers[] = 
$snakDeserializer->newFromSerialization( $qualifier );
-                       }
-
-                       $claim->setQualifiers( new \Wikibase\SnakList( 
$qualifiers ) );
+                       $snaksUnserializer = new ByPropertyListUnserializer( 
$snakUnserializer );
+                       $snaks = $snaksUnserializer->newFromSerialization( 
$serialization['qualifiers'] );
+                       $claim->setQualifiers( new \Wikibase\SnakList( $snaks ) 
);
                }
 
                if ( $isStatement ) {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I7a729a7d86529f359d5ee33d895985e89e9c69ee
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Henning Snater <henning.sna...@wikimedia.de>
Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@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