Addshore has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/222607

Change subject: Use DM Serializetion in RB for aliases
......................................................................

Use DM Serializetion in RB for aliases

Change-Id: I74d6486589e9a73583f1a5c33285085925b6aa17
---
M repo/includes/api/EditEntity.php
M repo/includes/api/ResultBuilder.php
M repo/includes/api/SetAliases.php
M repo/tests/phpunit/includes/api/ResultBuilderTest.php
4 files changed, 72 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/07/222607/3

diff --git a/repo/includes/api/EditEntity.php b/repo/includes/api/EditEntity.php
index ca9557a..8ad42da 100644
--- a/repo/includes/api/EditEntity.php
+++ b/repo/includes/api/EditEntity.php
@@ -542,7 +542,7 @@
 
                        $builder->addLabels( $fingerprint->getLabels(), 
'entity' );
                        $builder->addDescriptions( 
$fingerprint->getDescriptions(), 'entity' );
-                       $builder->addAliases( 
$fingerprint->getAliasGroups()->toTextArray(), 'entity' );
+                       $builder->addAliasGroupList( 
$fingerprint->getAliasGroups(), 'entity' );
                }
 
                if ( $entity instanceof Item ) {
diff --git a/repo/includes/api/ResultBuilder.php 
b/repo/includes/api/ResultBuilder.php
index 6048652..f2e610a 100644
--- a/repo/includes/api/ResultBuilder.php
+++ b/repo/includes/api/ResultBuilder.php
@@ -12,6 +12,8 @@
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Reference;
 use Wikibase\DataModel\SerializerFactory;
+use Wikibase\DataModel\Term\AliasGroup;
+use Wikibase\DataModel\Term\AliasGroupList;
 use Wikibase\DataModel\Term\Term;
 use Wikibase\DataModel\Term\TermList;
 use Wikibase\EntityRevision;
@@ -450,16 +452,31 @@
        }
 
        /**
-        * Get serialized aliases and add them to result
+        * Get serialized AliasGroup and add it to result
         *
         * @since 0.5
         *
-        * @param array $aliases the aliases to set in the result
+        * @param AliasGroup $aliasGroup the AliasGroup to set in the result
         * @param array|string $path where the data is located
         */
-       public function addAliases( array $aliases, $path ) {
-               $aliasSerializer = 
$this->libSerializerFactory->newAliasSerializer( $this->getOptions() );
-               $values = $aliasSerializer->getSerialized( $aliases );
+       public function addAliasGroup( AliasGroup $aliasGroup, $path ) {
+               $this->addAliasGroupList(
+                       new AliasGroupList( array( $aliasGroup ) ),
+                       $path
+               );
+       }
+
+       /**
+        * Get serialized AliasGroupList and add it to result
+        *
+        * @since 0.5
+        *
+        * @param AliasGroupList $aliasGroupList the AliasGroupList to set in 
the result
+        * @param array|string $path where the data is located
+        */
+       public function addAliasGroupList( AliasGroupList $aliasGroupList, 
$path ) {
+               $serializer = 
$this->serializerFactory->newAliasGroupListSerializer();
+               $values = $serializer->serialize( $aliasGroupList );
                $this->setList( $path, 'aliases', $values, 'alias' );
        }
 
diff --git a/repo/includes/api/SetAliases.php b/repo/includes/api/SetAliases.php
index cf4c811..3b6c481 100644
--- a/repo/includes/api/SetAliases.php
+++ b/repo/includes/api/SetAliases.php
@@ -107,9 +107,11 @@
                        $summary->addAutoSummaryArgs( $entity->getAliases( 
$language ) );
                }
 
-               $aliases = $entity->getAliases( $language );
-               if ( count( $aliases ) ) {
-                       $this->getResultBuilder()->addAliases( array( $language 
=> $aliases ), 'entity' );
+               if ( $entity->getFingerprint()->hasAliasGroup( $language ) ) {
+                       $aliasGroup = $entity->getFingerprint()->getAliasGroup( 
$language );
+                       if ( !$aliasGroup->isEmpty() ) {
+                               $this->getResultBuilder()->addAliasGroup( 
$aliasGroup, 'entity' );
+                       }
                }
 
                return $summary;
diff --git a/repo/tests/phpunit/includes/api/ResultBuilderTest.php 
b/repo/tests/phpunit/includes/api/ResultBuilderTest.php
index 79f37ac..7b08e51 100644
--- a/repo/tests/phpunit/includes/api/ResultBuilderTest.php
+++ b/repo/tests/phpunit/includes/api/ResultBuilderTest.php
@@ -17,6 +17,8 @@
 use Wikibase\DataModel\Snak\PropertyValueSnak;
 use Wikibase\DataModel\Snak\SnakList;
 use Wikibase\DataModel\Statement\Statement;
+use Wikibase\DataModel\Term\AliasGroup;
+use Wikibase\DataModel\Term\AliasGroupList;
 use Wikibase\DataModel\Term\Term;
 use Wikibase\DataModel\Term\TermList;
 use Wikibase\EntityRevision;
@@ -575,9 +577,48 @@
                $this->assertEquals( $expected, $data );
        }
 
-       public function testAddAliases() {
+       public function testAddAliasGroup() {
                $result = $this->getDefaultResult();
-               $aliases = array( 'en' => array( 'boo', 'hoo' ), 'de' => array( 
'ham', 'cheese' ) );
+               $aliasGroup = new AliasGroup( 'en', array( 'boo', 'hoo' ) );
+               $path = array( 'entities', 'Q1' );
+               $expected = array(
+                       'entities' => array(
+                               'Q1' => array(
+                                       'aliases' => array(
+                                               'en' => array(
+                                                       array(
+                                                               'language' => 
'en',
+                                                               'value' => 
'boo',
+                                                       ),
+                                                       array(
+                                                               'language' => 
'en',
+                                                               'value' => 
'hoo',
+                                                       ),
+                                               ),
+                                       ),
+                               ),
+                       ),
+               );
+
+               $resultBuilder = $this->getResultBuilder( $result );
+               $resultBuilder->addAliasGroup( $aliasGroup, $path );
+
+               $data = $result->getResultData( null, array(
+                       'BC' => array(),
+                       'Types' => array(),
+                       'Strip' => 'all',
+               ) );
+               $this->assertEquals( $expected, $data );
+       }
+
+       public function testAddAliasGroupList() {
+               $result = $this->getDefaultResult();
+               $aliasGroupList = new AliasGroupList(
+                       array(
+                               new AliasGroup( 'en', array( 'boo', 'hoo' ) ),
+                               new AliasGroup( 'de', array( 'ham', 'cheese' ) 
),
+                       )
+               );
                $path = array( 'entities', 'Q1' );
                $expected = array(
                        'entities' => array(
@@ -609,7 +650,7 @@
                );
 
                $resultBuilder = $this->getResultBuilder( $result );
-               $resultBuilder->addAliases( $aliases, $path );
+               $resultBuilder->addAliasGroupList( $aliasGroupList, $path );
 
                $data = $result->getResultData( null, array(
                        'BC' => array(),

-- 
To view, visit https://gerrit.wikimedia.org/r/222607
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I74d6486589e9a73583f1a5c33285085925b6aa17
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Addshore <addshorew...@gmail.com>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to