Addshore has uploaded a new change for review.
https://gerrit.wikimedia.org/r/92916
Change subject: Add byPropertyListSerialization Options
......................................................................
Add byPropertyListSerialization Options
Change-Id: I3fdb0b6ed2dfee751316662f9cd91fe9c4421c45
---
M lib/includes/serializers/ClaimSerializer.php
M lib/includes/serializers/ClaimsSerializer.php
M lib/includes/serializers/SerializationOptions.php
3 files changed, 30 insertions(+), 12 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/16/92916/1
diff --git a/lib/includes/serializers/ClaimSerializer.php
b/lib/includes/serializers/ClaimSerializer.php
index 2a82a08..e855901 100644
--- a/lib/includes/serializers/ClaimSerializer.php
+++ b/lib/includes/serializers/ClaimSerializer.php
@@ -93,10 +93,16 @@
$serialization['id'] = $claim->getGuid();
$snakSerializer = new SnakSerializer( $this->options );
+
$serialization['mainsnak'] = $snakSerializer->getSerialized(
$claim->getMainSnak() );
- $snaksSerializer = new ByPropertyListSerializer( 'qualifiers',
$snakSerializer, $this->options );
- $qualifiers = $snaksSerializer->getSerialized(
$claim->getQualifiers() );
+ if( in_array( 'qualifiers', $this->options->getOption(
SerializationOptions::OPT_GROUP_BY_PROPERTIES ) ) ){
+ $listSerializer = new ByPropertyListSerializer(
'qualifiers', $snakSerializer, $this->options );
+ } else {
+ $listSerializer = new ListSerializer( 'qualifiers',
$snakSerializer, $this->options );
+ }
+
+ $qualifiers = $listSerializer->getSerialized(
$claim->getQualifiers() );
if ( $qualifiers !== array() ) {
$serialization['qualifiers'] = $qualifiers;
@@ -119,16 +125,16 @@
$referenceSerializer = new ReferenceSerializer(
$this->options );
- $serialization['references'] = array();
-
- foreach ( $claim->getReferences() as $reference ) {
- $serialization['references'][] =
$referenceSerializer->getSerialized( $reference );
+ if( in_array( 'references', $this->options->getOption(
SerializationOptions::OPT_GROUP_BY_PROPERTIES ) ) ){
+ $listSerializer = new ByPropertyListSerializer(
'references', $referenceSerializer, $this->options );
+ } else {
+ $listSerializer = new ListSerializer(
'references', $referenceSerializer, $this->options );
}
- if ( $serialization['references'] === array() ) {
- unset( $serialization['references'] );
- }
- else {
+ $references = $listSerializer->getSerialized(
$claim->getReferences() );
+
+ if ( $references !== array() ) {
+ $serialization['references'] = $references;
$this->setIndexedTagName(
$serialization['references'], 'reference' );
}
}
diff --git a/lib/includes/serializers/ClaimsSerializer.php
b/lib/includes/serializers/ClaimsSerializer.php
index 21fefff..617cc08 100644
--- a/lib/includes/serializers/ClaimsSerializer.php
+++ b/lib/includes/serializers/ClaimsSerializer.php
@@ -36,9 +36,14 @@
//NOTE: when changing the serialization structure, update
docs/json.wiki too!
$claimSerializer = new ClaimSerializer( $this->options );
- $serializer = new ByPropertyListSerializer( 'claim',
$claimSerializer, $this->options );
- return $serializer->getSerialized( $claims );
+ if( in_array( 'claims', $this->options->getOption(
SerializationOptions::OPT_GROUP_BY_PROPERTIES ) ) ){
+ $listSerializer = new ByPropertyListSerializer(
'claim', $claimSerializer, $this->options );
+ } else {
+ $listSerializer = new ListSerializer( 'claim',
$claimSerializer, $this->options );
+ }
+
+ return $listSerializer->getSerialized( $claims );
}
/**
diff --git a/lib/includes/serializers/SerializationOptions.php
b/lib/includes/serializers/SerializationOptions.php
index 206a054..5125d6d 100644
--- a/lib/includes/serializers/SerializationOptions.php
+++ b/lib/includes/serializers/SerializationOptions.php
@@ -57,6 +57,12 @@
const OPT_LANGUAGE_FALLBACK_CHAIN_FACTORY =
'languageFallbackChainFactory';
/**
+ * @since 0.5
+ * @const key for the groupByProperties option
+ */
+ const OPT_GROUP_BY_PROPERTIES = 'groupByProperties';
+
+ /**
* @var array
*/
protected $options = array();
@@ -71,6 +77,7 @@
$this->initOption( self::OPT_ID_KEY_MODE, self::ID_KEYS_UPPER );
$this->initOption( self::OPT_INDEX_TAGS, false );
+ $this->initOption( self::OPT_GROUP_BY_PROPERTIES, array(
'claims', 'qualifiers', 'references' ) );
}
protected function checkKey( $key) {
--
To view, visit https://gerrit.wikimedia.org/r/92916
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3fdb0b6ed2dfee751316662f9cd91fe9c4421c45
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits