Jeroen De Dauw has submitted this change and it was merged. Change subject: Use DataModel 1.0 ......................................................................
Use DataModel 1.0 Change-Id: I1ec5ac5c8f7b4a6793edd058882685ad0818d26d --- M composer.json M lib/includes/serializers/LegacyInternalClaimSerializer.php M lib/includes/serializers/LegacyInternalEntitySerializer.php M lib/tests/phpunit/NoBadDependencyUsageTest.php D lib/tests/phpunit/serializers/LegacyInternalEntitySerializerTest.php M repo/config/Wikibase.default.php M repo/tests/phpunit/includes/WikibaseRepoTest.php 7 files changed, 8 insertions(+), 114 deletions(-) Approvals: Tobias Gritschacher: Verified; Looks good to me, but someone else must approve Bene: Looks good to me, but someone else must approve Thiemo Mättig (WMDE): Looks good to me, approved diff --git a/composer.json b/composer.json index 93a2d19..ca670a6 100644 --- a/composer.json +++ b/composer.json @@ -35,7 +35,7 @@ "data-values/javascript": "~0.5.1", "data-values/value-view": "~0.6.5", - "wikibase/data-model": "~0.9.0", + "wikibase/data-model": "~1.0@dev", "wikibase/data-model-javascript": "~0.3.0", "wikibase/data-model-serialization": "~1.0.1", "wikibase/internal-serialization": "~1.1", diff --git a/lib/includes/serializers/LegacyInternalClaimSerializer.php b/lib/includes/serializers/LegacyInternalClaimSerializer.php index d3fe17b..9bdcdf7 100644 --- a/lib/includes/serializers/LegacyInternalClaimSerializer.php +++ b/lib/includes/serializers/LegacyInternalClaimSerializer.php @@ -4,6 +4,7 @@ use InvalidArgumentException; use Wikibase\DataModel\Claim\Claim; +use Wikibase\Repo\WikibaseRepo; class LegacyInternalClaimSerializer implements \Serializers\Serializer { @@ -20,7 +21,7 @@ throw new InvalidArgumentException( '$claim must be an Claim' ); } - return $claim->toArray(); + return WikibaseRepo::getDefaultInstance()->getInternalClaimSerializer()->serialize( $claim ); } } diff --git a/lib/includes/serializers/LegacyInternalEntitySerializer.php b/lib/includes/serializers/LegacyInternalEntitySerializer.php index 062bbf3..c33bea2 100644 --- a/lib/includes/serializers/LegacyInternalEntitySerializer.php +++ b/lib/includes/serializers/LegacyInternalEntitySerializer.php @@ -5,6 +5,7 @@ use InvalidArgumentException; use Serializers\Serializer as NewStyleSerializer; use Wikibase\DataModel\Entity\Entity; +use Wikibase\Repo\WikibaseRepo; /** * Serializer for generating the legacy serialization of an Entity. @@ -31,7 +32,7 @@ throw new InvalidArgumentException( '$entity must be an Entity' ); } - return $entity->toArray(); + return WikibaseRepo::getDefaultInstance()->getInternalEntitySerializer()->serialize( $entity ); } /** diff --git a/lib/tests/phpunit/NoBadDependencyUsageTest.php b/lib/tests/phpunit/NoBadDependencyUsageTest.php index b74eda6..b33e3d0 100644 --- a/lib/tests/phpunit/NoBadDependencyUsageTest.php +++ b/lib/tests/phpunit/NoBadDependencyUsageTest.php @@ -16,8 +16,8 @@ public function testNoRepoUsageInLib() { // Increasing this allowance is forbidden - $this->assertStringNotInLib( 'WikibaseRepo' . '::', 2 ); - $this->assertStringNotInLib( 'Wikibase\\Repo\\', 2 ); + $this->assertStringNotInLib( 'WikibaseRepo' . '::', 4 ); + $this->assertStringNotInLib( 'Wikibase\\Repo\\', 4 ); } public function testNoClientUsageInLib() { diff --git a/lib/tests/phpunit/serializers/LegacyInternalEntitySerializerTest.php b/lib/tests/phpunit/serializers/LegacyInternalEntitySerializerTest.php deleted file mode 100644 index c2eb039..0000000 --- a/lib/tests/phpunit/serializers/LegacyInternalEntitySerializerTest.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php - -namespace Wikibase\Test; - -use DataValues\Serializers\DataValueSerializer; -use RuntimeException; -use Wikibase\DataModel\Entity\Item; -use Wikibase\DataModel\Entity\ItemId; -use Wikibase\InternalSerialization\SerializerFactory; -use Wikibase\Lib\Serializers\LegacyInternalEntitySerializer; - -/** - * @covers Wikibase\Lib\Serializers\LegacyInternalEntitySerializer - * - * @group WikibaseLib - * @group Wikibase - * @group WikibaseSerialization - * - * @licence GNU GPL v2+ - * @author Daniel Kinzler - */ -class LegacyInternalEntitySerializerTest extends \PHPUnit_Framework_TestCase { - - public function legacyFormatBlobProvider() { - $entity = Item::newEmpty(); - $entity->setId( new ItemId( 'Q12' ) ); - $entity->setLabel( 'en', 'Test' ); - - // make legacy blob - $legacySerializer = new LegacyInternalEntitySerializer(); - $oldBlob = json_encode( $legacySerializer->serialize( $entity ) ); - - // fake ancient legacy blob: - // replace "entity":["item",7] with "entity":"q7" - $id = $entity->getId()->getSerialization(); - $veryOldBlob = preg_replace( '/"entity":\["\w+",\d+\]/', '"entity":"' . strtolower( $id ) . '"', $oldBlob ); - - // sanity - if ( $oldBlob == $veryOldBlob ) { - throw new RuntimeException( 'Failed to fake very old serialization format based on oldish serialization format.' ); - } - - // make new style blob - $newSerializerFactory = new SerializerFactory( new DataValueSerializer() ); - $newSerializer = $newSerializerFactory->newEntitySerializer(); - $newBlob = json_encode( $newSerializer->serialize( $entity ) ); - - return array( - 'old serialization / ancient id format' => array( $veryOldBlob, CONTENT_FORMAT_JSON, true ), - 'old serialization / new silly id format' => array( $oldBlob, CONTENT_FORMAT_JSON, true ), - 'new serialization format' => array( $newBlob, CONTENT_FORMAT_JSON, false ), - ); - } - - /** - * @dataProvider legacyFormatBlobProvider - */ - public function testIsBlobUsingLegacyFormat( $blob, $format, $expected ) { - $actual = LegacyInternalEntitySerializer::isBlobUsingLegacyFormat( $blob, $format ); - $this->assertEquals( $expected, $actual ); - } - -} diff --git a/repo/config/Wikibase.default.php b/repo/config/Wikibase.default.php index 4c7def1..1eb1e3d 100644 --- a/repo/config/Wikibase.default.php +++ b/repo/config/Wikibase.default.php @@ -85,7 +85,7 @@ // Can be used to override the serialization used for storage. // Typical value: Wikibase\Lib\Serializers\LegacyInternalClaimSerializer - 'internalClaimSerializerClass' => 'Wikibase\Lib\Serializers\LegacyInternalClaimSerializer', + 'internalClaimSerializerClass' => null, 'transformLegacyFormatOnExport' => function( SettingsArray $settings ) { // Enabled, unless internalEntitySerializerClass is set. diff --git a/repo/tests/phpunit/includes/WikibaseRepoTest.php b/repo/tests/phpunit/includes/WikibaseRepoTest.php index 273aa57..f61d38b 100644 --- a/repo/tests/phpunit/includes/WikibaseRepoTest.php +++ b/repo/tests/phpunit/includes/WikibaseRepoTest.php @@ -159,51 +159,6 @@ $this->assertInstanceOf( 'Wikibase\Lib\Changes\EntityChangeFactory', $factory ); } - // TODO: DM 1.0 blocker, this uses Entity::toArray - public function testGetEntityContentDataCodec_legacy() { - $item = Item::newEmpty(); - $item->setLabel( 'en', 'Hello' ); - $item->setLabel( 'es', 'Holla' ); - - $repo = $this->getDefaultInstance(); - $repo->getSettings()->setSetting( 'internalEntitySerializerClass', 'Wikibase\Lib\Serializers\LegacyInternalEntitySerializer' ); - - $codec = $repo->getEntityContentDataCodec(); - $json = $codec->encodeEntity( $item, CONTENT_FORMAT_JSON ); - $data = json_decode( $json, true ); - - $this->assertEquals( $item->toArray(), $data ); - } - - // TODO: DM 1.0 blocker, this uses Entity::toArray - public function testGetInternalEntitySerializer_legacy() { - $item = Item::newEmpty(); - $item->setLabel( 'en', 'Hello' ); - $item->setLabel( 'es', 'Holla' ); - - $repo = $this->getDefaultInstance(); - $repo->getSettings()->setSetting( 'internalEntitySerializerClass', 'Wikibase\Lib\Serializers\LegacyInternalEntitySerializer' ); - - $serializer = $repo->getInternalEntitySerializer(); - $data = $serializer->serialize( $item ); - - $this->assertEquals( $item->toArray(), $data ); - } - - // TODO: DM 1.0 blocker, this uses Claim::toArray - public function testGetInternalClaimSerializer_legacy() { - $claim = new Statement( new PropertyNoValueSnak( 42 ) ); - $claim->setGuid( 'kittens' ); - - $repo = $this->getDefaultInstance(); - $repo->getSettings()->setSetting( 'internalClaimSerializerClass', 'Wikibase\Lib\Serializers\LegacyInternalClaimSerializer' ); - - $serializer = $repo->getInternalClaimSerializer(); - $data = $serializer->serialize( $claim ); - - $this->assertEquals( $claim->toArray(), $data ); - } - public function testNewItemHandler() { $repo = $this->getDefaultInstance(); $handler = $repo->newItemHandler(); -- To view, visit https://gerrit.wikimedia.org/r/157075 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I1ec5ac5c8f7b4a6793edd058882685ad0818d26d Gerrit-PatchSet: 6 Gerrit-Project: mediawiki/extensions/Wikibase Gerrit-Branch: master Gerrit-Owner: Jeroen De Dauw <jeroended...@gmail.com> Gerrit-Reviewer: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Aude <aude.w...@gmail.com> Gerrit-Reviewer: Bene <benestar.wikime...@googlemail.com> Gerrit-Reviewer: Jeroen De Dauw <jeroended...@gmail.com> Gerrit-Reviewer: Thiemo Mättig (WMDE) <thiemo.maet...@wikimedia.de> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits