Addshore has uploaded a new change for review. https://gerrit.wikimedia.org/r/108519
Change subject: Add hashes to qualifier serilization output ...................................................................... Add hashes to qualifier serilization output - Adds new option for serilizing snaks with hashes - Makes SnakSerilizer check for the option - Makes claim serializer use said option - Updates json.doc - Expand Result builder test to test output with qualifiers - All other tests to do with this change already seem to account for and check the hash Bug: 50570 Change-Id: I3e00aa72bfd64434ecffd597cb6cad542d85a68c --- M docs/json.wiki M lib/includes/serializers/ClaimSerializer.php M lib/includes/serializers/SerializationOptions.php M lib/includes/serializers/SnakSerializer.php M repo/tests/phpunit/includes/api/ResultBuilderTest.php 5 files changed, 50 insertions(+), 3 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase refs/changes/19/108519/1 diff --git a/docs/json.wiki b/docs/json.wiki index c684ad5..371e515 100644 --- a/docs/json.wiki +++ b/docs/json.wiki @@ -399,6 +399,7 @@ "qualifiers": { "P580": [ { + "hash": "sssde3541cc531fa54adcaffebde6bef28g6hgjd", "snaktype": "value", "property": "P580", "datavalue": { @@ -416,6 +417,7 @@ ], "P582": [ { + "hash": "f803e3541cc531fa54n7a9ffebde6bef28d87ddv", "snaktype": "value", "property": "P582", "datavalue": { @@ -799,6 +801,7 @@ "qualifiers": { "P580": [ { + "hash": "rrrrww541cc531fa54adcaffebde6bef28d7uu7f", "snaktype": "value", "property": "P580", "datavalue": { @@ -816,6 +819,7 @@ ], "P582": [ { + "hash": "qwerqwrqwrqwq1fa54adcaffebde6bef28d87d32", "snaktype": "value", "property": "P582", "datavalue": { @@ -851,6 +855,7 @@ "qualifiers": { "P580": [ { + "hash": "d103e3541cc531fa54adcaffebdeqweqweqeqweq", "snaktype": "value", "property": "P580", "datavalue": { @@ -868,6 +873,7 @@ ], "P582": [ { + "hash": "d103e3541ccasdasdsadasdasdas6bef28d87d32", "snaktype": "value", "property": "P582", "datavalue": { diff --git a/lib/includes/serializers/ClaimSerializer.php b/lib/includes/serializers/ClaimSerializer.php index b080431..cede938 100644 --- a/lib/includes/serializers/ClaimSerializer.php +++ b/lib/includes/serializers/ClaimSerializer.php @@ -110,10 +110,23 @@ $serialization['mainsnak'] = $this->snakSerializer->getSerialized( $claim->getMainSnak() ); + //NOTE: the two clones below must remain to avoid changing options for other serilizations + $qualifierSerializer = clone $this->snakSerializer; + $qualifierSerializer->setOptions( clone $this->snakSerializer->getOptions() ); + $qualifierSerializer->getOptions()->setOption( SerializationOptions::OPT_SERIALIZE_SNAKS_WITH_HASH, true ); + if( in_array( 'qualifiers', $this->options->getOption( SerializationOptions::OPT_GROUP_BY_PROPERTIES ) ) ){ - $listSerializer = new ByPropertyListSerializer( 'qualifiers', $this->snakSerializer, $this->options ); + $listSerializer = new ByPropertyListSerializer( + 'qualifiers', + $qualifierSerializer, + $this->options + ); } else { - $listSerializer = new ListSerializer( 'qualifiers', $this->snakSerializer, $this->options ); + $listSerializer = new ListSerializer( + 'qualifiers', + $qualifierSerializer, + $this->options + ); } $qualifiers = $listSerializer->getSerialized( $claim->getQualifiers() ); diff --git a/lib/includes/serializers/SerializationOptions.php b/lib/includes/serializers/SerializationOptions.php index 41cffa2..517cf60 100644 --- a/lib/includes/serializers/SerializationOptions.php +++ b/lib/includes/serializers/SerializationOptions.php @@ -63,6 +63,12 @@ const OPT_GROUP_BY_PROPERTIES = 'groupByProperties'; /** + * @since 0.5 + * @const key for serializing snaks with a hash if possible + */ + const OPT_SERIALIZE_SNAKS_WITH_HASH = 'serializeSnaksWithHash'; + + /** * @var array */ protected $options = array(); diff --git a/lib/includes/serializers/SnakSerializer.php b/lib/includes/serializers/SnakSerializer.php index 91d65a9..2dd44cb 100644 --- a/lib/includes/serializers/SnakSerializer.php +++ b/lib/includes/serializers/SnakSerializer.php @@ -65,6 +65,13 @@ $serialization = array(); + if( $this->options->hasOption( SerializationOptions::OPT_SERIALIZE_SNAKS_WITH_HASH ) + && $this->options->getOption( SerializationOptions::OPT_SERIALIZE_SNAKS_WITH_HASH ) + && method_exists( $snak, 'getHash' ) + ) { + $serialization['hash'] = $snak->getHash(); + } + $serialization['snaktype'] = $snak->getType(); $serialization['property'] = $snak->getPropertyId()->getPrefixedId(); diff --git a/repo/tests/phpunit/includes/api/ResultBuilderTest.php b/repo/tests/phpunit/includes/api/ResultBuilderTest.php index 0569fb5..018da38 100644 --- a/repo/tests/phpunit/includes/api/ResultBuilderTest.php +++ b/repo/tests/phpunit/includes/api/ResultBuilderTest.php @@ -141,6 +141,9 @@ $item->addSiteLink( new SimpleSiteLink( 'enwiki', 'Berlin', array( new ItemId( 'Q333' ) ) ) ); $claim = new Claim( new PropertySomeValueSnak( new PropertyId( 'P65' ) ) ); $claim->setGuid( 'imaguid' ); + $qualifiers = new SnakList(); + $qualifiers->addSnak( new PropertySomeValueSnak( new PropertyId( 'P65' ) ) ); + $claim->setQualifiers( $qualifiers ); $item->addClaim( $claim ); //todo @@ -190,7 +193,19 @@ 'snaktype' => 'somevalue', 'property' => 'P65' ), - 'type' => 'claim' + 'type' => 'claim', + 'qualifiers' => array( + 'P65' => array( + array( + 'hash' => '210b00274bf03247a89de918f15b12142ebf9e56', + 'snaktype' => 'somevalue', + 'property' => 'P65', + ) + ), + ), + 'qualifiers-order' => array( + 'P65' + ), ) ), ), -- To view, visit https://gerrit.wikimedia.org/r/108519 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3e00aa72bfd64434ecffd597cb6cad542d85a68c Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Addshore <addshorew...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits