Aude has uploaded a new change for review.
https://gerrit.wikimedia.org/r/148672
Change subject: Add getLanguageAwareRendererFromCode to
PropertyClaimsRendererFactory
......................................................................
Add getLanguageAwareRendererFromCode to PropertyClaimsRendererFactory
with in-process caching of the LanguageAwareRenderer objects
Change-Id: I40864028bd45727924412c84944342a84c842a54
---
M client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php
M
client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
M client/includes/DataAccess/PropertyParserFunction/VariantsAwareRenderer.php
M
client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactoryTest.php
M
client/tests/phpunit/includes/DataAccess/PropertyParserFunction/VariantsAwareRendererTest.php
5 files changed, 53 insertions(+), 8 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase
refs/changes/72/148672/1
diff --git
a/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php
b/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php
index 2c5c304..421a3a8 100644
---
a/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php
+++
b/client/includes/DataAccess/PropertyParserFunction/LanguageAwareRenderer.php
@@ -63,6 +63,7 @@
$status = $this->renderWithStatus( $entityId,
$propertyId );
} catch ( PropertyLabelNotResolvedException $ex ) {
+ // @fixme use ExceptionLocalizer
$status = $this->getStatusForException(
$propertyLabelOrId, $ex->getMessage() );
} catch ( InvalidArgumentException $ex ) {
$status = $this->getStatusForException(
$propertyLabelOrId, $ex->getMessage() );
diff --git
a/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
b/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
index df8b380..413bd2a 100644
---
a/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
+++
b/client/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactory.php
@@ -38,6 +38,11 @@
private $snakFormatterFactory;
/**
+ * @var LanguageAwareRenderer[]
+ */
+ private $languageAwareRenderers = array();
+
+ /**
* @param PropertyIdResolver $propertyIdResolver
* @param SnaksFinder $snaksFinder
* @param LanguageFallbackChainFactory $languageFallbackChainFactory
@@ -85,6 +90,30 @@
}
/**
+ * @param string $languageCode
+ *
+ * @return LanguageAwareRenderer
+ */
+ public function getLanguageAwareRendererFromCode( $languageCode ) {
+ if ( !isset( $this->languageAwareRenderers[$languageCode] ) ) {
+ $languageAwareRenderer =
$this->newLanguageAwareRendererFromCode( $languageCode );
+ $this->languageAwareRenderers[$languageCode] =
$languageAwareRenderer;
+ }
+
+ return $this->languageAwareRenderers[$languageCode];
+ }
+
+ /**
+ * @param string $languageCode
+ *
+ * @return LanguageAwareRenderer
+ */
+ private function newLanguageAwareRendererFromCode( $languageCode ) {
+ $language = Language::factory( $languageCode );
+ return $this->newLanguageAwareRenderer( $language );
+ }
+
+ /**
* @param string[] $variants
*
* @return VariantsAwareRenderer
diff --git
a/client/includes/DataAccess/PropertyParserFunction/VariantsAwareRenderer.php
b/client/includes/DataAccess/PropertyParserFunction/VariantsAwareRenderer.php
index 34ce72d..82e66f9 100644
---
a/client/includes/DataAccess/PropertyParserFunction/VariantsAwareRenderer.php
+++
b/client/includes/DataAccess/PropertyParserFunction/VariantsAwareRenderer.php
@@ -101,8 +101,7 @@
* @return string
*/
private function getVariantText( $variantCode, EntityId $entityId,
$propertyLabelOrId ) {
- $variantLanguage = Language::factory( $variantCode );
- $renderer = $this->rendererFactory->newLanguageAwareRenderer(
$variantLanguage );
+ $renderer =
$this->rendererFactory->getLanguageAwareRendererFromCode( $variantCode );
return $renderer->render( $entityId, $propertyLabelOrId );
}
diff --git
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactoryTest.php
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactoryTest.php
index 516cb79..1c45aa8 100644
---
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactoryTest.php
+++
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/PropertyClaimsRendererFactoryTest.php
@@ -68,12 +68,7 @@
}
public function testNewLanguageAwareRenderer() {
- $rendererFactory = new PropertyClaimsRendererFactory(
- $this->getPropertyIdResolver(),
- $this->getSnaksFinder(),
- $this->getLanguageFallbackChainFactory(),
- $this->getSnakFormatterFactory()
- );
+ $rendererFactory = $this->getPropertyClaimsRendererFactory();
$language = Language::factory( 'he' );
$renderer = $rendererFactory->newLanguageAwareRenderer(
$language );
@@ -82,6 +77,23 @@
$this->assertInstanceOf( $languageRendererClass, $renderer );
}
+ public function testGetLanguageAwareRendererFromCode() {
+ $rendererFactory = $this->getPropertyClaimsRendererFactory();
+ $renderer = $rendererFactory->getLanguageAwareRendererFromCode(
'ar' );
+
+ $languageRendererClass =
'Wikibase\DataAccess\PropertyParserFunction\LanguageAwareRenderer';
+ $this->assertInstanceOf( $languageRendererClass, $renderer );
+ }
+
+ private function getPropertyClaimsRendererFactory() {
+ return new PropertyClaimsRendererFactory(
+ $this->getPropertyIdResolver(),
+ $this->getSnaksFinder(),
+ $this->getLanguageFallbackChainFactory(),
+ $this->getSnakFormatterFactory()
+ );
+ }
+
private function getPropertyIdResolver() {
$propertyIdResolver = $this->getMockBuilder(
'Wikibase\DataAccess\PropertyParserFunction\PropertyIdResolver'
diff --git
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/VariantsAwareRendererTest.php
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/VariantsAwareRendererTest.php
index e6122d1..ac5c3d9 100644
---
a/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/VariantsAwareRendererTest.php
+++
b/client/tests/phpunit/includes/DataAccess/PropertyParserFunction/VariantsAwareRendererTest.php
@@ -34,6 +34,10 @@
->method( 'newLanguageAwareRenderer' )
->will( $this->returnValue( $languageRenderer ) );
+ $rendererFactory->expects( $this->any() )
+ ->method( 'getLanguageAwareRendererFromCode' )
+ ->will( $this->returnValue( $languageRenderer ) );
+
$variantsRenderer = new VariantsAwareRenderer(
$rendererFactory,
$variants
--
To view, visit https://gerrit.wikimedia.org/r/148672
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I40864028bd45727924412c84944342a84c842a54
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Aude <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits