Bene has uploaded a new change for review.
https://gerrit.wikimedia.org/r/278564
Change subject: [WIP] Inject entity serializer into api ResultBuilder
......................................................................
[WIP] Inject entity serializer into api ResultBuilder
Change-Id: I78ce2ac14a6750807f09722c7b0a48a3e199228e
Problem: The serialization flags get duplicated in the code base.
---
M repo/includes/Api/ApiHelperFactory.php
M repo/includes/Api/ResultBuilder.php
M repo/includes/WikibaseRepo.php
M repo/tests/phpunit/includes/Api/ApiHelperFactoryTest.php
M repo/tests/phpunit/includes/Api/ResultBuilderTest.php
5 files changed, 30 insertions(+), 5 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/64/278564/1
diff --git a/repo/includes/Api/ApiHelperFactory.php
b/repo/includes/Api/ApiHelperFactory.php
index a5ecaf7..1c988a1 100644
--- a/repo/includes/Api/ApiHelperFactory.php
+++ b/repo/includes/Api/ApiHelperFactory.php
@@ -4,6 +4,7 @@
use ApiBase;
use DataValues\Serializers\DataValueSerializer;
+use Serializers\Serializer;
use SiteStore;
use Wikibase\DataModel\SerializerFactory;
use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
@@ -59,6 +60,11 @@
*/
private $siteStore;
+ /**
+ * @var Serializer
+ */
+ private $entitySerializer;
+
public function __construct(
EntityTitleLookup $titleLookup,
ExceptionLocalizer $exceptionLocalizer,
@@ -66,7 +72,8 @@
SiteStore $siteStore,
SummaryFormatter $summaryFormatter,
EntityRevisionLookup $entityRevisionLookup,
- EditEntityFactory $editEntityFactory
+ EditEntityFactory $editEntityFactory,
+ Serializer $entitySerializer
) {
$this->titleLookup = $titleLookup;
$this->exceptionLocalizer = $exceptionLocalizer;
@@ -75,6 +82,7 @@
$this->summaryFormatter = $summaryFormatter;
$this->entityRevisionLookup = $entityRevisionLookup;
$this->editEntityFactory = $editEntityFactory;
+ $this->entitySerializer = $entitySerializer;
}
/**
@@ -89,6 +97,7 @@
$api->getResult(),
$this->titleLookup,
$this->newSerializerFactory(),
+ $this->entitySerializer,
$this->siteStore,
$this->dataTypeLookup,
true // The mediawiki api should always be given
metadata
diff --git a/repo/includes/Api/ResultBuilder.php
b/repo/includes/Api/ResultBuilder.php
index b7c21d7..8db5cfe 100644
--- a/repo/includes/Api/ResultBuilder.php
+++ b/repo/includes/Api/ResultBuilder.php
@@ -4,6 +4,7 @@
use ApiResult;
use Revision;
+use Serializers\Serializer;
use SiteStore;
use Status;
use Wikibase\DataModel\Entity\EntityDocument;
@@ -50,6 +51,11 @@
private $serializerFactory;
/**
+ * @var Serializer
+ */
+ private $entitySerializer;
+
+ /**
* @var SiteStore
*/
private $siteStore;
@@ -83,6 +89,7 @@
* @param ApiResult $result
* @param EntityTitleLookup $entityTitleLookup
* @param SerializerFactory $serializerFactory
+ * @param Serializer $entitySerializer
* @param SiteStore $siteStore
* @param PropertyDataTypeLookup $dataTypeLookup
* @param bool|null $addMetaData when special elements such as
'_element' are needed
@@ -91,6 +98,7 @@
ApiResult $result,
EntityTitleLookup $entityTitleLookup,
SerializerFactory $serializerFactory,
+ Serializer $entitySerializer,
SiteStore $siteStore,
PropertyDataTypeLookup $dataTypeLookup,
$addMetaData = null
@@ -98,6 +106,7 @@
$this->result = $result;
$this->entityTitleLookup = $entityTitleLookup;
$this->serializerFactory = $serializerFactory;
+ $this->entitySerializer = $entitySerializer;
$this->siteStore = $siteStore;
$this->dataTypeLookup = $dataTypeLookup;
$this->addMetaData = $addMetaData;
@@ -339,8 +348,7 @@
array $filterLangCodes,
array $fallbackChains
) {
- $entitySerializer =
$this->serializerFactory->newEntitySerializer();
- $serialization = $entitySerializer->serialize( $entity );
+ $serialization = $this->entitySerializer->serialize( $entity );
$serialization = $this->filterEntitySerializationUsingProps(
$serialization, $props );
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index 984b3f9..2dd80e3 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -1453,7 +1453,11 @@
$this->getSiteStore(),
$this->getSummaryFormatter(),
$this->getEntityRevisionLookup( 'uncached' ),
- $this->newEditEntityFactory( $context )
+ $this->newEditEntityFactory( $context ),
+ $this->getEntitySerializer(
+
SerializerFactory::OPTION_SERIALIZE_MAIN_SNAKS_WITHOUT_HASH +
+
SerializerFactory::OPTION_SERIALIZE_REFERENCE_SNAKS_WITHOUT_HASH
+ )
);
}
diff --git a/repo/tests/phpunit/includes/Api/ApiHelperFactoryTest.php
b/repo/tests/phpunit/includes/Api/ApiHelperFactoryTest.php
index 52abfce..4ba5fba 100644
--- a/repo/tests/phpunit/includes/Api/ApiHelperFactoryTest.php
+++ b/repo/tests/phpunit/includes/Api/ApiHelperFactoryTest.php
@@ -6,6 +6,7 @@
use ApiResult;
use HashSiteStore;
use Language;
+use Serializers\Serializer;
use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
use Wikibase\EditEntityFactory;
use Wikibase\Lib\Store\EntityRevisionLookup;
@@ -39,6 +40,7 @@
$entityRevisionLookup = $this->getMock(
EntityRevisionLookup::class );
$editEntityFactory = $this->getMockBuilder(
EditEntityFactory::class )
->disableOriginalConstructor()->getMock();
+ $entitySeriailzer = $this->getMock( Serializer::class );
return new ApiHelperFactory(
$titleLookup,
@@ -47,7 +49,8 @@
new HashSiteStore(),
$summaryFormatter,
$entityRevisionLookup,
- $editEntityFactory
+ $editEntityFactory,
+ $entitySeriailzer
);
}
diff --git a/repo/tests/phpunit/includes/Api/ResultBuilderTest.php
b/repo/tests/phpunit/includes/Api/ResultBuilderTest.php
index c15b292..376958d 100644
--- a/repo/tests/phpunit/includes/Api/ResultBuilderTest.php
+++ b/repo/tests/phpunit/includes/Api/ResultBuilderTest.php
@@ -87,6 +87,7 @@
$result,
$mockEntityTitleLookup,
$serializerFactory,
+ $serializerFactory->newEntitySerializer(),
new HashSiteStore(),
$mockPropertyDataTypeLookup,
$addMetaData
--
To view, visit https://gerrit.wikimedia.org/r/278564
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I78ce2ac14a6750807f09722c7b0a48a3e199228e
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Bene <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits