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

Reply via email to