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

Reply via email to