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