jenkins-bot has submitted this change and it was merged.
Change subject: Factor Rank (De)Serialization out of Lib
......................................................................
Factor Rank (De)Serialization out of Lib
This could in turn be moved to DataModelSerialization
Change-Id: I80baa29f474d97e3290e30b990e08cd977101c90
---
M lib/includes/serializers/ClaimSerializer.php
M lib/tests/phpunit/serializers/ClaimSerializerTest.php
M repo/includes/ChangeOp/ChangeOpStatementRank.php
M repo/includes/Diff/ClaimDifferenceVisualizer.php
A repo/includes/StatementRankSerializer.php
M repo/includes/api/GetClaims.php
A repo/tests/phpunit/includes/StatementRankSerializerTest.php
M repo/tests/phpunit/includes/api/GetClaimsTest.php
M view/src/ClaimHtmlGenerator.php
9 files changed, 151 insertions(+), 63 deletions(-)
Approvals:
Bene: Looks good to me, approved
Addshore: Looks good to me, but someone else must approve
jenkins-bot: Verified
diff --git a/lib/includes/serializers/ClaimSerializer.php
b/lib/includes/serializers/ClaimSerializer.php
index 269445a..6e85618 100644
--- a/lib/includes/serializers/ClaimSerializer.php
+++ b/lib/includes/serializers/ClaimSerializer.php
@@ -50,19 +50,7 @@
);
/**
- * Returns the available ranks in serialized form.
- *
- * @since 0.3
- *
- * @return string[]
- */
- public static function getRanks() {
- return array_values( self::$rankMap );
- }
-
- /**
* Unserializes the rank and returns an element from the
Statement::RANK_ enum.
- * Roundtrips with @see ClaimSerializer::serializeRank
*
* @since 0.3
*
@@ -70,23 +58,9 @@
*
* @return integer
*/
- public static function unserializeRank( $serializedRank ) {
+ private static function unserializeRank( $serializedRank ) {
$ranks = array_flip( self::$rankMap );
return $ranks[$serializedRank];
- }
-
- /**
- * Serializes the rank.
- * Roundtrips with @see ClaimSerializer::unserializeRank
- *
- * @since 0.3
- *
- * @param integer $rank
- *
- * @return string
- */
- public static function serializeRank( $rank ) {
- return self::$rankMap[$rank];
}
/**
diff --git a/lib/tests/phpunit/serializers/ClaimSerializerTest.php
b/lib/tests/phpunit/serializers/ClaimSerializerTest.php
index 96921cc..7417d78 100644
--- a/lib/tests/phpunit/serializers/ClaimSerializerTest.php
+++ b/lib/tests/phpunit/serializers/ClaimSerializerTest.php
@@ -124,34 +124,4 @@
return $validArgs;
}
- public function rankProvider() {
- $ranks = array(
- Statement::RANK_NORMAL,
- Statement::RANK_PREFERRED,
- Statement::RANK_DEPRECATED,
- );
-
- return $this->arrayWrap( $ranks );
- }
-
- /**
- * @dataProvider rankProvider
- */
- public function testRankSerialization( $rank ) {
- $id = new PropertyId( 'P42' );
- $statement = new Statement( new PropertyNoValueSnak( $id ) );
-
- $statement->setRank( $rank );
-
- $serializer = new ClaimSerializer( new SnakSerializer() );
-
- $serialization = $serializer->getSerialized( $statement );
-
- $this->assertEquals(
- $rank,
- ClaimSerializer::unserializeRank(
$serialization['rank'] ),
- 'Roundtrip between rank serialization and
unserialization'
- );
- }
-
}
diff --git a/repo/includes/ChangeOp/ChangeOpStatementRank.php
b/repo/includes/ChangeOp/ChangeOpStatementRank.php
index ce11a44..10f3c43 100644
--- a/repo/includes/ChangeOp/ChangeOpStatementRank.php
+++ b/repo/includes/ChangeOp/ChangeOpStatementRank.php
@@ -8,6 +8,7 @@
use Wikibase\DataModel\Snak\Snak;
use Wikibase\DataModel\Statement\StatementListHolder;
use Wikibase\Lib\Serializers\ClaimSerializer;
+use Wikibase\StatementRankSerializer;
use Wikibase\Summary;
/**
@@ -76,8 +77,12 @@
$this->updateSummary( $summary, null, '',
$this->getSnakSummaryArgs( $statement->getMainSnak() ) );
if ( $summary !== null ) {
+ $statementRankSerializer = new
StatementRankSerializer();
$summary->addAutoCommentArgs(
- array( ClaimSerializer::serializeRank( $oldRank
), ClaimSerializer::serializeRank( $this->rank ) )
+ array(
+ $statementRankSerializer->serialize(
$oldRank ),
+ $statementRankSerializer->serialize(
$this->rank )
+ )
);
}
diff --git a/repo/includes/Diff/ClaimDifferenceVisualizer.php
b/repo/includes/Diff/ClaimDifferenceVisualizer.php
index 44410e0..4dfbdc1 100644
--- a/repo/includes/Diff/ClaimDifferenceVisualizer.php
+++ b/repo/includes/Diff/ClaimDifferenceVisualizer.php
@@ -11,6 +11,7 @@
use Wikibase\DataModel\Snak\Snak;
use Wikibase\DataModel\Snak\SnakList;
use Wikibase\Lib\Serializers\ClaimSerializer;
+use Wikibase\StatementRankSerializer;
/**
* Class for generating HTML for Claim Diffs.
@@ -187,7 +188,8 @@
}
if ( is_int( $rank ) ) {
- $rank = ClaimSerializer::serializeRank( $rank );
+ $statementRankSerializer = new
StatementRankSerializer();
+ $rank = $statementRankSerializer->serialize( $rank );
}
// Messages:
diff --git a/repo/includes/StatementRankSerializer.php
b/repo/includes/StatementRankSerializer.php
new file mode 100644
index 0000000..723414d
--- /dev/null
+++ b/repo/includes/StatementRankSerializer.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace Wikibase;
+
+use Deserializers\Deserializer;
+use Serializers\Serializer;
+use Wikibase\DataModel\Statement\Statement;
+
+/**
+ * Serializer and Deserializer for Statement Ranks.
+ *
+ * @todo this could be moved to DataModelSerialization (in some form)
+ *
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < [email protected] >
+ * @author Daniel Kinzler
+ * @author Adam Shorland
+ */
+class StatementRankSerializer implements Serializer, Deserializer {
+
+ /**
+ * @var string[]
+ */
+ private static $rankMap = array(
+ Statement::RANK_DEPRECATED => 'deprecated',
+ Statement::RANK_NORMAL => 'normal',
+ Statement::RANK_PREFERRED => 'preferred',
+ );
+
+ /**
+ * Returns the available ranks in serialized form.
+ *
+ * @return string[]
+ */
+ public static function getRanks() {
+ return array_values( self::$rankMap );
+ }
+
+ /**
+ * Deserializes the rank and returns an element from the
Statement::RANK_ enum.
+ *
+ * @param string $serializedRank
+ *
+ * @return integer
+ */
+ public function deserialize( $serializedRank ) {
+ $ranks = array_flip( self::$rankMap );
+ return $ranks[$serializedRank];
+ }
+
+ /**
+ * Serializes the rank.
+ *
+ * @param integer $rank
+ *
+ * @return string
+ */
+ public function serialize( $rank ) {
+ return self::$rankMap[$rank];
+ }
+
+}
diff --git a/repo/includes/api/GetClaims.php b/repo/includes/api/GetClaims.php
index 6b96643..1d04f66 100644
--- a/repo/includes/api/GetClaims.php
+++ b/repo/includes/api/GetClaims.php
@@ -17,6 +17,7 @@
use Wikibase\Lib\Serializers\SerializationOptions;
use Wikibase\Lib\Store\EntityRevisionLookup;
use Wikibase\Repo\WikibaseRepo;
+use Wikibase\StatementRankSerializer;
/**
* API module for getting claims.
@@ -160,7 +161,8 @@
$params = $this->extractRequestParams();
if ( isset( $params['rank'] ) ) {
- $unserializedRank = ClaimSerializer::unserializeRank(
$params['rank'] );
+ $statementRankSerializer = new
StatementRankSerializer();
+ $unserializedRank =
$statementRankSerializer->deserialize( $params['rank'] );
$matchFilter = $rank === $unserializedRank;
return $matchFilter;
}
@@ -238,7 +240,7 @@
self::PARAM_TYPE => 'string',
),
'rank' => array(
- self::PARAM_TYPE => ClaimSerializer::getRanks(),
+ self::PARAM_TYPE =>
StatementRankSerializer::getRanks(),
),
'props' => array(
self::PARAM_TYPE => array(
diff --git a/repo/tests/phpunit/includes/StatementRankSerializerTest.php
b/repo/tests/phpunit/includes/StatementRankSerializerTest.php
new file mode 100644
index 0000000..2063eea
--- /dev/null
+++ b/repo/tests/phpunit/includes/StatementRankSerializerTest.php
@@ -0,0 +1,69 @@
+<?php
+
+namespace Wikibase\Test;
+
+use DataValues\Serializers\DataValueSerializer;
+use Wikibase\DataModel\Entity\PropertyId;
+use Wikibase\DataModel\SerializerFactory;
+use Wikibase\DataModel\Snak\PropertyNoValueSnak;
+use Wikibase\DataModel\Statement\Statement;
+use Wikibase\StatementRankSerializer;
+
+/**
+ * @covers Wikibase\StatementRankDeserializer
+ *
+ * @group Wikibase
+ * @group WikibaseRepo
+ *
+ * @licence GNU GPL v2+
+ * @author Adam Shorland
+ */
+class StatementRankSerializerTest extends \PHPUnit_Framework_TestCase {
+
+ public function rankProvider() {
+ $ranks = array(
+ Statement::RANK_NORMAL,
+ Statement::RANK_PREFERRED,
+ Statement::RANK_DEPRECATED,
+ );
+
+ return $this->arrayWrap( $ranks );
+ }
+
+ /**
+ * @dataProvider rankProvider
+ */
+ public function testRankSerialization( $rank ) {
+ $statement = new Statement( new PropertyNoValueSnak( new
PropertyId( 'P42' ) ) );
+ $statement->setRank( $rank );
+
+ $factory = new SerializerFactory( new DataValueSerializer() );
+ $statementSerializer = $factory->newStatementSerializer();
+
+ $serialization = $statementSerializer->serialize( $statement );
+
+ $rankSerializer = new StatementRankSerializer();
+
+ $this->assertEquals(
+ $rank,
+ $rankSerializer->deserialize( $serialization['rank'] ),
+ 'Roundtrip between rank serialization and
unserialization 1'
+ );
+
+ $this->assertEquals(
+ $serialization['rank'],
+ $rankSerializer->serialize( $rank ),
+ 'Roundtrip between rank serialization and
unserialization 2'
+ );
+ }
+
+ protected function arrayWrap( array $elements ) {
+ return array_map(
+ function ( $element ) {
+ return array( $element );
+ },
+ $elements
+ );
+ }
+
+}
diff --git a/repo/tests/phpunit/includes/api/GetClaimsTest.php
b/repo/tests/phpunit/includes/api/GetClaimsTest.php
index 03be205..22a157c 100644
--- a/repo/tests/phpunit/includes/api/GetClaimsTest.php
+++ b/repo/tests/phpunit/includes/api/GetClaimsTest.php
@@ -20,6 +20,7 @@
use Wikibase\DataModel\Statement\StatementListProvider;
use Wikibase\Lib\Serializers\ClaimSerializer;
use Wikibase\Repo\WikibaseRepo;
+use Wikibase\StatementRankSerializer;
/**
* @covers Wikibase\Repo\Api\GetClaims
@@ -150,10 +151,11 @@
}
foreach ( array( Statement::RANK_DEPRECATED,
Statement::RANK_NORMAL, Statement::RANK_PREFERRED ) as $rank ) {
+ $statementRankSerializer = new
StatementRankSerializer();
$params = array(
'action' => 'wbgetclaims',
'entity' => $idSerialization,
- 'rank' =>
ClaimSerializer::serializeRank( $rank ),
+ 'rank' =>
$statementRankSerializer->serialize( $rank ),
);
$statementsByRank = $statements->getByRank(
$rank )->toArray();
diff --git a/view/src/ClaimHtmlGenerator.php b/view/src/ClaimHtmlGenerator.php
index 80500ff..2235ae7 100644
--- a/view/src/ClaimHtmlGenerator.php
+++ b/view/src/ClaimHtmlGenerator.php
@@ -10,6 +10,7 @@
use Wikibase\DataModel\Snak\SnakList;
use Wikibase\DataModel\Statement\Statement;
use Wikibase\Lib\Serializers\ClaimSerializer;
+use Wikibase\StatementRankSerializer;
use Wikibase\View\Template\TemplateFactory;
/**
@@ -79,7 +80,8 @@
// (see https://github.com/wmde/WikibaseDataModel/pull/317)
if ( $claim instanceof Statement ) {
/** @var Statement $claim */
- $serializedRank = ClaimSerializer::serializeRank(
$claim->getRank() );
+ $statementRankSerializer = new
StatementRankSerializer();
+ $serializedRank = $statementRankSerializer->serialize(
$claim->getRank() );
// Messages: wikibase-statementview-rank-preferred,
wikibase-statementview-rank-normal,
// wikibase-statementview-rank-deprecated
--
To view, visit https://gerrit.wikimedia.org/r/227425
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I80baa29f474d97e3290e30b990e08cd977101c90
Gerrit-PatchSet: 8
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Addshore <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Bene <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: JanZerebecki <[email protected]>
Gerrit-Reviewer: Jeroen De Dauw <[email protected]>
Gerrit-Reviewer: Jonas Kress (WMDE) <[email protected]>
Gerrit-Reviewer: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits