Ladsgroup has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/335616 )

Change subject: [Code experiment] Make RdfBuilder injectable
......................................................................

[Code experiment] Make RdfBuilder injectable

Change-Id: I3f92326cdfbfc21de194123cdda093f791cfbd4c
---
M lib/includes/EntityTypeDefinitions.php
M repo/includes/Rdf/RdfBuilder.php
M repo/includes/WikibaseRepo.php
3 files changed, 39 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikibase 
refs/changes/16/335616/1

diff --git a/lib/includes/EntityTypeDefinitions.php 
b/lib/includes/EntityTypeDefinitions.php
index 336f534..7a3b1d1 100644
--- a/lib/includes/EntityTypeDefinitions.php
+++ b/lib/includes/EntityTypeDefinitions.php
@@ -164,4 +164,12 @@
                return $this->getMapForDefinitionField( 
'changeop-deserializer-callback' );
        }
 
+       /**
+        * @return callable[] An array mapping entity type identifiers
+        * to callables instantiating an array of implementations of 
EntityRdfBuilder.
+        * Not guaranteed to contain all entity types.
+        */
+       public function getRdfBuildersCallbacks() {
+               return $this->getMapForDefinitionField( 'rdf-builders-callback' 
);
+       }
 }
diff --git a/repo/includes/Rdf/RdfBuilder.php b/repo/includes/Rdf/RdfBuilder.php
index 986b78f..dc0b673 100644
--- a/repo/includes/Rdf/RdfBuilder.php
+++ b/repo/includes/Rdf/RdfBuilder.php
@@ -2,6 +2,7 @@
 
 namespace Wikibase\Rdf;
 
+use Doctrine\Instantiator\Exception\UnexpectedValueException;
 use PageProps;
 use SiteList;
 use Wikibase\DataModel\Entity\EntityDocument;
@@ -14,6 +15,8 @@
 use Wikibase\DataModel\Term\LabelsProvider;
 use Wikibase\Lib\Store\EntityTitleLookup;
 use Wikibase\Lib\Store\RevisionedUnresolvedRedirectException;
+use Wikibase\Repo\WikibaseRepo;
+use Wikimedia\Assert\Assert;
 use Wikimedia\Purtle\RdfWriter;
 
 /**
@@ -140,8 +143,28 @@
                        $builder->setDedupeBag( $this->dedupeBag );
                        $this->builders[] = $builder;
                }
+
+               $this->addExtraBuilders();
        }
 
+       private function addExtraBuilders() {
+               $rdfBuilderCallbacks = 
WikibaseRepo::getDefaultInstance()->getRdfBuildersCallbacks();
+               foreach ( $rdfBuilderCallbacks as $entity => 
$rdfBuilderCallback ) {
+                       foreach ( $rdfBuilderCallback as $rdfBuilder ) {
+                               Assert::parameter( EntityRdfBuilder::class, 
$rdfBuilder, '$rdfBuilder' );
+
+                               $this->builders[] = call_user_func_array( 
$rdfBuilder, [
+                                       $this->vocabulary,
+                                       $this->propertyLookup,
+                                       $this->valueSnakRdfBuilderFactory,
+                                       $this->writer,
+                                       $this->produceWhat,
+                                       $this->dedupeBag,
+                                       $this->titleLookup
+                               ] );
+                       }
+               }
+       }
        /**
         * @param int $flavorFlags Flavor flags to use for this builder
         * @return SnakRdfBuilder
diff --git a/repo/includes/WikibaseRepo.php b/repo/includes/WikibaseRepo.php
index b00f0ad..47696ff 100644
--- a/repo/includes/WikibaseRepo.php
+++ b/repo/includes/WikibaseRepo.php
@@ -1847,4 +1847,12 @@
                return 
$this->entityTypeDefinitions->getChangeOpDeserializerCallbacks();
        }
 
+       /**
+        * @see EntityTypeDefinitions::getRdfBuildersCallbacks
+        *
+        * @return callable[]
+        */
+       public function getRdfBuildersCallbacks() {
+               return $this->entityTypeDefinitions->getRdfBuildersCallbacks();
+       }
 }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3f92326cdfbfc21de194123cdda093f791cfbd4c
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Ladsgroup <ladsgr...@gmail.com>

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

Reply via email to