jenkins-bot has submitted this change and it was merged.

Change subject: Introduce DispatchingEntityTypeStatementGrouper
......................................................................


Introduce DispatchingEntityTypeStatementGrouper

Bug: T120661
Change-Id: I18381d6d99d50b4d9cd1cdb6287464a658715bef
---
M repo/config/Wikibase.default.php
A repo/includes/DispatchingEntityTypeStatementGrouper.php
A repo/includes/StatementGrouperBuilder.php
D repo/includes/StatementGrouperFactory.php
M repo/includes/WikibaseRepo.php
A repo/tests/phpunit/includes/DispatchingEntityTypeStatementGrouperTest.php
A repo/tests/phpunit/includes/StatementGrouperBuilderTest.php
M view/src/EntityViewFactory.php
M view/tests/phpunit/EntityViewFactoryTest.php
9 files changed, 480 insertions(+), 42 deletions(-)

Approvals:
  Jonas Kress (WMDE): Looks good to me, approved
  jenkins-bot: Verified



diff --git a/repo/config/Wikibase.default.php b/repo/config/Wikibase.default.php
index fe30007..9ea5850 100644
--- a/repo/config/Wikibase.default.php
+++ b/repo/config/Wikibase.default.php
@@ -27,6 +27,9 @@
 
                'entityNamespaces' => array(),
 
+               // See StatementGrouperBuilder for an example.
+               'statementSections' => array(),
+
                // Define constraints for multilingual terms (such as labels, 
descriptions and aliases).
                'multilang-limits' => array(
                        'length' => 250, // length constraint
diff --git a/repo/includes/DispatchingEntityTypeStatementGrouper.php 
b/repo/includes/DispatchingEntityTypeStatementGrouper.php
new file mode 100644
index 0000000..558d25c
--- /dev/null
+++ b/repo/includes/DispatchingEntityTypeStatementGrouper.php
@@ -0,0 +1,93 @@
+<?php
+
+namespace Wikibase\Repo;
+
+use InvalidArgumentException;
+use Wikibase\DataModel\Entity\BasicEntityIdParser;
+use Wikibase\DataModel\Services\Statement\Grouper\NullStatementGrouper;
+use Wikibase\DataModel\Services\Statement\Grouper\StatementGrouper;
+use Wikibase\DataModel\Services\Statement\StatementGuidParser;
+use Wikibase\DataModel\Services\Statement\StatementGuidParsingException;
+use Wikibase\DataModel\Statement\Statement;
+use Wikibase\DataModel\Statement\StatementList;
+
+/**
+ * @since 0.5
+ *
+ * @license GNU GPL v2+
+ * @author Thiemo Mättig
+ */
+class DispatchingEntityTypeStatementGrouper implements StatementGrouper {
+
+       /**
+        * @var StatementGrouper[]
+        */
+       private $statementGroupers = array();
+
+       /**
+        * @var StatementGuidParser
+        */
+       private $guidParser;
+
+       /**
+        * @param StatementGrouper[] $statementGroupers An associative array, 
mapping entity types
+        *  (typically "item" and "property") to StatementGrouper objects.
+        *
+        * @throws InvalidArgumentException
+        */
+       public function __construct( array $statementGroupers ) {
+               foreach ( $statementGroupers as $key => $grouper ) {
+                       if ( !is_string( $key ) || !( $grouper instanceof 
StatementGrouper ) ) {
+                               throw new InvalidArgumentException(
+                                       '$statementGroupers must map strings to 
StatementGroupers'
+                               );
+                       }
+                       $this->statementGroupers[$key] = $grouper;
+               }
+
+               // TODO: Inject?
+               $this->guidParser = new StatementGuidParser( new 
BasicEntityIdParser() );
+       }
+
+       /**
+        * @param StatementList $statements
+        *
+        * @return StatementList[]
+        */
+       public function groupStatements( StatementList $statements ) {
+               return $this->getStatementGrouper( $statements 
)->groupStatements( $statements );
+       }
+
+       /**
+        * @param StatementList $statements
+        *
+        * @return StatementGrouper
+        */
+       private function getStatementGrouper( StatementList $statements ) {
+               foreach ( $statements->toArray() as $statement ) {
+                       $entityType = $this->getEntityType( $statement );
+
+                       if ( array_key_exists( $entityType, 
$this->statementGroupers ) ) {
+                               return $this->statementGroupers[$entityType];
+                       }
+               }
+
+               return new NullStatementGrouper();
+       }
+
+       /**
+        * @param Statement $statement
+        *
+        * @return string|null
+        */
+       private function getEntityType( Statement $statement ) {
+               try {
+                       $guid = $this->guidParser->parse( $statement->getGuid() 
);
+               } catch ( StatementGuidParsingException $ex ) {
+                       return null;
+               }
+
+               return $guid->getEntityId()->getEntityType();
+       }
+
+}
diff --git a/repo/includes/StatementGrouperBuilder.php 
b/repo/includes/StatementGrouperBuilder.php
new file mode 100644
index 0000000..b1da762
--- /dev/null
+++ b/repo/includes/StatementGrouperBuilder.php
@@ -0,0 +1,133 @@
+<?php
+
+namespace Wikibase\Repo;
+
+use InvalidArgumentException;
+use Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup;
+use Wikibase\DataModel\Services\Statement\Filter\DataTypeStatementFilter;
+use Wikibase\DataModel\Services\Statement\Filter\NullStatementFilter;
+use Wikibase\DataModel\Services\Statement\Filter\PropertySetStatementFilter;
+use Wikibase\DataModel\Services\Statement\Grouper\FilteringStatementGrouper;
+use Wikibase\DataModel\Services\Statement\Grouper\NullStatementGrouper;
+use Wikibase\DataModel\Services\Statement\Grouper\StatementGrouper;
+use Wikibase\DataModel\Statement\StatementFilter;
+
+/**
+ * Factory for a StatementGrouper. The grouper is instantiated based on a 
specification array that
+ * has the following form:
+ *
+ * array(
+ *     'item' => array(
+ *         'statements' => null,
+ *         'example' => array(
+ *             'type' => 'propertySet',
+ *             'propertyIds' => array( 'P1' ),
+ *         ),
+ *         'identifiers' => array(
+ *             'type' => 'dataType',
+ *             'dataTypes' => array( 'identifier' ),
+ *         ),
+ *     ),
+ *     'property' => array(
+ *     ),
+ * ),
+ *
+ * @since 0.5
+ *
+ * @license GNU GPL v2+
+ * @author Daniel Kinzler
+ * @author Thiemo Mättig
+ */
+class StatementGrouperBuilder {
+
+       /**
+        * @var array[]
+        */
+       private $specifications;
+
+       /**
+        * @var PropertyDataTypeLookup
+        */
+       private $dataTypeLookup;
+
+       /**
+        * @param array[] $specifications See the class level documentation for 
details.
+        * @param PropertyDataTypeLookup $dataTypeLookup
+        */
+       public function __construct( array $specifications, 
PropertyDataTypeLookup $dataTypeLookup ) {
+               $this->specifications = $specifications;
+               $this->dataTypeLookup = $dataTypeLookup;
+       }
+
+       /**
+        * @throws InvalidArgumentException
+        * @return StatementGrouper
+        */
+       public function getStatementGrouper() {
+               $groupers = array();
+
+               foreach ( $this->specifications as $entityType => $filterSpecs 
) {
+                       $groupers[$entityType] = $filterSpecs === null
+                               ? new NullStatementGrouper()
+                               : $this->newFilteringStatementGrouper( 
$filterSpecs );
+               }
+
+               return new DispatchingEntityTypeStatementGrouper( $groupers );
+       }
+
+       /**
+        * @param array[] $filterSpecs
+        *
+        * @throws InvalidArgumentException
+        * @return FilteringStatementGrouper
+        */
+       private function newFilteringStatementGrouper( array $filterSpecs ) {
+               $filters = array();
+
+               foreach ( $filterSpecs as $groupIdentifier => $spec ) {
+                       $filters[$groupIdentifier] = $spec === null
+                               ? null
+                               : $this->newStatementFilter( $spec );
+               }
+
+               return new FilteringStatementGrouper( $filters );
+       }
+
+       /**
+        * @param array $spec
+        *
+        * @throws InvalidArgumentException
+        * @return StatementFilter
+        */
+       private function newStatementFilter( array $spec ) {
+               $this->requireField( $spec, 'type' );
+
+               switch ( $spec['type'] ) {
+                       case null:
+                               return new NullStatementFilter();
+                       case 'dataType':
+                               $this->requireField( $spec, 'dataTypes' );
+                               return new DataTypeStatementFilter( 
$this->dataTypeLookup, $spec['dataTypes'] );
+                       case 'propertySet':
+                               $this->requireField( $spec, 'propertyIds' );
+                               return new PropertySetStatementFilter( 
$spec['propertyIds'] );
+               }
+
+               throw new InvalidArgumentException( 'Unknown filter type: ' . 
$spec['type'] );
+       }
+
+       /**
+        * @param array $spec
+        * @param string $field
+        *
+        * @throws InvalidArgumentException
+        */
+       private function requireField( array $spec, $field ) {
+               if ( !array_key_exists( $field, $spec ) ) {
+                       throw new InvalidArgumentException(
+                               "Statement group configuration misses required 
field '$field'"
+                       );
+               }
+       }
+
+}
diff --git a/repo/includes/StatementGrouperFactory.php 
b/repo/includes/StatementGrouperFactory.php
deleted file mode 100644
index 2e614a6..0000000
--- a/repo/includes/StatementGrouperFactory.php
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-namespace Wikibase\Repo;
-
-use Wikibase\DataModel\Services\Statement\Grouper\NullStatementGrouper;
-use Wikibase\DataModel\Services\Statement\Grouper\StatementGrouper;
-
-/**
- * Factory for StatementGrouper instances for different entity types.
- *
- * @since 0.5
- *
- * @license GNU GPL v2+
- * @author Daniel Kinzler
- */
-class StatementGrouperFactory {
-
-       /**
-        * @param string $entityType
-        *
-        * @return StatementGrouper
-        */
-       public function getStatementGrouper( $entityType ) {
-               // TODO: Group statements into actual sections, including an 
identifiers section.
-               return new NullStatementGrouper();
-       }
-
-}
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index 64ac2bd..90073f1 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -18,6 +18,7 @@
 use ValueFormatters\FormatterOptions;
 use ValueFormatters\ValueFormatter;
 use Wikibase\DataModel\Entity\PropertyId;
+use Wikibase\DataModel\Services\Statement\Grouper\FilteringStatementGrouper;
 use Wikibase\Lib\DataTypeDefinitions;
 use Wikibase\ChangeOp\ChangeOpFactoryProvider;
 use Wikibase\DataModel\DeserializerFactory;
@@ -1310,11 +1311,18 @@
         */
        public function getEntityParserOutputGeneratorFactory() {
                $templateFactory = TemplateFactory::getDefaultInstance();
+               $dataTypeLookup = $this->getPropertyDataTypeLookup();
+
+               $statementGrouperBuilder = new StatementGrouperBuilder(
+                       $this->settings->getSetting( 'statementSections' ),
+                       $dataTypeLookup
+               );
+
                $entityViewFactory = new EntityViewFactory(
                        $this->getEntityIdHtmlLinkFormatterFactory(),
                        new EntityIdLabelFormatterFactory(),
                        $this->getHtmlSnakFormatterFactory(),
-                       new StatementGrouperFactory(),
+                       $statementGrouperBuilder->getStatementGrouper(),
                        $this->getSiteStore(),
                        $this->getDataTypeFactory(),
                        $templateFactory,
@@ -1335,7 +1343,7 @@
                        $this->getLanguageFallbackChainFactory(),
                        $templateFactory,
                        $entityDataFormatProvider,
-                       $this->getPropertyDataTypeLookup(),
+                       $dataTypeLookup,
                        $this->getLocalEntityUriParser(),
                        $this->settings->getSetting( 
'preferredGeoDataProperties' ),
                        $this->settings->getSetting( 
'preferredPageImagesProperties' ),
diff --git 
a/repo/tests/phpunit/includes/DispatchingEntityTypeStatementGrouperTest.php 
b/repo/tests/phpunit/includes/DispatchingEntityTypeStatementGrouperTest.php
new file mode 100644
index 0000000..d4db3ac
--- /dev/null
+++ b/repo/tests/phpunit/includes/DispatchingEntityTypeStatementGrouperTest.php
@@ -0,0 +1,74 @@
+<?php
+
+namespace Wikibase\Test;
+
+use PHPUnit_Framework_TestCase;
+use Wikibase\DataModel\Services\Statement\Grouper\StatementGrouper;
+use Wikibase\DataModel\Snak\PropertyNoValueSnak;
+use Wikibase\DataModel\Statement\StatementList;
+use Wikibase\Repo\DispatchingEntityTypeStatementGrouper;
+
+/**
+ * @covers Wikibase\Repo\DispatchingEntityTypeStatementGrouper
+ *
+ * @group Wikibase
+ *
+ * @licence GNU GPL v2+
+ * @author Thiemo Mättig
+ */
+class DispatchingEntityTypeStatementGrouperTest extends 
PHPUnit_Framework_TestCase {
+
+       /**
+        * @param int $count
+        *
+        * @return StatementGrouper
+        */
+       private function newGrouper( $count ) {
+               $grouper = $this->getMock(
+                       
'Wikibase\DataModel\Services\Statement\Grouper\StatementGrouper'
+               );
+
+               $grouper->expects( $this->exactly( $count ) )
+                       ->method( 'groupStatements' );
+
+               return $grouper;
+       }
+
+       /**
+        * @dataProvider invalidConstructorArgumentProvider
+        */
+       public function testInvalidConstructorArgument( array $groupers ) {
+               $this->setExpectedException( 'InvalidArgumentException' );
+               new DispatchingEntityTypeStatementGrouper( $groupers );
+       }
+
+       public function invalidConstructorArgumentProvider() {
+               return array(
+                       array( array( $this->newGrouper( 0 ) ) ),
+                       array( array( 'item' => 'invalid' ) ),
+               );
+       }
+
+       public function testFallsBackToNullGrouper() {
+               $statements = new StatementList();
+               $statements->addNewStatement( new PropertyNoValueSnak( 1 ), 
null, null, 'Q1$' );
+
+               $grouper = new DispatchingEntityTypeStatementGrouper( array() );
+               $groups = $grouper->groupStatements( $statements );
+
+               $this->assertSame( array( 'statements' => $statements ), 
$groups );
+       }
+
+       public function testUsesFirstStatementsGuid() {
+               $statements = new StatementList();
+               $statements->addNewStatement( new PropertyNoValueSnak( 1 ), 
null, null, 'Q1$' );
+               $statements->addNewStatement( new PropertyNoValueSnak( 1 ), 
null, null, 'P1$' );
+
+               $grouper = new DispatchingEntityTypeStatementGrouper( array(
+                       'item' => $this->newGrouper( 1 ),
+                       'property' => $this->newGrouper( 0 ),
+               ) );
+               $grouper->groupStatements( $statements );
+       }
+
+}
diff --git a/repo/tests/phpunit/includes/StatementGrouperBuilderTest.php 
b/repo/tests/phpunit/includes/StatementGrouperBuilderTest.php
new file mode 100644
index 0000000..bfa54f5
--- /dev/null
+++ b/repo/tests/phpunit/includes/StatementGrouperBuilderTest.php
@@ -0,0 +1,157 @@
+<?php
+
+namespace Wikibase\Test;
+
+use PHPUnit_Framework_TestCase;
+use Wikibase\DataModel\Snak\PropertyNoValueSnak;
+use Wikibase\DataModel\Statement\StatementList;
+use Wikibase\Repo\StatementGrouperBuilder;
+
+/**
+ * @covers Wikibase\Repo\StatementGrouperBuilder
+ *
+ * @group Wikibase
+ *
+ * @licence GNU GPL v2+
+ * @author Thiemo Mättig
+ */
+class StatementGrouperBuilderTest extends PHPUnit_Framework_TestCase {
+
+       /**
+        * @param array[] $specifications
+        *
+        * @return StatementGrouperBuilder
+        */
+       private function newInstance( array $specifications ) {
+               $lookup = $this->getMock( 
'Wikibase\DataModel\Services\Lookup\PropertyDataTypeLookup' );
+
+               $lookup->expects( $this->any() )
+                       ->method( 'getDataTypeIdForProperty' )
+                       ->will( $this->returnValue( true ) );
+
+               return new StatementGrouperBuilder( $specifications, $lookup );
+       }
+
+       /**
+        * @return StatementList
+        */
+       private function newStatementList() {
+               $statements = new StatementList();
+               $statements->addNewStatement( new PropertyNoValueSnak( 1 ), 
null, null, 'Q1$' );
+               return $statements;
+       }
+
+       public function testAcceptsEmptyArray() {
+               $builder = $this->newInstance( array() );
+               $grouper = $builder->getStatementGrouper();
+               $this->assertInstanceOf( 
'Wikibase\Repo\DispatchingEntityTypeStatementGrouper', $grouper );
+       }
+
+       public function testAcceptsNullGrouper() {
+               $statements = $this->newStatementList();
+
+               $builder = $this->newInstance( array(
+                       'item' => null,
+               ) );
+               $grouper = $builder->getStatementGrouper();
+               $groups = $grouper->groupStatements( $statements );
+
+               $this->assertSame( array( 'statements' => $statements ), 
$groups );
+       }
+
+       public function testAcceptsDefaultFilter() {
+               $statements = $this->newStatementList();
+
+               $builder = $this->newInstance( array(
+                       'item' => array(
+                               'default' => null,
+                       )
+               ) );
+               $grouper = $builder->getStatementGrouper();
+               $groups = $grouper->groupStatements( $statements );
+
+               $this->assertEquals( array( 'default' => $statements ), $groups 
);
+       }
+
+       public function testAcceptsNullFilter() {
+               $statements = $this->newStatementList();
+
+               $builder = $this->newInstance( array(
+                       'item' => array(
+                               'custom' => array( 'type' => null ),
+                       )
+               ) );
+               $grouper = $builder->getStatementGrouper();
+               $groups = $grouper->groupStatements( $statements );
+
+               $this->assertEquals( array(
+                       'custom' => $statements,
+                       'statements' => new StatementList(),
+               ), $groups );
+       }
+
+       public function testIncompleteDataTypeFilter() {
+               $builder = $this->newInstance( array(
+                       'item' => array(
+                               'custom' => array( 'type' => 'dataType' ),
+                       )
+               ) );
+               $this->setExpectedException( 'InvalidArgumentException' );
+               $builder->getStatementGrouper();
+       }
+
+       public function testDataTypeFilter() {
+               $statements = $this->newStatementList();
+
+               $builder = $this->newInstance( array(
+                       'item' => array(
+                               'custom' => array( 'type' => 'dataType', 
'dataTypes' => array( 'string' ) ),
+                       )
+               ) );
+               $grouper = $builder->getStatementGrouper();
+               $groups = $grouper->groupStatements( $statements );
+
+               $this->assertEquals( array(
+                       'custom' => $statements,
+                       'statements' => new StatementList(),
+               ), $groups );
+       }
+
+       public function testIncompletePropertySetFilter() {
+               $builder = $this->newInstance( array(
+                       'item' => array(
+                               'custom' => array( 'type' => 'propertySet' ),
+                       )
+               ) );
+               $this->setExpectedException( 'InvalidArgumentException' );
+               $builder->getStatementGrouper();
+       }
+
+       public function testPropertySetFilter() {
+               $statements = $this->newStatementList();
+
+               $builder = $this->newInstance( array(
+                       'item' => array(
+                               'custom' => array( 'type' => 'propertySet', 
'propertyIds' => array( 'P1' ) ),
+                       )
+               ) );
+               $grouper = $builder->getStatementGrouper();
+               $groups = $grouper->groupStatements( $statements );
+
+               $this->assertEquals( array(
+                       'custom' => $statements,
+                       'statements' => new StatementList(),
+               ), $groups );
+       }
+
+       public function testInvalidFilterType() {
+               $builder = $this->newInstance( array(
+                       'item' => array(
+                               'custom' => array( 'type' => 'invalid' ),
+                       )
+               ) );
+               $this->setExpectedException( 'InvalidArgumentException' );
+               $builder->getStatementGrouper();
+       }
+
+}
diff --git a/view/src/EntityViewFactory.php b/view/src/EntityViewFactory.php
index a78ed1a..12c9d99 100644
--- a/view/src/EntityViewFactory.php
+++ b/view/src/EntityViewFactory.php
@@ -7,10 +7,10 @@
 use Language;
 use SiteStore;
 use Wikibase\DataModel\Services\Lookup\LabelDescriptionLookup;
+use Wikibase\DataModel\Services\Statement\Grouper\StatementGrouper;
 use Wikibase\LanguageFallbackChain;
 use Wikibase\Lib\LanguageNameLookup;
 use Wikibase\Lib\SnakFormatter;
-use Wikibase\Repo\StatementGrouperFactory;
 use Wikibase\View\Template\TemplateFactory;
 
 /**
@@ -38,9 +38,9 @@
        private $plainTextIdFormatterFactory;
 
        /**
-        * @var StatementGrouperFactory
+        * @var StatementGrouper
         */
-       private $statementGrouperFactory;
+       private $statementGrouper;
 
        /**
         * @var SiteStore
@@ -81,7 +81,7 @@
         * @param EntityIdFormatterFactory $htmlIdFormatterFactory
         * @param EntityIdFormatterFactory $plainTextIdFormatterFactory
         * @param HtmlSnakFormatterFactory $htmlSnakFormatterFactory
-        * @param StatementGrouperFactory $statementGrouperFactory,
+        * @param StatementGrouper $statementGrouper
         * @param SiteStore $siteStore
         * @param DataTypeFactory $dataTypeFactory
         * @param TemplateFactory $templateFactory
@@ -96,7 +96,7 @@
                EntityIdFormatterFactory $htmlIdFormatterFactory,
                EntityIdFormatterFactory $plainTextIdFormatterFactory,
                HtmlSnakFormatterFactory $htmlSnakFormatterFactory,
-               StatementGrouperFactory $statementGrouperFactory,
+               StatementGrouper $statementGrouper,
                SiteStore $siteStore,
                DataTypeFactory $dataTypeFactory,
                TemplateFactory $templateFactory,
@@ -114,7 +114,7 @@
                $this->htmlIdFormatterFactory = $htmlIdFormatterFactory;
                $this->plainTextIdFormatterFactory = 
$plainTextIdFormatterFactory;
                $this->htmlSnakFormatterFactory = $htmlSnakFormatterFactory;
-               $this->statementGrouperFactory = $statementGrouperFactory;
+               $this->statementGrouper = $statementGrouper;
                $this->siteStore = $siteStore;
                $this->dataTypeFactory = $dataTypeFactory;
                $this->templateFactory = $templateFactory;
@@ -165,8 +165,6 @@
         ) {
                $entityTermsView = $this->newEntityTermsView( $languageCode, 
$editSectionGenerator );
 
-               $statementGrouper = 
$this->statementGrouperFactory->getStatementGrouper( $entityType );
-
                $statementSectionsView = $this->newStatementSectionsView(
                        $languageCode,
                        $fallbackChain,
@@ -193,7 +191,7 @@
                                return new ItemView(
                                        $this->templateFactory,
                                        $entityTermsView,
-                                       $statementGrouper,
+                                       $this->statementGrouper,
                                        $statementSectionsView,
                                        $language,
                                        $siteLinksView,
@@ -203,7 +201,7 @@
                                return new PropertyView(
                                        $this->templateFactory,
                                        $entityTermsView,
-                                       $statementGrouper,
+                                       $this->statementGrouper,
                                        $statementSectionsView,
                                        $this->dataTypeFactory,
                                        $language
diff --git a/view/tests/phpunit/EntityViewFactoryTest.php 
b/view/tests/phpunit/EntityViewFactoryTest.php
index cdec272..611eea4 100644
--- a/view/tests/phpunit/EntityViewFactoryTest.php
+++ b/view/tests/phpunit/EntityViewFactoryTest.php
@@ -5,9 +5,9 @@
 use DataTypes\DataTypeFactory;
 use PHPUnit_Framework_TestCase;
 use SiteList;
+use Wikibase\DataModel\Services\Statement\Grouper\NullStatementGrouper;
 use Wikibase\LanguageFallbackChain;
 use Wikibase\Lib\SnakFormatter;
-use Wikibase\Repo\StatementGrouperFactory;
 use Wikibase\View\EntityIdFormatterFactory;
 use Wikibase\View\EntityViewFactory;
 use Wikibase\View\Template\TemplateFactory;
@@ -53,7 +53,7 @@
                        $htmlFactory ?: $this->getEntityIdFormatterFactory( 
SnakFormatter::FORMAT_HTML ),
                        $plainFactory ?: $this->getEntityIdFormatterFactory( 
SnakFormatter::FORMAT_PLAIN ),
                        $this->getSnakFormatterFactory(),
-                       new StatementGrouperFactory(),
+                       new NullStatementGrouper(),
                        $this->getSiteStore(),
                        new DataTypeFactory( array() ),
                        $templateFactory,

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I18381d6d99d50b4d9cd1cdb6287464a658715bef
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Thiemo Mättig (WMDE) <[email protected]>
Gerrit-Reviewer: Adrian Lang <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[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