Mwjames has uploaded a new change for review.
https://gerrit.wikimedia.org/r/89627
Change subject: \SMW\DISerializer is in fact a \SMW\QueryResultSerializer
......................................................................
\SMW\DISerializer is in fact a \SMW\QueryResultSerializer
DISerializer was never a "real" DI serializer and only used to
serialize QueryResult objects.
We also don't want to expose any specific method to the "outside world"
and instead have the SerializerFactory manage the SerializerInterface.
Change-Id: Ie234128e5ae7f0c72e619837cabdddb786958674
---
M SemanticMediaWiki.classes.php
M SemanticMediaWiki.php
M includes/Aliases.php
R includes/serializer/QueryResultSerializer.php
M includes/serializer/README.md
M includes/serializer/SerializerFactory.php
M includes/storage/SMW_QueryResult.php
R tests/phpunit/includes/serializer/QueryResultSerializerTest.php
M tests/phpunit/includes/serializer/SerializerFactoryTest.php
9 files changed, 95 insertions(+), 15 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/SemanticMediaWiki
refs/changes/27/89627/1
diff --git a/SemanticMediaWiki.classes.php b/SemanticMediaWiki.classes.php
index 094dd91..29a8466 100644
--- a/SemanticMediaWiki.classes.php
+++ b/SemanticMediaWiki.classes.php
@@ -55,7 +55,6 @@
'SMW\ContentParser' => 'includes/ContentParser.php',
'SMW\UpdateObserver' => 'includes/UpdateObserver.php',
'SMW\TitleAccess' => 'includes/TitleAccess.php',
- 'SMW\DISerializer' => 'includes/DISerializer.php', // 1.9
'SMW\Accessible' => 'includes/ObjectDictionary.php',
'SMW\Changeable' => 'includes/ObjectDictionary.php',
@@ -101,6 +100,7 @@
'SMW\SerializerFactory' =>
'includes/serializer/SerializerFactory.php',
'SMW\SerializerInterface' =>
'includes/serializer/SerializerInterface.php',
'SMW\SemanticDataSerializer' =>
'includes/serializer/SemanticDataSerializer.php',
+ 'SMW\QueryResultSerializer' =>
'includes/serializer/QueryResultSerializer.php',
// Cache
'SMW\CacheHandler' => 'includes/cache/CacheHandler.php',
diff --git a/SemanticMediaWiki.php b/SemanticMediaWiki.php
index a863ed4..968cd24 100644
--- a/SemanticMediaWiki.php
+++ b/SemanticMediaWiki.php
@@ -108,7 +108,7 @@
class_alias( 'SMW\SemanticData', 'SMWSemanticData' );
class_alias( 'SMW\DIWikiPage', 'SMWDIWikiPage' );
class_alias( 'SMW\DIProperty', 'SMWDIProperty' );
-class_alias( 'SMW\DISerializer', 'SMWDISerializer' );
+class_alias( 'SMW\QueryResultSerializer', 'SMWDISerializer' );
// A flag used to indicate SMW defines a semantic extension type for extension
credits.
// @deprecated, removal in SMW 1.11
diff --git a/includes/Aliases.php b/includes/Aliases.php
index b121f92..111c8d6 100644
--- a/includes/Aliases.php
+++ b/includes/Aliases.php
@@ -27,6 +27,6 @@
class SMWDIProperty extends SMW\DIProperty {}
-class SMWDISerializer extends SMW\DISerializer {}
+class SMWDISerializer extends SMW\QueryResultSerializer {}
class SMWUpdateJob extends SMW\UpdateJob {}
diff --git a/includes/DISerializer.php
b/includes/serializer/QueryResultSerializer.php
similarity index 82%
rename from includes/DISerializer.php
rename to includes/serializer/QueryResultSerializer.php
index b7c541b..33da7b2 100644
--- a/includes/DISerializer.php
+++ b/includes/serializer/QueryResultSerializer.php
@@ -5,7 +5,9 @@
use SMWDataItem;
use SMWPrintRequest;
use SMWResultArray;
-use SMWQueryResult;
+use SMWQueryResult as QueryResult;
+
+use OutOfBoundsException;
/**
* Class for serializing SMWDataItem and SMWQueryResult objects to a context
@@ -20,7 +22,35 @@
* @licence GNU GPL v2 or later
* @author Jeroen De Dauw < [email protected] >
*/
-class DISerializer {
+class QueryResultSerializer implements SerializerInterface {
+
+ /**
+ * @see SerializerInterface::serialize
+ *
+ * @since 1.9
+ *
+ * @return array
+ * @throws OutOfBoundsException
+ */
+ public function serialize( $queryResult ) {
+
+ if ( !( $queryResult instanceOf QueryResult ) ) {
+ throw new OutOfBoundsException( 'Object was not
identified as a QueryResult instance' );
+ }
+
+ return $this->getSerializedQueryResult( $queryResult ) + array(
'serializer' => __CLASS__, 'version' => 0.5 );
+ }
+
+ /**
+ * @see SerializerInterface::unserialize
+ *
+ * @since 1.9
+ *
+ * @return SemanticData
+ */
+ public function unserialize( array $data ) {
+ return null;
+ }
/**
* Get the serialization for the provided data item.
@@ -84,7 +114,7 @@
*
* @return array
*/
- public static function getSerializedQueryResult( SMWQueryResult
$queryResult ) {
+ public static function getSerializedQueryResult( QueryResult
$queryResult ) {
$results = array();
$printRequests = array();
diff --git a/includes/serializer/README.md b/includes/serializer/README.md
index d30f5c8..02b805c 100644
--- a/includes/serializer/README.md
+++ b/includes/serializer/README.md
@@ -15,7 +15,7 @@
```
### SemanticDataSerializer
-Implements the SerialzierInterface for the SMW\SemanticData object.
+Implements the SerializerInterface for the SMW\SemanticData object.
#### Data model
```php
@@ -149,4 +149,4 @@
```
### QueryResultSerializer
-N/A (see \SMW\DISerializer)
+Implements the SerializerInterface for the SMWQueryResult object.
diff --git a/includes/serializer/SerializerFactory.php
b/includes/serializer/SerializerFactory.php
index 0120c9f..9b81464 100644
--- a/includes/serializer/SerializerFactory.php
+++ b/includes/serializer/SerializerFactory.php
@@ -2,6 +2,7 @@
namespace SMW;
+use SMWQueryResult as QueryResult;
use OutOfBoundsException;
/**
@@ -38,6 +39,8 @@
if ( $object instanceof SemanticData ) {
$serializer = new SemanticDataSerializer;
+ } elseif ( $object instanceof QueryResult ) {
+ $serializer = new QueryResultSerializer;
}
if ( !( $serializer instanceof SerializerInterface ) ) {
diff --git a/includes/storage/SMW_QueryResult.php
b/includes/storage/SMW_QueryResult.php
index 1c9e19a..f950d84 100644
--- a/includes/storage/SMW_QueryResult.php
+++ b/includes/storage/SMW_QueryResult.php
@@ -1,6 +1,6 @@
<?php
-use SMW\DISerializer;
+use SMW\SerializerFactory;
/**
* Objects of this class encapsulate the result of a query in SMW. They
@@ -288,7 +288,7 @@
* @return array
*/
public function serializeToArray() {
- return DISerializer::getSerializedQueryResult( $this );
+ return SerializerFactory::serialize( $this );
}
/**
diff --git a/tests/phpunit/includes/dataitems/DISerializerTest.php
b/tests/phpunit/includes/serializer/QueryResultSerializerTest.php
similarity index 74%
rename from tests/phpunit/includes/dataitems/DISerializerTest.php
rename to tests/phpunit/includes/serializer/QueryResultSerializerTest.php
index fa82856..aa87bec 100644
--- a/tests/phpunit/includes/dataitems/DISerializerTest.php
+++ b/tests/phpunit/includes/serializer/QueryResultSerializerTest.php
@@ -2,13 +2,13 @@
namespace SMW\Test;
-use SMW\DISerializer;
+use SMW\QueryResultSerializer;
use SMWQueryProcessor;
use SMWQueryResult;
use SMWDataItem as DataItem;
/**
- * @covers \SMW\DISerializer
+ * @covers \SMW\QueryResultSerializer
*
* @group SMW
* @group SMWExtension
@@ -16,7 +16,7 @@
* @license GNU GPL v2+
* @author mwjames
*/
-class DISerializerTest extends SemanticMediaWikiTestCase {
+class QueryResultSerializerTest extends SemanticMediaWikiTestCase {
/**
* Returns the name of the class to be tested
@@ -24,7 +24,45 @@
* @return string
*/
public function getClass() {
- return '\SMW\DISerializer';
+ return '\SMW\QueryResultSerializer';
+ }
+
+ /**
+ * Helper method that returns a SemanticDataSerializer object
+ *
+ * @since 1.9
+ */
+ private function newInstance() {
+ return new QueryResultSerializer();
+ }
+
+ /**
+ * @since 1.9
+ */
+ public function testConstructor() {
+ $this->assertInstanceOf( $this->getClass(),
$this->newInstance() );
+ }
+
+ /**
+ * @since 1.9
+ */
+ public function testSerializeOutOfBoundsException() {
+
+ $this->setExpectedException( 'OutOfBoundsException' );
+
+ $instance = $this->newInstance();
+ $instance->serialize( 'Foo' );
+
+ }
+
+ /**
+ * @since 1.9
+ */
+ public function testUnserializeNotImplemented() {
+
+ $instance = $this->newInstance();
+ $this->assertNull( $instance->unserialize( array() ) );
+
}
/**
@@ -34,7 +72,8 @@
*/
public function testQueryResultSerializerOnMock( $setup, $expected ) {
- $results = DISerializer::getSerializedQueryResult(
$setup['queryResult'] );
+ $instance = $this->newInstance();
+ $results = $instance->serialize( $setup['queryResult'] );
$this->assertInternalType( 'array' , $results );
$this->assertEquals( $expected['printrequests'],
$results['printrequests'] );
diff --git a/tests/phpunit/includes/serializer/SerializerFactoryTest.php
b/tests/phpunit/includes/serializer/SerializerFactoryTest.php
index bd0fcfc..52a71d8 100644
--- a/tests/phpunit/includes/serializer/SerializerFactoryTest.php
+++ b/tests/phpunit/includes/serializer/SerializerFactoryTest.php
@@ -104,6 +104,14 @@
new SemanticData( DIWikiPage::newFromTitle(
$this->newTitle() ) ),
);
+ // #1 QueryResult
+ $provider[] = array(
+ $this->newMockBuilder()->newObject( 'QueryResult',
array(
+ 'getResults' => array(),
+ 'getPrintRequests' => array()
+ ) )
+ );
+
return $provider;
}
--
To view, visit https://gerrit.wikimedia.org/r/89627
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie234128e5ae7f0c72e619837cabdddb786958674
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/SemanticMediaWiki
Gerrit-Branch: master
Gerrit-Owner: Mwjames <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits