jenkins-bot has submitted this change and it was merged.
Change subject: Split SourceStore classes in separate files
......................................................................
Split SourceStore classes in separate files
Change-Id: I47805ec8cb7e65355f8eb154a430d543a059d050
---
M autoload.php
M includes/Import/Converter.php
M includes/Import/Exception.php
M includes/Import/IConversionStrategy.php
D includes/Import/ImportSourceStore.php
M includes/Import/Importer.php
M includes/Import/LiquidThreadsApi/ConversionStrategy.php
A includes/Import/SourceStore/Exception.php
A includes/Import/SourceStore/File.php
A includes/Import/SourceStore/Null.php
A includes/Import/SourceStore/SourceStoreInterface.php
M includes/Import/Wikitext/ConversionStrategy.php
M includes/Specials/SpecialEnableFlow.php
M maintenance/convertAllLqtPages.php
M maintenance/convertLqtPageFromRemoteApiForTesting.php
M maintenance/convertLqtPageOnLocalWiki.php
M maintenance/convertNamespaceFromWikitext.php
M tests/phpunit/Import/LiquidThreadsApi/ConversionStrategyTest.php
M tests/phpunit/Import/PageImportStateTest.php
M tests/phpunit/Import/TalkpageImportOperationTest.php
M tests/phpunit/Import/Wikitext/ConversionStrategyTest.php
21 files changed, 135 insertions(+), 119 deletions(-)
Approvals:
Catrope: Looks good to me, approved
jenkins-bot: Verified
diff --git a/autoload.php b/autoload.php
index 29188d1..7ee1046 100644
--- a/autoload.php
+++ b/autoload.php
@@ -177,7 +177,6 @@
'Flow\\Import\\ArchiveNameHelper' => __DIR__ .
'/includes/Import/ArchiveNameHelper.php',
'Flow\\Import\\Converter' => __DIR__ . '/includes/Import/Converter.php',
'Flow\\Import\\EnableFlow\\EnableFlowWikitextConversionStrategy' =>
__DIR__ .
'/includes/Import/EnableFlow/EnableFlowWikitextConversionStrategy.php',
- 'Flow\\Import\\FileImportSourceStore' => __DIR__ .
'/includes/Import/ImportSourceStore.php',
'Flow\\Import\\HistoricalUIDGenerator' => __DIR__ .
'/includes/Import/Importer.php',
'Flow\\Import\\IConversionStrategy' => __DIR__ .
'/includes/Import/IConversionStrategy.php',
'Flow\\Import\\IImportHeader' => __DIR__ .
'/includes/Import/ImportSource.php',
@@ -189,8 +188,6 @@
'Flow\\Import\\IObjectRevision' => __DIR__ .
'/includes/Import/ImportSource.php',
'Flow\\Import\\IRevisionableObject' => __DIR__ .
'/includes/Import/ImportSource.php',
'Flow\\Import\\ImportException' => __DIR__ .
'/includes/Import/Exception.php',
- 'Flow\\Import\\ImportSourceStore' => __DIR__ .
'/includes/Import/ImportSourceStore.php',
- 'Flow\\Import\\ImportSourceStoreException' => __DIR__ .
'/includes/Import/Exception.php',
'Flow\\Import\\Importer' => __DIR__ . '/includes/Import/Importer.php',
'Flow\\Import\\LiquidThreadsApi\\ApiBackend' => __DIR__ .
'/includes/Import/LiquidThreadsApi/Source.php',
'Flow\\Import\\LiquidThreadsApi\\ApiNotFoundException' => __DIR__ .
'/includes/Import/LiquidThreadsApi/Exception.php',
@@ -215,7 +212,6 @@
'Flow\\Import\\LiquidThreadsApi\\RevisionIterator' => __DIR__ .
'/includes/Import/LiquidThreadsApi/Iterators.php',
'Flow\\Import\\LiquidThreadsApi\\ScriptedImportRevision' => __DIR__ .
'/includes/Import/LiquidThreadsApi/Objects.php',
'Flow\\Import\\LiquidThreadsApi\\TopicIterator' => __DIR__ .
'/includes/Import/LiquidThreadsApi/Iterators.php',
- 'Flow\\Import\\NullImportSourceStore' => __DIR__ .
'/includes/Import/ImportSourceStore.php',
'Flow\\Import\\OptInController' => __DIR__ .
'/includes/Import/OptInController.php',
'Flow\\Import\\OptInUpdate' => __DIR__ .
'/includes/Import/OptInUpdate.php',
'Flow\\Import\\PageImportState' => __DIR__ .
'/includes/Import/Importer.php',
@@ -227,6 +223,10 @@
'Flow\\Import\\Postprocessor\\Postprocessor' => __DIR__ .
'/includes/Import/Postprocessor/Postprocessor.php',
'Flow\\Import\\Postprocessor\\ProcessorGroup' => __DIR__ .
'/includes/Import/Postprocessor/ProcessorGroup.php',
'Flow\\Import\\Postprocessor\\SpecialLogTopic' => __DIR__ .
'/includes/Import/Postprocessor/SpecialLogTopic.php',
+ 'Flow\\Import\\SourceStore\\Exception' => __DIR__ .
'/includes/Import/SourceStore/Exception.php',
+ 'Flow\\Import\\SourceStore\\File' => __DIR__ .
'/includes/Import/SourceStore/File.php',
+ 'Flow\\Import\\SourceStore\\Null' => __DIR__ .
'/includes/Import/SourceStore/Null.php',
+ 'Flow\\Import\\SourceStore\\SourceStoreInterface' => __DIR__ .
'/includes/Import/SourceStore/SourceStoreInterface.php',
'Flow\\Import\\TalkpageImportOperation' => __DIR__ .
'/includes/Import/Importer.php',
'Flow\\Import\\TemplateHelper' => __DIR__ .
'/includes/Import/TemplateHelper.php',
'Flow\\Import\\TopicImportState' => __DIR__ .
'/includes/Import/Importer.php',
diff --git a/includes/Import/Converter.php b/includes/Import/Converter.php
index e0f7da1..cfe29c0 100644
--- a/includes/Import/Converter.php
+++ b/includes/Import/Converter.php
@@ -15,7 +15,7 @@
/**
* Converts provided titles to Flow. This converter is idempotent when
- * used with an appropriate ImportSourceStore, and may be run many times
+ * used with an appropriate SourceStoreInterface, and may be run many times
* without worry for duplicate imports.
*
* Flow does not currently support viewing the history of its page prior
diff --git a/includes/Import/Exception.php b/includes/Import/Exception.php
index 00da767..4824d29 100644
--- a/includes/Import/Exception.php
+++ b/includes/Import/Exception.php
@@ -8,11 +8,3 @@
*/
class ImportException extends FlowException {
}
-
-/**
- * A failure occurred trying to read or write to the
- * permanant storage backing the ImportSourceStore.
- */
-class ImportSourceStoreException extends ImportException {
-}
-
diff --git a/includes/Import/IConversionStrategy.php
b/includes/Import/IConversionStrategy.php
index a035a2c..a5cd7ac 100644
--- a/includes/Import/IConversionStrategy.php
+++ b/includes/Import/IConversionStrategy.php
@@ -2,8 +2,8 @@
namespace Flow\Import;
-use Flow\Import\ImportException;
use Flow\Import\Postprocessor\Postprocessor;
+use Flow\Import\SourceStore\SourceStoreInterface;
use Title;
use WikitextContent;
@@ -13,7 +13,7 @@
*/
interface IConversionStrategy {
/**
- * @return ImportSourceStore This should consistently return the
+ * @return SourceStoreInterface This should consistently return the
* same store between conversion runs from the same source to
* guarantee idempotent imports (without duplicate content).
*/
diff --git a/includes/Import/ImportSourceStore.php
b/includes/Import/ImportSourceStore.php
deleted file mode 100644
index 08ceeaf..0000000
--- a/includes/Import/ImportSourceStore.php
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-namespace Flow\Import;
-
-use Flow\Model\UUID;
-
-interface ImportSourceStore {
- /**
- * Stores the association between an object and where it was imported
from.
- *
- * @param UUID $objectId ID for the object that was imported.
- * @param string $importSourceKey String returned from
IImportObject::getObjectKey()
- */
- function setAssociation( UUID $objectId, $importSourceKey );
-
- /**
- * @param string $importSourceKey String returned from
IImportObject::getObjectKey()
- * @return UUID|boolean UUID of the imported object if
appropriate; otherwise, false.
- */
- function getImportedId( $importSourceKey );
-
- /**
- * Save any associations that have been added
- * @throws ImportSourceStoreException When save fails
- */
- function save();
-
- /**
- * Forget any recorded associations since last save
- */
- function rollback();
-}
-
-class FileImportSourceStore implements ImportSourceStore {
- /** @var string **/
- protected $filename;
- /** @var array */
- protected $data;
-
- public function __construct( $filename ) {
- $this->filename = $filename;
- $this->load();
- }
-
- protected function load() {
- if ( file_exists( $this->filename ) ) {
- $this->data = json_decode( file_get_contents(
$this->filename ), true );
- } else {
- $this->data = array();
- }
- }
-
- public function save() {
- $bytesWritten = file_put_contents( $this->filename,
json_encode( $this->data ) );
- if ( $bytesWritten === false ) {
- throw new ImportSourceStoreException( 'Could not write
out source store to ' . $this->filename );
- }
- }
-
- public function rollback() {
- $this->load();
- }
-
- public function setAssociation( UUID $objectId, $importSourceKey ) {
- $this->data[$importSourceKey] = $objectId->getAlphadecimal();
- }
-
- public function getImportedId( $importSourceKey ) {
- return isset( $this->data[$importSourceKey] )
- ? UUID::create( $this->data[$importSourceKey] )
- : false;
- }
-}
-
-class NullImportSourceStore implements ImportSourceStore {
- public function setAssociation( UUID $objectId, $importSourceKey ) {
- }
-
- public function getImportedId( $importSourceKey ) {
- return false;
- }
-
- public function save() {
- }
-
- public function rollback() {
- }
-}
-
diff --git a/includes/Import/Importer.php b/includes/Import/Importer.php
index 97812a2..26b84c8 100644
--- a/includes/Import/Importer.php
+++ b/includes/Import/Importer.php
@@ -9,6 +9,8 @@
use Flow\DbFactory;
use Flow\Import\Postprocessor\Postprocessor;
use Flow\Import\Postprocessor\ProcessorGroup;
+use Flow\Import\SourceStore\SourceStoreInterface as ImportSourceStore;
+use Flow\Import\SourceStore\Exception as ImportSourceStoreException;
use Flow\Model\AbstractRevision;
use Flow\Model\Header;
use Flow\Model\PostRevision;
diff --git a/includes/Import/LiquidThreadsApi/ConversionStrategy.php
b/includes/Import/LiquidThreadsApi/ConversionStrategy.php
index 931a7a1..148ef94 100644
--- a/includes/Import/LiquidThreadsApi/ConversionStrategy.php
+++ b/includes/Import/LiquidThreadsApi/ConversionStrategy.php
@@ -5,7 +5,7 @@
use DatabaseBase;
use Flow\Import\ArchiveNameHelper;
use Flow\Import\IConversionStrategy;
-use Flow\Import\ImportSourceStore;
+use Flow\Import\SourceStore\SourceStoreInterface as ImportSourceStore;
use Flow\Import\Postprocessor\ProcessorGroup;
use Flow\Import\Postprocessor\LqtNotifications;
use Flow\Import\Postprocessor\LqtRedirector;
diff --git a/includes/Import/SourceStore/Exception.php
b/includes/Import/SourceStore/Exception.php
new file mode 100644
index 0000000..97df87f
--- /dev/null
+++ b/includes/Import/SourceStore/Exception.php
@@ -0,0 +1,12 @@
+<?php
+
+namespace Flow\Import\SourceStore;
+
+use Flow\Import\ImportException;
+
+/**
+ * A failure occurred trying to read or write to the
+ * permanent storage backing the SourceStoreInterface.
+ */
+class Exception extends ImportException {
+}
diff --git a/includes/Import/SourceStore/File.php
b/includes/Import/SourceStore/File.php
new file mode 100644
index 0000000..cbf7196
--- /dev/null
+++ b/includes/Import/SourceStore/File.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Flow\Import\SourceStore;
+
+use Flow\Model\UUID;
+
+class File implements SourceStoreInterface {
+ /** @var string **/
+ protected $filename;
+ /** @var array */
+ protected $data;
+
+ public function __construct( $filename ) {
+ $this->filename = $filename;
+ $this->load();
+ }
+
+ protected function load() {
+ if ( file_exists( $this->filename ) ) {
+ $this->data = json_decode( file_get_contents(
$this->filename ), true );
+ } else {
+ $this->data = array();
+ }
+ }
+
+ public function save() {
+ $bytesWritten = file_put_contents( $this->filename,
json_encode( $this->data ) );
+ if ( $bytesWritten === false ) {
+ throw new Exception( 'Could not write out source store
to ' . $this->filename );
+ }
+ }
+
+ public function rollback() {
+ $this->load();
+ }
+
+ public function setAssociation( UUID $objectId, $importSourceKey ) {
+ $this->data[$importSourceKey] = $objectId->getAlphadecimal();
+ }
+
+ public function getImportedId( $importSourceKey ) {
+ return isset( $this->data[$importSourceKey] )
+ ? UUID::create( $this->data[$importSourceKey] )
+ : false;
+ }
+}
diff --git a/includes/Import/SourceStore/Null.php
b/includes/Import/SourceStore/Null.php
new file mode 100644
index 0000000..71966aa
--- /dev/null
+++ b/includes/Import/SourceStore/Null.php
@@ -0,0 +1,21 @@
+<?php
+
+namespace Flow\Import\SourceStore;
+
+use Flow\Model\UUID;
+
+class Null implements SourceStoreInterface {
+ public function setAssociation( UUID $objectId, $importSourceKey ) {
+ }
+
+ public function getImportedId( $importSourceKey ) {
+ return false;
+ }
+
+ public function save() {
+ }
+
+ public function rollback() {
+ }
+}
+
diff --git a/includes/Import/SourceStore/SourceStoreInterface.php
b/includes/Import/SourceStore/SourceStoreInterface.php
new file mode 100644
index 0000000..6f95b6a
--- /dev/null
+++ b/includes/Import/SourceStore/SourceStoreInterface.php
@@ -0,0 +1,32 @@
+<?php
+
+namespace Flow\Import\SourceStore;
+
+use Flow\Model\UUID;
+
+interface SourceStoreInterface {
+ /**
+ * Stores the association between an object and where it was imported
from.
+ *
+ * @param UUID $objectId ID for the object that was
imported.
+ * @param string $importSourceKey String returned from
IImportObject::getObjectKey()
+ */
+ function setAssociation( UUID $objectId, $importSourceKey );
+
+ /**
+ * @param string $importSourceKey String returned from
IImportObject::getObjectKey()
+ * @return UUID|boolean UUID of the imported object if
appropriate; otherwise, false.
+ */
+ function getImportedId( $importSourceKey );
+
+ /**
+ * Save any associations that have been added
+ * @throws Exception When save fails
+ */
+ function save();
+
+ /**
+ * Forget any recorded associations since last save
+ */
+ function rollback();
+}
diff --git a/includes/Import/Wikitext/ConversionStrategy.php
b/includes/Import/Wikitext/ConversionStrategy.php
index cf7a17c..4acdb87 100644
--- a/includes/Import/Wikitext/ConversionStrategy.php
+++ b/includes/Import/Wikitext/ConversionStrategy.php
@@ -6,7 +6,7 @@
use DateTimeZone;
use Flow\Import\ArchiveNameHelper;
use Flow\Import\IConversionStrategy;
-use Flow\Import\ImportSourceStore;
+use Flow\Import\SourceStore\SourceStoreInterface as ImportSourceStore;
use LinkBatch;
use Parser;
use Psr\Log\LoggerInterface;
diff --git a/includes/Specials/SpecialEnableFlow.php
b/includes/Specials/SpecialEnableFlow.php
index c311208..21235b3 100644
--- a/includes/Specials/SpecialEnableFlow.php
+++ b/includes/Specials/SpecialEnableFlow.php
@@ -8,7 +8,7 @@
use Flow\Container;
use Flow\Import\Converter;
use Flow\Import\EnableFlow\EnableFlowWikitextConversionStrategy;
-use Flow\Import\NullImportSourceStore;
+use Flow\Import\SourceStore\Null as NullImportSourceStore;
/**
* A special page that allows users with the flow-create-board right to create
diff --git a/maintenance/convertAllLqtPages.php
b/maintenance/convertAllLqtPages.php
index 2e75b70..9745634 100644
--- a/maintenance/convertAllLqtPages.php
+++ b/maintenance/convertAllLqtPages.php
@@ -1,7 +1,7 @@
<?php
use Flow\Container;
-use Flow\Import\FileImportSourceStore;
+use Flow\Import\SourceStore\File as FileImportSourceStore;
use Flow\Import\LiquidThreadsApi\ConversionStrategy;
use Flow\Import\LiquidThreadsApi\LocalApiBackend;
use Flow\Utils\NamespaceIterator;
diff --git a/maintenance/convertLqtPageFromRemoteApiForTesting.php
b/maintenance/convertLqtPageFromRemoteApiForTesting.php
index 37c3d17..3a63bbe 100644
--- a/maintenance/convertLqtPageFromRemoteApiForTesting.php
+++ b/maintenance/convertLqtPageFromRemoteApiForTesting.php
@@ -1,6 +1,6 @@
<?php
-use Flow\Import\FileImportSourceStore;
+use Flow\Import\SourceStore\File as FileImportSourceStore;
use Flow\Import\LiquidThreadsApi\RemoteApiBackend;
use Flow\Import\LiquidThreadsApi\ImportSource as LiquidThreadsApiImportSource;
use Psr\Log\LogLevel;
diff --git a/maintenance/convertLqtPageOnLocalWiki.php
b/maintenance/convertLqtPageOnLocalWiki.php
index 840993e..a57094c 100644
--- a/maintenance/convertLqtPageOnLocalWiki.php
+++ b/maintenance/convertLqtPageOnLocalWiki.php
@@ -1,7 +1,7 @@
<?php
use Flow\Container;
-use Flow\Import\FileImportSourceStore;
+use Flow\Import\SourceStore\File as FileImportSourceStore;
use Flow\Import\LiquidThreadsApi\ConversionStrategy as
LiquidThreadsApiConversionStrategy;
use Flow\Import\LiquidThreadsApi\LocalApiBackend;
use Psr\Log\LogLevel;
diff --git a/maintenance/convertNamespaceFromWikitext.php
b/maintenance/convertNamespaceFromWikitext.php
index d10faa0..977ac41 100644
--- a/maintenance/convertNamespaceFromWikitext.php
+++ b/maintenance/convertNamespaceFromWikitext.php
@@ -75,7 +75,7 @@
FlowHooks::getOccupationController()->getTalkpageManager(),
new Flow\Import\Wikitext\ConversionStrategy(
$wgParser,
- new Flow\Import\NullImportSourceStore(),
+ new Flow\Import\SourceStore\Null(),
$logger,
$noConvertTemplates,
$this->getOption( 'archive-pattern', null )
diff --git a/tests/phpunit/Import/LiquidThreadsApi/ConversionStrategyTest.php
b/tests/phpunit/Import/LiquidThreadsApi/ConversionStrategyTest.php
index 0b03913..fbe9346 100644
--- a/tests/phpunit/Import/LiquidThreadsApi/ConversionStrategyTest.php
+++ b/tests/phpunit/Import/LiquidThreadsApi/ConversionStrategyTest.php
@@ -5,8 +5,8 @@
use DatabaseBase;
use DateTime;
use DateTimeZone;
-use Flow\Import\ImportSourceStore;
-use Flow\Import\NullImportSourceStore;
+use Flow\Import\SourceStore\SourceStoreInterface as ImportSourceStore;
+use Flow\Import\SourceStore\Null as NullImportSourceStore;
use Flow\Import\LiquidThreadsApi\ConversionStrategy;
use Flow\Import\LiquidThreadsApi\ApiBackend;
use Title;
@@ -59,7 +59,7 @@
public function testReturnsValidSourceStore() {
$this->assertInstanceOf(
- 'Flow\Import\ImportSourceStore',
+ 'Flow\Import\SourceStore\SourceStoreInterface',
$this->createStrategy()->getSourceStore()
);
}
diff --git a/tests/phpunit/Import/PageImportStateTest.php
b/tests/phpunit/Import/PageImportStateTest.php
index 85fbf86..3730e11 100644
--- a/tests/phpunit/Import/PageImportStateTest.php
+++ b/tests/phpunit/Import/PageImportStateTest.php
@@ -2,7 +2,7 @@
namespace Flow\Tests\Import;
-use Flow\Import\NullImportSourceStore;
+use Flow\Import\SourceStore\Null as NullImportSourceStore;
use Flow\Import\PageImportState;
use Flow\Import\Postprocessor\ProcessorGroup;
use Flow\Model\PostRevision;
diff --git a/tests/phpunit/Import/TalkpageImportOperationTest.php
b/tests/phpunit/Import/TalkpageImportOperationTest.php
index 4b2c3d8..d9c33cd 100644
--- a/tests/phpunit/Import/TalkpageImportOperationTest.php
+++ b/tests/phpunit/Import/TalkpageImportOperationTest.php
@@ -3,7 +3,7 @@
namespace Flow\Tests\Import;
use Flow\Container;
-use Flow\Import\NullImportSourceStore;
+use Flow\Import\SourceStore\Null as NullImportSourceStore;
use Flow\Import\PageImportState;
use Flow\Import\Postprocessor\ProcessorGroup;
use Flow\Import\TalkpageImportOperation;
diff --git a/tests/phpunit/Import/Wikitext/ConversionStrategyTest.php
b/tests/phpunit/Import/Wikitext/ConversionStrategyTest.php
index 293bc7f..a14d1bc 100644
--- a/tests/phpunit/Import/Wikitext/ConversionStrategyTest.php
+++ b/tests/phpunit/Import/Wikitext/ConversionStrategyTest.php
@@ -5,8 +5,8 @@
use Flow\Container;
use DateTime;
use DateTimeZone;
-use Flow\Import\ImportSourceStore;
-use Flow\Import\NullImportSourceStore;
+use Flow\Import\SourceStore\SourceStoreInterface as ImportSourceStore;
+use Flow\Import\SourceStore\Null as NullImportSourceStore;
use Flow\Import\Wikitext\ConversionStrategy;
use LinkCache;
use Parser;
@@ -51,7 +51,7 @@
public function testReturnsValidSourceStore() {
$this->assertInstanceOf(
- 'Flow\Import\ImportSourceStore',
+ 'Flow\Import\SourceStore\SourceStoreInterface',
$this->createStrategy()->getSourceStore()
);
}
--
To view, visit https://gerrit.wikimedia.org/r/273902
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I47805ec8cb7e65355f8eb154a430d543a059d050
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Flow
Gerrit-Branch: master
Gerrit-Owner: Matthias Mullie <[email protected]>
Gerrit-Reviewer: Catrope <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits