Addshore has uploaded a new change for review.
https://gerrit.wikimedia.org/r/93044
Change subject: Accept both types of lists when deserializing
......................................................................
Accept both types of lists when deserializing
Change-Id: Ieffaaf77c99e9672f1f910c87480eec256d3f3b2
---
M lib/includes/serializers/ClaimSerializer.php
M lib/includes/serializers/ClaimsSerializer.php
M lib/includes/serializers/ReferenceSerializer.php
M lib/includes/serializers/SerializerObject.php
4 files changed, 28 insertions(+), 4 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/44/93044/1
diff --git a/lib/includes/serializers/ClaimSerializer.php
b/lib/includes/serializers/ClaimSerializer.php
index d9a6e83..ed53e9a 100644
--- a/lib/includes/serializers/ClaimSerializer.php
+++ b/lib/includes/serializers/ClaimSerializer.php
@@ -259,8 +259,13 @@
}
}
- $snaksUnserializer = new ByPropertyListUnserializer(
$snakUnserializer );
- return new SnakList(
$snaksUnserializer->newFromSerialization( $sortedQualifiers ) );
+ if( $this->isAssociative( $sortedQualifiers ) ){
+ $unserializer = new ByPropertyListUnserializer(
$snakUnserializer );
+ } else {
+ $unserializer = new ListUnserializer(
$snakUnserializer );
+ }
+
+ return new SnakList(
$unserializer->newFromSerialization( $sortedQualifiers ) );
}
}
diff --git a/lib/includes/serializers/ClaimsSerializer.php
b/lib/includes/serializers/ClaimsSerializer.php
index 617cc08..5145613 100644
--- a/lib/includes/serializers/ClaimsSerializer.php
+++ b/lib/includes/serializers/ClaimsSerializer.php
@@ -59,7 +59,12 @@
*/
public function newFromSerialization( array $serialization ) {
$claimSerializer = new ClaimSerializer( $this->options );
- $unserializer = new ByPropertyListUnserializer(
$claimSerializer );
+
+ if( $this->isAssociative( $serialization ) ){
+ $unserializer = new ByPropertyListUnserializer(
$claimSerializer );
+ } else {
+ $unserializer = new ListUnserializer( $claimSerializer
);
+ }
return new Claims( $unserializer->newFromSerialization(
$serialization ) );
}
diff --git a/lib/includes/serializers/ReferenceSerializer.php
b/lib/includes/serializers/ReferenceSerializer.php
index f5da79f..1d8eb74 100644
--- a/lib/includes/serializers/ReferenceSerializer.php
+++ b/lib/includes/serializers/ReferenceSerializer.php
@@ -107,7 +107,12 @@
}
$snakUnserializer = new SnakSerializer( $this->options );
- $snaksUnserializer = new ByPropertyListUnserializer(
$snakUnserializer );
+
+ if( $this->isAssociative( $sortedSnaks ) ){
+ $snaksUnserializer = new ByPropertyListUnserializer(
$snakUnserializer );
+ } else {
+ $snaksUnserializer = new ListUnserializer(
$snakUnserializer );
+ }
$snaks = $snaksUnserializer->newFromSerialization( $sortedSnaks
);
diff --git a/lib/includes/serializers/SerializerObject.php
b/lib/includes/serializers/SerializerObject.php
index bf79545..5dcd16a 100644
--- a/lib/includes/serializers/SerializerObject.php
+++ b/lib/includes/serializers/SerializerObject.php
@@ -76,4 +76,13 @@
return $this->options;
}
+ /**
+ * @since 0.5
+ * @param array $arr
+ * @return bool Is the array an
+ */
+ protected final function isAssociative( $arr ) {
+ return array_keys( $arr ) !== range( 0, count( $arr ) - 1 );
+ }
+
}
--
To view, visit https://gerrit.wikimedia.org/r/93044
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ieffaaf77c99e9672f1f910c87480eec256d3f3b2
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