Aude has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/162861

Change subject: New Wikidata Build - 25/09/2014
......................................................................

New Wikidata Build - 25/09/2014

Change-Id: Iace825d93dcf461d54151d3c689c0cd8ed0fe145
---
M Gruntfile.js
M README.md
M WikibaseClient.settings.php
M WikibaseRepo.settings.php
A build/tasks/updatecomposer.js
M composer.lock
M extensions/Wikibase/lib/i18n/qqq.json
M extensions/Wikibase/lib/resources/Resources.php
M extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
M extensions/Wikibase/lib/resources/wikibase.RepoApi/resources.php
M 
extensions/Wikibase/lib/resources/wikibase.RepoApi/wikibase.AbstractedRepoApi.js
D extensions/Wikibase/lib/resources/wikibase.compileEntityStoreFromMwConfig.js
M extensions/Wikibase/lib/resources/wikibase.store/resources.php
A extensions/Wikibase/lib/resources/wikibase.store/store.ApiEntityStore.js
A extensions/Wikibase/lib/resources/wikibase.store/store.CombiningEntityStore.js
M extensions/Wikibase/lib/resources/wikibase.store/store.EntityStore.js
M 
extensions/Wikibase/lib/resources/wikibase.store/store.FetchedContentUnserializer.js
A extensions/Wikibase/lib/resources/wikibase.store/store.MwConfigEntityStore.js
M 
extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.claimview.tests.js
M 
extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.referenceview.tests.js
M 
extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkgroupview.tests.js
M 
extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinklistview.tests.js
M 
extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js
M 
extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.snaklistview.tests.js
M extensions/Wikibase/lib/tests/qunit/jquery.wikibase/resources.php
M extensions/Wikibase/lib/tests/qunit/resources.php
M extensions/Wikibase/lib/tests/qunit/wikibase.RepoApi/wikibase.RepoApi.tests.js
D 
extensions/Wikibase/lib/tests/qunit/wikibase.compileEntityStoreFromMwConfig.tests.js
R 
extensions/Wikibase/lib/tests/qunit/wikibase.store/store.CombiningEntityStore.tests.js
A 
extensions/Wikibase/lib/tests/qunit/wikibase.store/store.MwConfigEntityStore.tests.js
M extensions/Wikibase/repo/i18n/de.json
M extensions/Wikibase/repo/i18n/et.json
M extensions/Wikibase/repo/i18n/fa.json
M extensions/Wikibase/repo/i18n/fr.json
M extensions/Wikibase/repo/i18n/mk.json
M extensions/Wikibase/repo/i18n/pt.json
M extensions/Wikibase/repo/i18n/qqq.json
M extensions/Wikibase/repo/i18n/zh-hans.json
M extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php
R extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php
R extensions/Wikibase/repo/includes/Diff/ClaimDifference.php
R extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php
R extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php
R extensions/Wikibase/repo/includes/Diff/DiffView.php
R extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
R extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php
M extensions/Wikibase/repo/includes/actions/EditEntityAction.php
M extensions/Wikibase/repo/includes/api/SetClaim.php
M extensions/Wikibase/repo/includes/content/EntityHandler.php
M extensions/Wikibase/repo/resources/Resources.php
M extensions/Wikibase/repo/resources/wikibase.ui.entityViewInit.js
M extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php
R extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php
R extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php
R 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php
R 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffOpValueFormatterTest.php
R extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php
R 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php
R 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php
M vendor/autoload.php
M vendor/composer/autoload_classmap.php
M vendor/composer/autoload_real.php
M vendor/composer/installed.json
63 files changed, 556 insertions(+), 422 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Wikidata 
refs/changes/61/162861/1

diff --git a/Gruntfile.js b/Gruntfile.js
index 241633a..d3fd93e 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -18,13 +18,21 @@
                        install: {
                                cmd: 'composer install --ansi --prefer-dist -o'
                        }
+               },
+               updatecomposer: {
+                       main: {
+                               src: 'composer.json',
+                               branchName: grunt.option( "branchName" )
+                       }
                }
        } );
 
        grunt.loadNpmTasks( 'grunt-exec' );
        grunt.loadNpmTasks( 'grunt-contrib-clean' );
+       grunt.loadTasks( 'build/tasks' );
 
        grunt.registerTask( 'uninstall', [ 'clean:build' ] );
        grunt.registerTask( 'install', [ 'clean:build', 'exec:install' ] );
+       grunt.registerTask( 'branch', [ 'uninstall', 'updatecomposer', 
'exec:install' ] );
 
 };
diff --git a/README.md b/README.md
index 97432a7..5e22e88 100644
--- a/README.md
+++ b/README.md
@@ -56,10 +56,32 @@
 
 Manually updating a Wikidata build requires 
[composer](http://getcomposer.org/) to be installed on the system.
 
-In the root Wikidata "extension" directory, run:
+The Wikidata build uses grunt (node.js) to provide some convenience functions. 
To use this, do:
 
 ```bash
-composer update -o
+
+npm install
+```
+
+Then to make a build, run:
+
+```bash
+
+grunt install
+```
+
+To clean the install (remove composer.lock, /vendor and /extensions):
+
+```bash
+
+grunt uninstall
+```
+
+To make a deployment build, using appropriate branchName argument:
+
+```bash
+
+grunt branch --branchName="wmf/1.25wmf1"
 ```
 
 ## Updating this README
diff --git a/WikibaseClient.settings.php b/WikibaseClient.settings.php
index 8430e64..4135d2c 100644
--- a/WikibaseClient.settings.php
+++ b/WikibaseClient.settings.php
@@ -1,2 +1,2 @@
 <?php
-$wgWBClientSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1411556172";
\ No newline at end of file
+$wgWBClientSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1411639580";
\ No newline at end of file
diff --git a/WikibaseRepo.settings.php b/WikibaseRepo.settings.php
index bcec97f..6e52703 100644
--- a/WikibaseRepo.settings.php
+++ b/WikibaseRepo.settings.php
@@ -1,2 +1,2 @@
 <?php
-$wgWBRepoSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1411556172";
\ No newline at end of file
+$wgWBRepoSettings["sharedCacheKeyPrefix"] = "wikibase:WBL/1411639580";
\ No newline at end of file
diff --git a/build/tasks/updatecomposer.js b/build/tasks/updatecomposer.js
new file mode 100644
index 0000000..4d8bb2b
--- /dev/null
+++ b/build/tasks/updatecomposer.js
@@ -0,0 +1,28 @@
+'use strict';
+
+var path = require( 'path' );
+
+module.exports = function ( grunt ) {
+
+       function autoloadSuffix( branch ) {
+               var suffix = "wikidata_" + branch.substring( 
branch.lastIndexOf( "/" ) + 1 );
+               suffix = suffix.replace( '\.', '_' );
+
+               return suffix;
+       }
+
+       grunt.registerMultiTask( 'updatecomposer', 'Make a deployment branch', 
function () {
+               var composerPath = path.join( __dirname, '../..', 
'composer.json' ),
+                       composer = grunt.file.readJSON( composerPath ),
+                       branch = this.data.branchName;
+
+               composer.require["wikibase/wikibase"] = 'dev-' + branch;
+
+               delete composer.config["github-oauth"];
+               composer.config["autoloader-suffix"] = autoloadSuffix( branch );
+
+               grunt.file.write( composerPath, JSON.stringify( composer, null, 
'    ' ) );
+               grunt.log.ok( 'Updated composer file' );
+       } );
+
+}
diff --git a/composer.lock b/composer.lock
index 946d58d..5174cf5 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1191,12 +1191,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "47597574720e4381dbf976ee01894e6b2ce44b8d"
+                "reference": "8d0aa67f8d26b392592c71b15bd3ff38edb00215"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/47597574720e4381dbf976ee01894e6b2ce44b8d";,
-                "reference": "47597574720e4381dbf976ee01894e6b2ce44b8d",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/8d0aa67f8d26b392592c71b15bd3ff38edb00215";,
+                "reference": "8d0aa67f8d26b392592c71b15bd3ff38edb00215",
                 "shasum": ""
             },
             "require": {
@@ -1265,7 +1265,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2014-09-24 09:01:52"
+            "time": "2014-09-24 20:21:31"
         },
         {
             "name": "wikibase/wikimedia-badges",
diff --git a/extensions/Wikibase/lib/i18n/qqq.json 
b/extensions/Wikibase/lib/i18n/qqq.json
index 426d68f..d81e859 100644
--- a/extensions/Wikibase/lib/i18n/qqq.json
+++ b/extensions/Wikibase/lib/i18n/qqq.json
@@ -79,7 +79,7 @@
        "wikibase-undeserializable-value": "Message to display for any data 
values that are invalid and cannot be deserialized.  The message is displayed 
in such places as when users view a diff.",
        "wikibase-validator-invalid": "Generic input validation error shown 
when the input is invalid but no further information is provided by the 
validator.\n{{Related|Wikibase-validator}}",
        "wikibase-validator-missing-field": "Input validation error shown when 
a field is missing from the input.\n\nParameters:\n* $1 - the required 
field\n{{Related|Wikibase-validator}}",
-       "wikibase-validator-bad-type": "Input validation error shown when the 
input has the wrong type.\n\nParameters:\n* $1 - the expected type\n* $2 - the 
actual type\n{{Related|Wikibase-validator}}",
+       "wikibase-validator-bad-type": "Input validation error shown when the 
input has the wrong type.\n\nParameters:\n* $1 - the expected type\n* $2 - the 
actual type\n{{Related|Wikibase-validator}}\n{{Identical|Instead of}}",
        "wikibase-validator-too-long": "Input validation error shown when the 
input is too long. Parameters:\n* $1 - the maximum length\n* $2 - (Unused) the 
actual length\n{{Related|Wikibase-validator}}",
        "wikibase-validator-too-short": "Input validation error shown when the 
input is too short. Parameters:\n* $1 - the minimum length\n* $2 - (Unused) the 
actual length\n{{Related|Wikibase-validator}}",
        "wikibase-validator-too-high": "Input validation error shown when the 
input is too high. Parameters:\n* $1 - the maximum value\n* $2 - (Unused) the 
actual length\n{{Related|Wikibase-validator}}",
diff --git a/extensions/Wikibase/lib/resources/Resources.php 
b/extensions/Wikibase/lib/resources/Resources.php
index 1b867a6..2eca041 100644
--- a/extensions/Wikibase/lib/resources/Resources.php
+++ b/extensions/Wikibase/lib/resources/Resources.php
@@ -67,21 +67,6 @@
                        'scripts' => 'templates.js',
                ),
 
-               'wikibase.compileEntityStoreFromMwConfig' => $moduleTemplate + 
array(
-                       'scripts' => array(
-                               'wikibase.compileEntityStoreFromMwConfig.js',
-                       ),
-                       'dependencies' => array(
-                               'json',
-                               'wikibase',
-                               'wikibase.serialization',
-                               'wikibase.serialization.entities',
-                               'wikibase.store.FetchedContent',
-                               'wikibase.store.FetchedContentUnserializer',
-                               'wikibase.datamodel',
-                       ),
-               ),
-
                'wikibase' => $moduleTemplate + array(
                        'scripts' => array(
                                'wikibase.js',
diff --git 
a/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
 
b/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
index 307b14a..f16f25d 100644
--- 
a/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
+++ 
b/extensions/Wikibase/lib/resources/jquery.wikibase/jquery.wikibase.claimview.js
@@ -156,12 +156,6 @@
                var self = this;
                this._claim = this.option( 'value' );
 
-               var entityStore = this.option( 'entityStore' );
-
-               if( !( entityStore instanceof wb.store.EntityStore ) ) {
-                       throw new Error( 'Entity store needs to be set' );
-               }
-
                // call template creation, this will require this._claim in 
template params callback!
                PARENT.prototype._create.call( this );
 
@@ -178,7 +172,7 @@
                        value: this.mainSnak() || {},
                        locked: this.option( 'locked' ).mainSnak,
                        autoStartEditing: false, // manually, after toolbar is 
there, so events can access toolbar
-                       entityStore: entityStore,
+                       entityStore: this.options.entityStore,
                        valueViewBuilder: this.option( 'valueViewBuilder' )
                } );
 
@@ -203,7 +197,7 @@
                        var oldHelpMessage = this.options.helpMessage;
                        this.options.helpMessage = deferred.promise();
 
-                       entityStore.get( property ).done( function( 
fetchedProperty ) {
+                       this.options.entityStore.get( property ).done( 
function( fetchedProperty ) {
                                var helpMessage;
                                if( fetchedProperty ) {
                                        helpMessage = mw.msg(
diff --git a/extensions/Wikibase/lib/resources/wikibase.RepoApi/resources.php 
b/extensions/Wikibase/lib/resources/wikibase.RepoApi/resources.php
index 4c03897..adc3e24 100644
--- a/extensions/Wikibase/lib/resources/wikibase.RepoApi/resources.php
+++ b/extensions/Wikibase/lib/resources/wikibase.RepoApi/resources.php
@@ -24,7 +24,6 @@
                                'util.inherit',
                                'wikibase.datamodel',
                                'wikibase.RepoApi',
-                               'wikibase.serialization.entities',
                        ),
                ),
 
diff --git 
a/extensions/Wikibase/lib/resources/wikibase.RepoApi/wikibase.AbstractedRepoApi.js
 
b/extensions/Wikibase/lib/resources/wikibase.RepoApi/wikibase.AbstractedRepoApi.js
index b9d6f6f..bd0635f 100644
--- 
a/extensions/Wikibase/lib/resources/wikibase.RepoApi/wikibase.AbstractedRepoApi.js
+++ 
b/extensions/Wikibase/lib/resources/wikibase.RepoApi/wikibase.AbstractedRepoApi.js
@@ -46,48 +46,6 @@
        },
 
        /**
-        * Gets one or more Entities.
-        *
-        * @param {String[]|String} ids
-        * @param {String[]|String} [props] Key(s) of property/ies to retrieve 
from the API
-        *                          default: null (will return all properties)
-        * @param {String[]}        [languages]
-        *                          default: null (will return results in all 
languages)
-        * @param {String[]|String} [sort] Key(s) of property/ies to sort on
-        *                          default: null (unsorted)
-        * @param {String}          [dir] Sort direction may be 'ascending' or 
'descending'
-        *                          default: null (ascending)
-        * @return {jQuery.Promise} If successful, the first parameter of the 
done callbacks will be
-        *         an object with keys of the entity's IDs and values of the 
requested entities
-        *         represented as wb.datamodel.Entity objects. If a requested 
Entity does not exist, it will not
-        *         be represented in the result.
-        *
-        * @todo Requires more? tests!
-        */
-       getEntities: function( ids, props, languages, sort, dir ) {
-               return this._abstract(
-                       PARENT.prototype.getEntities.apply( this, arguments ),
-                       function( result ) {
-                               var entities = {},
-                                       unserializer = ( new 
wb.serialization.SerializerFactory() ).newUnserializerFor(
-                                               wb.datamodel.Entity
-                                       );
-
-                               $.each( result.entities, function( id, 
entityData ) {
-                                       if( entityData.missing === '' ) {
-                                               return; // missing entity
-                                       }
-
-                                       var entity = unserializer.unserialize( 
entityData );
-                                       entities[ entity.getId() ] = entity;
-                               } );
-
-                               return [ entities ];
-                       }
-               );
-       },
-
-       /**
         * Creates/Updates an entire claim.
         *
         * @param {wb.datamodel.Claim|wb.datamodel.Statement} claim
diff --git 
a/extensions/Wikibase/lib/resources/wikibase.compileEntityStoreFromMwConfig.js 
b/extensions/Wikibase/lib/resources/wikibase.compileEntityStoreFromMwConfig.js
deleted file mode 100644
index a44026e..0000000
--- 
a/extensions/Wikibase/lib/resources/wikibase.compileEntityStoreFromMwConfig.js
+++ /dev/null
@@ -1,88 +0,0 @@
-/**
- * @licence GNU GPL v2+
- * @author Daniel Werner < daniel.a.r.wer...@gmail.com >
- * @author Adrian Lang < adrian.l...@wikimedia.de >
- */
-wikibase.compileEntityStoreFromMwConfig = ( function( $, wb, mw ) {
-       'use strict';
-
-       /**
-        * Fetched entity unserializer's unserialize function.
-        * @type {Function}
-        */
-       var unserialize;
-
-       /**
-        * Compiles an EntityStore object from MediaWiki's "wbUsedEntities" 
config variable.
-        * @since 0.5
-        *
-        * @param {wikibase.store.EntityStore} entityStore The EntityStore to 
compile.
-        */
-       function compileEntityStoreFromMwConfig( entityStore ) {
-               var serializedFetchedEntities,
-                       fetchedEntities;
-
-               serializedFetchedEntities = 
getSerializedFetchedEntitiesFromConfig( 'wbUsedEntities' );
-
-               if( !$.isEmptyObject( serializedFetchedEntities ) ) {
-                       fetchedEntities = mapObj( serializedFetchedEntities, 
getUnserialize() );
-                       entityStore.compile( fetchedEntities );
-               }
-       }
-
-       /**
-        * Helper for getting the serialized fetched entities in object form 
out of mw.config.
-        *
-        * @param {string} varName mw.config var name
-        * @return {Object}
-        *
-        * @throws {Error} In case the given config variable name does not 
exist.
-        */
-       function getSerializedFetchedEntitiesFromConfig( varName ) {
-               if( !mw.config.exists( varName ) ) {
-                       throw new Error( 'Can not load data for 
wikibase.compileEntityStoreFromMwConfig. '
-                               + 'mw.config variable "' + varName + '" is not 
set.' );
-               }
-               return JSON.parse( mw.config.get( varName ) );
-       }
-
-       /**
-        * Applies a function to all values of an object.
-        *
-        * @param {Object} obj
-        * @param {Function} mapper
-        * @return {Object}
-        *
-        * @todo Move to utils?
-        */
-       function mapObj( obj, mapper ) {
-               var res = {};
-               $.each( obj, function( k, v ) { res[k] = mapper( v ); } );
-               return res;
-       }
-
-       /**
-        * Returns the "unserialize" function of the fetched entity 
unserializer.
-        *
-        * @return {Function}
-        */
-       function getUnserialize() {
-               if( !unserialize ) {
-                       var factory = new wb.serialization.SerializerFactory(),
-                               entityUnserializer = 
factory.newUnserializerFor( wb.datamodel.Entity );
-
-                       // Unserializer for fetched content whose content is a 
wb.datamodel.Entity:
-                       var fetchedEntityUnserializer = 
factory.newUnserializerFor(
-                               wb.store.FetchedContent, {
-                                       contentUnserializer: entityUnserializer
-                               }
-                       );
-
-                       unserialize = $.proxy( fetchedEntityUnserializer, 
'unserialize' );
-               }
-               return unserialize;
-       }
-
-       return compileEntityStoreFromMwConfig;
-
-}( jQuery, wikibase, mediaWiki ) );
diff --git a/extensions/Wikibase/lib/resources/wikibase.store/resources.php 
b/extensions/Wikibase/lib/resources/wikibase.store/resources.php
index 2db4a4a..4acc39e 100644
--- a/extensions/Wikibase/lib/resources/wikibase.store/resources.php
+++ b/extensions/Wikibase/lib/resources/wikibase.store/resources.php
@@ -16,14 +16,34 @@
 
        $modules = array(
 
+               'wikibase.store.ApiEntityStore' => $moduleTemplate + array(
+                       'scripts' => array(
+                               'store.ApiEntityStore.js',
+                       ),
+                       'dependencies' => array(
+                               'wikibase.store',
+                               'wikibase.store.EntityStore',
+                       ),
+               ),
+
+               'wikibase.store.CombiningEntityStore' => $moduleTemplate + 
array(
+                       'scripts' => array(
+                               'store.CombiningEntityStore.js',
+                       ),
+                       'dependencies' => array(
+                               'util.inherit',
+                               'wikibase.store',
+                               'wikibase.store.EntityStore',
+                       ),
+               ),
+
                'wikibase.store.EntityStore' => $moduleTemplate + array(
                        'scripts' => array(
                                'store.EntityStore.js',
                        ),
                        'dependencies' => array(
-                               'mediawiki.Title',
+                               'util.inherit',
                                'wikibase.store',
-                               'wikibase.store.FetchedContent',
                        ),
                ),
 
@@ -32,8 +52,8 @@
                                'store.FetchedContent.js',
                        ),
                        'dependencies' => array(
-                               'wikibase.store',
                                'mediawiki.Title',
+                               'wikibase.store',
                        ),
                ),
 
@@ -42,6 +62,7 @@
                                'store.FetchedContentUnserializer.js',
                        ),
                        'dependencies' => array(
+                               'mediawiki.Title',
                                'util.inherit',
                                'wikibase.serialization', // For registering in 
the SerializerFactory
                                'wikibase.store',
@@ -58,6 +79,18 @@
                        ),
                ),
 
+               'wikibase.store.MwConfigEntityStore' => $moduleTemplate + array(
+                       'scripts' => array(
+                               'store.MwConfigEntityStore.js',
+                       ),
+                       'dependencies' => array(
+                               'json',
+                               'wikibase.store',
+                               'wikibase.store.EntityStore',
+                               'wikibase.store.FetchedContent',
+                       ),
+               ),
+
        );
 
        return $modules;
diff --git 
a/extensions/Wikibase/lib/resources/wikibase.store/store.ApiEntityStore.js 
b/extensions/Wikibase/lib/resources/wikibase.store/store.ApiEntityStore.js
new file mode 100644
index 0000000..11d87c3
--- /dev/null
+++ b/extensions/Wikibase/lib/resources/wikibase.store/store.ApiEntityStore.js
@@ -0,0 +1,86 @@
+/**
+ * @licence GNU GPL v2+
+ * @author Adrian Lang < adrian.l...@wikimedia.de >
+ */
+( function( wb, $ ) {
+       'use strict';
+
+       var MODULE = wb.store;
+
+       /**
+        * Entity store fetching entities from API.
+        * @constructor
+        * @extends wikibase.store.EntityStore
+        * @since 0.5
+        *
+        * @param {wikibase.RepoApi} repoApi
+        * @param {wikibase.store.FetchedContentUnserializer} 
fetchedEntityUnserializer;
+        * @param {string[]} languages
+        */
+       var SELF = MODULE.ApiEntityStore = util.inherit(
+               'WbApiEntityStore',
+               MODULE.EntityStore,
+               function( repoApi, fetchedEntityUnserializer, languages ) {
+                       this._entities = {};
+                       this._fetchedEntityUnserializer = 
fetchedEntityUnserializer;
+                       this._languages = languages;
+                       this._repoApi = repoApi;
+               }
+       );
+
+       $.extend( SELF.prototype, {
+               /**
+                * @type {Object}
+                */
+               _entities: null,
+
+               /**
+                * @type {wikibase.store.FetchedContentUnserializer}
+                */
+               _fetchedEntityUnserializer: null,
+
+               /**
+                * @type {string[]}
+                */
+               _languages: null,
+
+               /**
+                * @type {wikibase.RepoApi}
+                */
+               _repoApi: null,
+
+               /**
+                * @see wikibase.store.Entity.store.get
+                */
+               get: function( entityId ) {
+                       var deferred = $.Deferred();
+                       var self = this;
+
+                       if( this._entities.hasOwnProperty( entityId ) ) {
+                               deferred.resolve( this._entities[ entityId ] );
+                       } else {
+                               this._repoApi.getEntities( entityId, null, 
this._languages )
+                               .done( function( result ) {
+                                       $.each( result.entities, function( id, 
entityData ) {
+                                               if( entityData.missing === '' ) 
{
+                                                       return; // missing 
entity
+                                               }
+
+                                               var entity = 
self._fetchedEntityUnserializer.unserialize( {
+                                                       title: entityData.title,
+                                                       content: entityData
+                                               } );
+                                               self._entities[ 
entity.getContent().getId() ] = entity;
+                                       } );
+
+                                       deferred.resolve( self._entities[ 
entityId ] );
+                               } )
+                               // FIXME: Evaluate failing promise
+                               .fail( deferred.reject );
+                       }
+
+                       return deferred.promise();
+               }
+       } );
+}( wikibase, jQuery ) );
+
diff --git 
a/extensions/Wikibase/lib/resources/wikibase.store/store.CombiningEntityStore.js
 
b/extensions/Wikibase/lib/resources/wikibase.store/store.CombiningEntityStore.js
new file mode 100644
index 0000000..2147b08
--- /dev/null
+++ 
b/extensions/Wikibase/lib/resources/wikibase.store/store.CombiningEntityStore.js
@@ -0,0 +1,68 @@
+/**
+ * @licence GNU GPL v2+
+ * @author Adrian Lang < adrian.l...@wikimedia.de >
+ */
+( function( wb, $ ) {
+       'use strict';
+
+       var MODULE = wb.store;
+
+       /**
+        * Sequentially tries a handler on an array until a call succeeds.
+        *
+        * @param {*[]} arr
+        * @param {Function} elemHandler A function taking the values from arr 
one by one and returning
+        *        a jQuery.Promise.
+        * @return {jQuery.Promise}
+        */
+       function asyncFirst( arr, elemHandler ) {
+               var deferred = $.Deferred();
+               var idx = 0;
+               function tryNext() {
+                       if( arr.length <= idx ) {
+                               deferred.reject();
+                               return;
+                       }
+                       elemHandler( arr[ idx++ ] ).done( deferred.resolve 
).fail( tryNext );
+               }
+
+               window.setTimeout( tryNext, 0 );
+
+               return deferred.promise();
+       }
+
+       /**
+        * Entity store wrapping multiple EntityStore instances.
+        * @constructor
+        * @extends wikibase.store.EntityStore
+        * @since 0.5
+        *
+        * @param {Object[]} stores
+        */
+       MODULE.CombiningEntityStore = util.inherit(
+               'WbCombiningEntityStore',
+               wb.store.EntityStore,
+               function( stores ) {
+                       this._stores = stores;
+               },
+       {
+               /**
+                * @type {Object[]}
+                */
+               _stores: null,
+
+               /**
+                * @see wikibase.store.Entity.store.get
+                */
+               get: function( entityId ) {
+                       if( !entityId ) {
+                               // FIXME: This should probably be fixed on the 
caller's side
+                               return $.Deferred().resolve( null );
+                       } else {
+                               return asyncFirst( this._stores, function( 
getter ) {
+                                       return getter.get( entityId );
+                               } );
+                       }
+               }
+       } );
+}( wikibase, jQuery ) );
diff --git 
a/extensions/Wikibase/lib/resources/wikibase.store/store.EntityStore.js 
b/extensions/Wikibase/lib/resources/wikibase.store/store.EntityStore.js
index aa1694e..5706fed 100644
--- a/extensions/Wikibase/lib/resources/wikibase.store/store.EntityStore.js
+++ b/extensions/Wikibase/lib/resources/wikibase.store/store.EntityStore.js
@@ -2,85 +2,30 @@
  * @licence GNU GPL v2+
  * @author Adrian Lang < adrian.l...@wikimedia.de >
  */
-( function( wb, $, mw ) {
+( function( wb, $ ) {
        'use strict';
 
        var MODULE = wb.store;
 
        /**
-        * Entity store managing wb.datamodel.Entity objects.
+        * Entity store managing wikibase.datamodel.Entity objects.
         * @constructor
         * @since 0.5
-        *
-        * @param {wb.AbstractedRepoApi} abstractedRepoApi
         */
-       var SELF = MODULE.EntityStore = function WbEntityStore( 
abstractedRepoApi ) {
-               this._repoApi = abstractedRepoApi;
-               this._entities = {};
-       };
+       var SELF = MODULE.EntityStore = function WbEntityStore() {};
 
        $.extend( SELF.prototype, {
                /**
-                * Object containing wikibase.store.FetchedContent objects 
indexed by entity id.
-                * @type {Object}
-                */
-               _entities: null,
-
-               /**
-                * @type {wb.AbstractedRepoApi}
-                */
-               _repoApi: null,
-
-               /**
-                * Returns a promise resolving to the entity, undefined or null
+                * Returns a promise resolving to the entity, undefined or null.
                 * @since 0.5
                 *
                 * @param {string} entityId
-                *
-                * @return {jQuery.Promise} Resolved parameters:
-                *                          - 
{wikibase.store.FetchedContent|undefined|null}
+                * @return {jQuery.Promise}
+                *         Resolved parameters:
+                *         - {wikibase.store.FetchedContent|undefined|null}
+                *         No rejected parameters.
                 */
-               get: function( entityId ) {
-                       var store = this,
-                               deferred = new $.Deferred();
-
-                       if( !entityId ) {
-                               // FIXME: This should probably be fixed on the 
caller's side
-                               deferred.resolve( null );
-                       } else if( this._entities.hasOwnProperty( entityId ) ) {
-                               // Caller should not assume synchronous 
behaviour:
-                               window.setTimeout( function() {
-                                       deferred.resolve( 
store._entities[entityId] );
-                               }, 0 );
-                       } else {
-                               var language = mw.config.get( 'wgUserLanguage' 
);
-
-                               store._repoApi.getEntities( entityId, null, 
[language] ).done( function( entities ) {
-                                       var entity = entities[entityId];
-
-                                       if( entity ) {
-                                               store._entities[entityId] = new 
wb.store.FetchedContent( {
-                                                       // FIXME: Accessing 
_data is not ok
-                                                       title: new mw.Title( 
entity._data.title ),
-                                                       content: entity
-                                               } );
-                                       }
-
-                                       deferred.resolve( 
store._entities[entityId] );
-                               } );
-                       }
-
-                       return deferred.promise();
-               },
-
-               /**
-                * Adds a batch of entities to the store.
-                * @since 0.5
-                *
-                * @param {Object} indexedEntities
-                */
-               compile: function( indexedEntities ) {
-                       $.extend( this._entities, indexedEntities );
-               }
+               get: util.abstractMember
        } );
-}( wikibase, jQuery, mediaWiki ) );
+
+}( wikibase, jQuery ) );
diff --git 
a/extensions/Wikibase/lib/resources/wikibase.store/store.FetchedContentUnserializer.js
 
b/extensions/Wikibase/lib/resources/wikibase.store/store.FetchedContentUnserializer.js
index 6c93906..ada8061 100644
--- 
a/extensions/Wikibase/lib/resources/wikibase.store/store.FetchedContentUnserializer.js
+++ 
b/extensions/Wikibase/lib/resources/wikibase.store/store.FetchedContentUnserializer.js
@@ -24,7 +24,7 @@
                /**
                 * @see wb.serialization.Unserializer.unserialize
                 *
-                * @return wb.datamodel.Entity
+                * @return {wikibase.store.FetchedContent}
                 */
                unserialize: function( serialization ) {
                        var title = new mw.Title( serialization.title ),
diff --git 
a/extensions/Wikibase/lib/resources/wikibase.store/store.MwConfigEntityStore.js 
b/extensions/Wikibase/lib/resources/wikibase.store/store.MwConfigEntityStore.js
new file mode 100644
index 0000000..c87a87e
--- /dev/null
+++ 
b/extensions/Wikibase/lib/resources/wikibase.store/store.MwConfigEntityStore.js
@@ -0,0 +1,74 @@
+/**
+ * @licence GNU GPL v2+
+ * @author Daniel Werner < daniel.a.r.wer...@gmail.com >
+ * @author Adrian Lang < adrian.l...@wikimedia.de >
+ */
+( function( wb, $, mw ) {
+       'use strict';
+
+       var MODULE = wb.store;
+
+       /**
+        * Entity store fetching Entity objects from mediaWiki config.
+        * @constructor
+        * @extends wikibase.store.EntityStore
+        * @since 0.5
+        *
+        * @param {wikibase.store.FetchedContentUnserializer} 
fetchedEntityUnserializer
+        */
+       MODULE.MwConfigEntityStore = util.inherit(
+               'WbMwConfigEntityStore',
+               MODULE.EntityStore,
+               function( fetchedEntityUnserializer ) {
+                       this._fetchedEntityUnserializer = 
fetchedEntityUnserializer;
+                       this._fetchedEntities = 
getSerializedFetchedEntitiesFromConfig( 'wbUsedEntities' );
+               },
+       {
+               /**
+                * @type {wikibase.store.FetchedContentUnserializer}
+                */
+               _fetchedEntityUnserializer: null,
+
+               /**
+                * @type {Object}
+                */
+               _fetchedEntities: null,
+
+               /**
+                * @see wikibase.store.EntityStore.get
+                */
+               get: function( entityId ) {
+                       var deferred = $.Deferred();
+
+                       if( !this._fetchedEntities.hasOwnProperty( entityId ) ) 
{
+                               deferred.reject();
+                       } else {
+                               if( !( this._fetchedEntities[entityId] 
instanceof wb.store.FetchedContent ) ) {
+                                       this._fetchedEntities[entityId] = 
this._fetchedEntityUnserializer.unserialize(
+                                               this._fetchedEntities[entityId]
+                                       );
+                               }
+                               deferred.resolve( 
this._fetchedEntities[entityId] );
+                       }
+
+                       return deferred.promise();
+               }
+       } );
+
+       /**
+        * Helper for getting the serialized fetched entities in object form 
out of mw.config.
+        *
+        * @param {string} varName mw.config var name
+        * @return {Object}
+        *
+        * @throws {Error} In case the given config variable name does not 
exist.
+        */
+       function getSerializedFetchedEntitiesFromConfig( varName ) {
+               if( !mw.config.exists( varName ) ) {
+                       throw new Error( 'Can not load data for 
wikibase.store.MwConfigEntityStore. '
+                               + 'mw.config variable "' + varName + '" is not 
set.' );
+               }
+               return JSON.parse( mw.config.get( varName ) );
+       }
+
+}( wikibase, jQuery, mediaWiki ) );
diff --git 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.claimview.tests.js
 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.claimview.tests.js
index 7f9bb3d..e64246e 100644
--- 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.claimview.tests.js
+++ 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.claimview.tests.js
@@ -5,18 +5,19 @@
 ( function( $, mw, wb, dv, vf, vv, QUnit ) {
        'use strict';
 
-       var entityStore = new wb.store.EntityStore( null );
-       entityStore.compile( {
-               p1: new wb.store.FetchedContent( {
-                       title: new mw.Title( 'Property:P1' ),
-                       content: new wb.datamodel.Property( {
-                               id: 'P1',
-                               type: 'property',
-                               datatype: 'string',
-                               label: { en: 'P1' }
-                       } )
-               } )
-       } );
+       var entityStore = {
+               get: function() {
+                       return $.Deferred().resolve( new 
wb.store.FetchedContent( {
+                               title: new mw.Title( 'Property:P1' ),
+                               content: new wb.datamodel.Property( {
+                                       id: 'P1',
+                                       type: 'property',
+                                       datatype: 'string',
+                                       label: { en: 'P1' }
+                               } )
+                       } ) );
+               }
+       };
 
        var valueViewBuilder = new wb.ValueViewBuilder(
                new vv.ExpertStore(),
diff --git 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.referenceview.tests.js
 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.referenceview.tests.js
index 727d8b4..6c8ed81 100644
--- 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.referenceview.tests.js
+++ 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.referenceview.tests.js
@@ -7,18 +7,19 @@
 
        // We need an entity store for the instances of 
jquery.wikibase.referenceview
        // and jquery.wikibase.snakview created by 
jquery.wikibase.referenceview.
-       var entityStore = new wb.store.EntityStore( null );
-       entityStore.compile( {
-               P1: new wb.store.FetchedContent( {
-                       title: new mw.Title( 'Property:P1' ),
-                       content: new wb.datamodel.Property( {
-                               id: 'P1',
-                               type: 'property',
-                               datatype: 'string',
-                               label: { en: 'P1' }
-                       } )
-               } )
-       } );
+       var entityStore = {
+               get: function() {
+                       return $.Deferred().resolve( new 
wb.store.FetchedContent( {
+                               title: new mw.Title( 'Property:P1' ),
+                               content: new wb.datamodel.Property( {
+                                       id: 'P1',
+                                       type: 'property',
+                                       datatype: 'string',
+                                       label: { en: 'P1' }
+                               } )
+                       } ) );
+               }
+       };
 
        var valueViewBuilder = new wb.ValueViewBuilder(
                new vv.ExpertStore(),
diff --git 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkgroupview.tests.js
 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkgroupview.tests.js
index 38e5942..9791133 100644
--- 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkgroupview.tests.js
+++ 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkgroupview.tests.js
@@ -14,7 +14,7 @@
        options = $.extend( {
                entityId: 'i am an entity id',
                api: 'i am an api',
-               entityStore: new wb.store.EntityStore( null )
+               entityStore: new wb.store.EntityStore()
        }, options );
 
        var $sitelinkgroupview = $( '<div/>' )
diff --git 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinklistview.tests.js
 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinklistview.tests.js
index 41a37a1..537a844 100644
--- 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinklistview.tests.js
+++ 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinklistview.tests.js
@@ -14,7 +14,7 @@
        options = $.extend( {
                entityId: 'i am an entity id',
                api: 'i am an api',
-               entityStore: new wb.store.EntityStore( null ),
+               entityStore: new wb.store.EntityStore(),
                allowedSiteIds: ['aawiki', 'enwiki']
        }, options );
 
diff --git 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js
 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js
index 343c241..2dcad0a 100644
--- 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js
+++ 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.sitelinkview.tests.js
@@ -12,7 +12,7 @@
         */
        function createSitelinkview( options ) {
                options = $.extend( {
-                       entityStore: new wb.store.EntityStore( null ),
+                       entityStore: new wb.store.EntityStore(),
                        allowedSiteIds: ['aawiki', 'enwiki']
                }, options );
 
diff --git 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.snaklistview.tests.js
 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.snaklistview.tests.js
index 1d1111d..b1c317b 100644
--- 
a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.snaklistview.tests.js
+++ 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/jquery.wikibase.snaklistview.tests.js
@@ -28,8 +28,7 @@
 
        // We need a filled entity store for the instances of 
$.wikibase.snakview.variations.Value
        // and $.wikibase.snakview created by $.wikibase.snaklistview.
-       var entityStore = new wb.store.EntityStore( null );
-       entityStore.compile( {
+       var entities = {
                p1: new wb.store.FetchedContent( {
                        title: new mw.Title( 'Property:P1' ),
                        content: new wb.datamodel.Property( {
@@ -62,7 +61,13 @@
                                datatype: 'string'
                        } )
                } )
-       } );
+       };
+
+       var entityStore = {
+               get: function( entityId ) {
+                       return $.Deferred().resolve( entities[entityId] );
+               }
+       };
 
        var valueViewBuilder = new wb.ValueViewBuilder(
                new vv.ExpertStore(),
diff --git a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/resources.php 
b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/resources.php
index fa777aa..1c67e9f 100644
--- a/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/resources.php
+++ b/extensions/Wikibase/lib/tests/qunit/jquery.wikibase/resources.php
@@ -48,7 +48,6 @@
                                'wikibase.AbstractedRepoApi',
                                'wikibase.datamodel',
                                'wikibase.RepoApi',
-                               'wikibase.store.EntityStore',
                                'wikibase.store.FetchedContent',
                                'wikibase.ValueViewBuilder',
                        ),
@@ -138,7 +137,6 @@
                                'wikibase.datamodel',
                                'wikibase.RepoApi',
                                'wikibase.store.FetchedContent',
-                               'wikibase.store.EntityStore',
                                'wikibase.ValueViewBuilder',
                                'valueFormatters'
                        ),
@@ -207,7 +205,6 @@
                        ),
                        'dependencies' => array(
                                'jquery.wikibase.snaklistview',
-                               'wikibase.store.EntityStore',
                                'wikibase.store.FetchedContent',
                                'wikibase.ValueViewBuilder',
                                'wikibase.datamodel',
diff --git a/extensions/Wikibase/lib/tests/qunit/resources.php 
b/extensions/Wikibase/lib/tests/qunit/resources.php
index 473b1cf..a141cc2 100644
--- a/extensions/Wikibase/lib/tests/qunit/resources.php
+++ b/extensions/Wikibase/lib/tests/qunit/resources.php
@@ -103,12 +103,21 @@
                        ),
                ),
 
-               'wikibase.store.EntityStore.tests' => $moduleBase + array(
+               'wikibase.store.CombiningEntityStore.tests' => $moduleBase + 
array(
                        'scripts' => array(
-                               'wikibase.store/store.EntityStore.tests.js',
+                               
'wikibase.store/store.CombiningEntityStore.tests.js',
                        ),
                        'dependencies' => array(
-                               'wikibase.store.EntityStore',
+                               'wikibase.store.CombiningEntityStore',
+                       ),
+               ),
+
+               'wikibase.store.MwConfigEntityStore.tests' => $moduleBase + 
array(
+                       'scripts' => array(
+                               
'wikibase.store/store.MwConfigEntityStore.tests.js',
+                       ),
+                       'dependencies' => array(
+                               'wikibase.store.MwConfigEntityStore',
                        ),
                ),
 
@@ -136,15 +145,6 @@
                        ),
                        'dependencies' => array(
                                'wikibase.templates',
-                       ),
-               ),
-
-               'wikibase.compileEntityStoreFromMwConfig.tests' => $moduleBase 
+ array(
-                       'scripts' => array(
-                               
'wikibase.compileEntityStoreFromMwConfig.tests.js',
-                       ),
-                       'dependencies' => array(
-                               'wikibase.compileEntityStoreFromMwConfig',
                        ),
                ),
 
diff --git 
a/extensions/Wikibase/lib/tests/qunit/wikibase.RepoApi/wikibase.RepoApi.tests.js
 
b/extensions/Wikibase/lib/tests/qunit/wikibase.RepoApi/wikibase.RepoApi.tests.js
index 8f47671..6c459f6 100644
--- 
a/extensions/Wikibase/lib/tests/qunit/wikibase.RepoApi/wikibase.RepoApi.tests.js
+++ 
b/extensions/Wikibase/lib/tests/qunit/wikibase.RepoApi/wikibase.RepoApi.tests.js
@@ -324,26 +324,6 @@
                        } );
                } );
 
-               testrun.queue( qkey, function() {
-                       abstractedApi.getEntities( entity.id, typesApiPropName 
).done( function( entities ) {
-
-                               assert.ok(
-                                       entities[ entity.id ] instanceof 
wb.datamodel.Entity,
-                                       'Entity "' + entity.id + '", the ' + 
type + ' has been set for, has been' +
-                                               'returned by 
wb.AbstractedRepoApi.getEntities.'
-                               );
-
-                               var entityData = entities[ entity.id ].toMap();
-                               assert.deepEqual(
-                                       entityData[ type ] && entityData[ type 
][ language ],
-                                       value,
-                                       'Verified that ' + type + ' "' + value 
+ '" has been set for language "' + language + '"'
-                               );
-
-                               testrun.dequeue( qkey );
-                       } ).fail( onFail );
-               } );
-
                runTest();
        }
 
diff --git 
a/extensions/Wikibase/lib/tests/qunit/wikibase.compileEntityStoreFromMwConfig.tests.js
 
b/extensions/Wikibase/lib/tests/qunit/wikibase.compileEntityStoreFromMwConfig.tests.js
deleted file mode 100644
index 84800ee..0000000
--- 
a/extensions/Wikibase/lib/tests/qunit/wikibase.compileEntityStoreFromMwConfig.tests.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * @licence GNU GPL v2+
- * @author Adrian Lang < adrian.l...@wikimedia.de >
- */
-( function( mw, wb ) {
-       'use strict';
-
-       QUnit.module( 'wikibase.seedEntityStoreFromMwConfig', 
QUnit.newMwEnvironment() );
-
-       QUnit.test( 'is a function', function( assert ) {
-               assert.equal(
-                       typeof wb.compileEntityStoreFromMwConfig,
-                       'function',
-                       'is a function.'
-               );
-       } );
-
-       QUnit.test( 'does not do anything if the mw.config parameter is empty', 
function( assert ) {
-               QUnit.expect( 0 );
-
-               mw.config.set( 'wbUsedEntities', '[]' );
-
-               wb.compileEntityStoreFromMwConfig( {
-                       compile: function() {
-                               assert.ok( false, 'Triggered compile() although 
it should not have been called.' );
-                       }
-               } );
-       } );
-
-       QUnit.test( 'calls compile() with the content of wbUsedEntitites', 
function( assert ) {
-               mw.config.set(
-                       'wbUsedEntities',
-                       '{"P1":{"content":{"id":"P1","type":"property",'
-                       + '"descriptions":{"en":{"language":"en","value":"1"}},'
-                       + 
'"labels":{"en":{"language":"en","value":"1"}},"datatype":"string"},'
-                       + '"title":"Property:P1"}}'
-               );
-               wb.compileEntityStoreFromMwConfig( {
-                       compile: function( objs ) {
-                               assert.ok(
-                                       objs.P1,
-                                       'Triggered compile() with proper 
mw.config variable contents.'
-                               );
-                       }
-               } );
-       } );
-
-} )( mediaWiki, wikibase );
diff --git 
a/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.EntityStore.tests.js 
b/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.CombiningEntityStore.tests.js
similarity index 70%
rename from 
extensions/Wikibase/lib/tests/qunit/wikibase.store/store.EntityStore.tests.js
rename to 
extensions/Wikibase/lib/tests/qunit/wikibase.store/store.CombiningEntityStore.tests.js
index 9dcc504..2b02416 100644
--- 
a/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.EntityStore.tests.js
+++ 
b/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.CombiningEntityStore.tests.js
@@ -5,16 +5,15 @@
 ( function( $, wb ) {
        'use strict';
 
-       QUnit.module( 'wikibase.store.EntityStore' );
+       QUnit.module( 'wikibase.store.CombiningEntityStore' );
 
        QUnit.test( 'Initialize', function( assert ) {
-               var entityStore = new wb.store.EntityStore( null );
+               var entityStore = new wb.store.CombiningEntityStore();
                assert.ok( entityStore.get, 'Entity store has get() method.' );
        } );
 
        QUnit.test( 'get() returns $.Promise', function( assert ) {
-               var api = { getEntities: function() { return $.Deferred(); } };
-               var entityStore = new wb.store.EntityStore( api ),
+               var entityStore = new wb.store.CombiningEntityStore( [] ),
                        promise = entityStore.get( 'id' );
 
                assert.ok( promise.done, 'done() method exists.' );
@@ -24,10 +23,11 @@
                'Promise is resolved asynchronously, even if the entity is 
cached',
                2,
                function( assert ) {
-                       var entityStore = new wb.store.EntityStore( null );
-                       entityStore.compile( {
-                               id: 'value'
-                       } );
+                       var entityStore = new wb.store.CombiningEntityStore( [ {
+                               get: function( entityId ) {
+                                       return $.Deferred().resolve();
+                               }
+                       } ] );
 
                        var promise = entityStore.get( 'id' );
                        assert.equal( promise.state(), 'pending', 'Promise is 
pending.' );
diff --git 
a/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.MwConfigEntityStore.tests.js
 
b/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.MwConfigEntityStore.tests.js
new file mode 100644
index 0000000..321b3e3
--- /dev/null
+++ 
b/extensions/Wikibase/lib/tests/qunit/wikibase.store/store.MwConfigEntityStore.tests.js
@@ -0,0 +1,41 @@
+/**
+ * @licence GNU GPL v2+
+ * @author Adrian Lang < adrian.l...@wikimedia.de >
+ */
+( function( mw, wb ) {
+       'use strict';
+
+       QUnit.module( 'wikibase.store.MwConfigEntityStore', 
QUnit.newMwEnvironment() );
+
+       QUnit.test( 'is a function', function( assert ) {
+               assert.equal(
+                       typeof wb.store.MwConfigEntityStore,
+                       'function',
+                       'is a function.'
+               );
+       } );
+
+       QUnit.test( 'Resolves with content from wbUsedEntitites', 1, function( 
assert ) {
+               mw.config.set(
+                       'wbUsedEntities',
+                       '{"P1":{"content":{"id":"P1","type":"property",'
+                       + '"descriptions":{"en":{"language":"en","value":"1"}},'
+                       + 
'"labels":{"en":{"language":"en","value":"1"}},"datatype":"string"},'
+                       + '"title":"Property:P1"}}'
+               );
+
+               var store = new wb.store.MwConfigEntityStore( {
+                       unserialize: function( data ) {
+                               return data;
+                       }
+               } );
+
+               QUnit.stop();
+               store.get( 'P1' ).done( function( entity ) {
+                       QUnit.start();
+
+                       assert.ok( entity );
+               } );
+       } );
+
+} )( mediaWiki, wikibase );
diff --git a/extensions/Wikibase/repo/i18n/de.json 
b/extensions/Wikibase/repo/i18n/de.json
index 15a11ba..ba5799c 100644
--- a/extensions/Wikibase/repo/i18n/de.json
+++ b/extensions/Wikibase/repo/i18n/de.json
@@ -49,6 +49,7 @@
        "wikibase-statements": "Aussagen",
        "wikibase-attributes": "Eigenschaften",
        "wikibase-terms": "In anderen Sprachen",
+       "wikibase-sitelinkgroupview-input-help-message": "Ergänzt einen 
Websitelink durch die Angabe einer Website und einer Seite dieser Website, 
bearbeitet oder entfernt vorhandene Websitelinks.",
        "wikibase-sitelinks-empty": "Noch keine Seite mit diesem Datenobjekt 
verknüpft.",
        "wikibase-sitelinks-input-help-message": "Leg eine Verknüpfung zu einer 
diesem Datenobjekt entsprechenden Seite fest.",
        "wikibase-sitelinks-special": "Seiten auf anderen Websites, die auf 
dieses Objekt verweisen",
diff --git a/extensions/Wikibase/repo/i18n/et.json 
b/extensions/Wikibase/repo/i18n/et.json
index 0201f26..44a6516 100644
--- a/extensions/Wikibase/repo/i18n/et.json
+++ b/extensions/Wikibase/repo/i18n/et.json
@@ -30,7 +30,7 @@
        "wikibase-description-input-help-message": "Sisesta selle üksuse 
lühikirjeldus järgmises keeles: $1",
        "wikibase-fingerprintview-input-help-message": "Sisesta selle olemi 
silt, lühikirjeldus ja rööpkujud järgmises keeles: $1",
        "wikibase-claims": "Väited",
-       "wikibase-statements": "Lausungid",
+       "wikibase-statements": "Avaldused",
        "wikibase-terms": "Teistes keeltes",
        "wikibase-sitelinks-empty": "Ükski lehekülg pole veel selle üksusega 
lingitud.",
        "wikibase-sitelinks-input-help-message": "Määra selle üksusega seotud 
leheküljele viitav link.",
@@ -162,7 +162,7 @@
        "wikibase-modifyentity-id": "Identifikaator:",
        "wikibase-modifyterm-language": "Keel:",
        "special-mergeitems": "Kahe üksuse liitmine",
-       "wikibase-mergeitems-intro": "Kui liidad kaks üksust, teisaldatakse 
kõik sildid, kirjeldused, rööpkujud, võrgukohalingid ja lausungid ühest 
üksusest teise.",
+       "wikibase-mergeitems-intro": "Kui liidad kaks üksust, teisaldatakse 
kõik sildid, kirjeldused, rööpkujud, võrgukohalingid ja avaldused ühest 
üksusest teise.",
        "wikibase-mergeitems-fromid": "Üksus, mida liidad, identifikaator",
        "wikibase-mergeitems-toid": "Üksus, millega liidad, identifikaator",
        "wikibase-mergeitems-submit": "Liida üksused",
diff --git a/extensions/Wikibase/repo/i18n/fa.json 
b/extensions/Wikibase/repo/i18n/fa.json
index e78a4c9..8738b7b 100644
--- a/extensions/Wikibase/repo/i18n/fa.json
+++ b/extensions/Wikibase/repo/i18n/fa.json
@@ -51,6 +51,7 @@
        "wikibase-statements": "اظهارات",
        "wikibase-attributes": "ویژگی‌ها",
        "wikibase-terms": "به زبان‌های دیگر",
+       "wikibase-sitelinkgroupview-input-help-message": "پیوندی به مشخص کردن 
وب‌گاه و صفحهٔ آن وب‌گاه بیافزایید، پیوندهای وب‌گاه‌های موجود را ویرایش یا حذف 
کنید.",
        "wikibase-sitelinks-empty": "این آیتم هنوز هیچ صفحه‌ای پیوند ندارد.",
        "wikibase-sitelinks-input-help-message": "پیوندی به صفحه‌ای مرتبط با 
این آیتم ایجاد کنید.",
        "wikibase-sitelinks-special": "صفحه‌های دیگر وبگاه‌ها که به این آیتم 
پیوند دارند",
diff --git a/extensions/Wikibase/repo/i18n/fr.json 
b/extensions/Wikibase/repo/i18n/fr.json
index 52c352e..620e446 100644
--- a/extensions/Wikibase/repo/i18n/fr.json
+++ b/extensions/Wikibase/repo/i18n/fr.json
@@ -59,6 +59,7 @@
        "wikibase-statements": "Déclarations",
        "wikibase-attributes": "Attributs",
        "wikibase-terms": "Autres langues",
+       "wikibase-sitelinkgroupview-input-help-message": "Ajouter un lien de 
site en spécifiant un site et une page de ce site, modifier ou supprimer des 
liens de site existant.",
        "wikibase-sitelinks-empty": "Aucune page n’est encore liée à cet 
élément.",
        "wikibase-sitelinks-input-help-message": "Créer un lien vers une page 
relative à cet élément.",
        "wikibase-sitelinks-special": "Pages sur d’autres sites liées à cet 
élément",
diff --git a/extensions/Wikibase/repo/i18n/mk.json 
b/extensions/Wikibase/repo/i18n/mk.json
index 1666e5a..45fe760 100644
--- a/extensions/Wikibase/repo/i18n/mk.json
+++ b/extensions/Wikibase/repo/i18n/mk.json
@@ -31,6 +31,7 @@
        "wikibase-statements": "Искази",
        "wikibase-attributes": "Атрибути",
        "wikibase-terms": "На други јазици",
+       "wikibase-sitelinkgroupview-input-help-message": "Додајте врска 
укажувајќи мрежно место и страницата на него, или пак отстранете ги 
постоечките",
        "wikibase-sitelinks-empty": "Досега нема страници поврзани со овој 
предмет.",
        "wikibase-sitelinks-input-help-message": "Задајте врска до страница 
поврзана со овој предмет.",
        "wikibase-sitelinks-special": "Страници на други викија сврзани со овој 
предмет",
diff --git a/extensions/Wikibase/repo/i18n/pt.json 
b/extensions/Wikibase/repo/i18n/pt.json
index 49a7f29..11aa9d6 100644
--- a/extensions/Wikibase/repo/i18n/pt.json
+++ b/extensions/Wikibase/repo/i18n/pt.json
@@ -40,6 +40,7 @@
        "wikibase-statements": "Declarações",
        "wikibase-attributes": "Atributos",
        "wikibase-terms": "Noutras línguas",
+       "wikibase-sitelinkgroupview-input-help-message": "Adicione uma ligação 
de sítio, especificando um sítio e uma respetiva página, edite ou remova 
ligações de sítio existentes.",
        "wikibase-sitelinks-empty": "Nenhuma página está ligada a este item 
ainda.",
        "wikibase-sitelinks-input-help-message": "Defina uma ligação para uma 
página relacionada com este item.",
        "wikibase-sitelinks-special": "Páginas em outros sítios com ligação a 
este item",
diff --git a/extensions/Wikibase/repo/i18n/qqq.json 
b/extensions/Wikibase/repo/i18n/qqq.json
index ed25481..d17dc57 100644
--- a/extensions/Wikibase/repo/i18n/qqq.json
+++ b/extensions/Wikibase/repo/i18n/qqq.json
@@ -143,7 +143,7 @@
        "wikibase-gotolinkedpage-lookup-fieldset": "This is the title for the 
fieldset on the special page for specifiying the search arguments. This is the 
search for a linked page (sitelink) by site and item ID.",
        "wikibase-gotolinkedpage-lookup-site": "Label for the textfield holding 
the site ID. See also Wikidata's glossary for 
[[d:Wikidata:Glossary#sitelinks|site links]].\n{{Identical|Site}}",
        "wikibase-gotolinkedpage-lookup-item": "Label for the textfield holding 
the item ID. See also Wikidata's glossary for 
[[d:Wikidata:Glossary#Items|items]].",
-       "wikibase-gotolinkedpage-submit": "Text for the submit button in the 
search form which if successfully will go (redirect) to the sepcified linked 
page (sitelink).",
+       "wikibase-gotolinkedpage-submit": "Text for the submit button in the 
search form which if successfully will go (redirect) to the sepcified linked 
page (sitelink).\n{{Identical|Go}}",
        "special-itemdisambiguation": "{{doc-special|ItemDisambiguation}}\nThis 
special page returns all items with a given label. It provides an interface to 
disambiguate them. See also Wikidata's glossary for 
[[d:Wikidata:Glossary#languageattribute-label|label]] and 
[[d:Wikidata:Glossary#Items|items]].",
        "wikibase-itemdisambiguation-lookup-fieldset": "This is the title for 
the fieldset on the special page for further refining the search. This is the 
search by language and label.",
        "wikibase-itemdisambiguation-lookup-language": "Label for the textfield 
holding the language id.\n{{Identical|Language}}",
diff --git a/extensions/Wikibase/repo/i18n/zh-hans.json 
b/extensions/Wikibase/repo/i18n/zh-hans.json
index bcbc657..121872c 100644
--- a/extensions/Wikibase/repo/i18n/zh-hans.json
+++ b/extensions/Wikibase/repo/i18n/zh-hans.json
@@ -53,6 +53,7 @@
        "wikibase-statements": "声明",
        "wikibase-attributes": "属性",
        "wikibase-terms": "其他语言",
+       "wikibase-sitelinkgroupview-input-help-message": 
"通过指定一个站点和对应站点的一个页面添加、编辑站点链接,或移除现有的站点链接。",
        "wikibase-sitelinks-empty": "尚无页面连接至该项。",
        "wikibase-sitelinks-input-help-message": "请设置至该项相关页面的链接。",
        "wikibase-sitelinks-special": "链接至该项的其他网站页面",
diff --git a/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php 
b/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php
index 5e98795..04c56b1 100644
--- a/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php
+++ b/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php
@@ -3,6 +3,7 @@
 namespace Wikibase;
 
 use InvalidArgumentException;
+use Wikibase\Repo\Diff\ClaimDiffer;
 
 /**
  * EditSummary-Builder for claim operations
diff --git a/extensions/Wikibase/repo/includes/ClaimDiffer.php 
b/extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php
similarity index 94%
rename from extensions/Wikibase/repo/includes/ClaimDiffer.php
rename to extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php
index bd01646..ad30474 100644
--- a/extensions/Wikibase/repo/includes/ClaimDiffer.php
+++ b/extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php
@@ -1,10 +1,14 @@
 <?php
 
-namespace Wikibase;
+namespace Wikibase\Repo\Diff;
 
 use Diff\Differ\Differ;
 use Diff\DiffOp\Diff\Diff;
 use Diff\DiffOp\DiffOpChange;
+use Wikibase\DataModel\Claim\Claim;
+use Wikibase\DataModel\ReferenceList;
+use Wikibase\DataModel\Snak\SnakList;
+use Wikibase\DataModel\Statement\Statement;
 
 /**
  * Class for generating a ClaimDifference given two claims.
diff --git a/extensions/Wikibase/repo/includes/ClaimDifference.php 
b/extensions/Wikibase/repo/includes/Diff/ClaimDifference.php
similarity index 98%
rename from extensions/Wikibase/repo/includes/ClaimDifference.php
rename to extensions/Wikibase/repo/includes/Diff/ClaimDifference.php
index a05fc0f..8d0fd65 100644
--- a/extensions/Wikibase/repo/includes/ClaimDifference.php
+++ b/extensions/Wikibase/repo/includes/Diff/ClaimDifference.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Wikibase;
+namespace Wikibase\Repo\Diff;
 
 use Comparable;
 use Diff\DiffOp\Diff\Diff;
diff --git a/extensions/Wikibase/repo/includes/ClaimDifferenceVisualizer.php 
b/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php
similarity index 98%
rename from extensions/Wikibase/repo/includes/ClaimDifferenceVisualizer.php
rename to extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php
index 021507c..808dc24 100644
--- a/extensions/Wikibase/repo/includes/ClaimDifferenceVisualizer.php
+++ b/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Wikibase;
+namespace Wikibase\Repo\Diff;
 
 use Diff\DiffOp\Diff\Diff;
 use Diff\DiffOp\DiffOpAdd;
@@ -13,6 +13,10 @@
 use RuntimeException;
 use ValueFormatters\FormattingException;
 use ValueFormatters\ValueFormatter;
+use Wikibase\DataModel\Claim\Claim;
+use Wikibase\DataModel\Entity\EntityId;
+use Wikibase\DataModel\Snak\Snak;
+use Wikibase\DataModel\Snak\SnakList;
 use Wikibase\Lib\Serializers\ClaimSerializer;
 use Wikibase\Lib\SnakFormatter;
 
diff --git a/extensions/Wikibase/repo/includes/DiffOpValueFormatter.php 
b/extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php
similarity index 99%
rename from extensions/Wikibase/repo/includes/DiffOpValueFormatter.php
rename to extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php
index 24c956c..1bfb0c2 100644
--- a/extensions/Wikibase/repo/includes/DiffOpValueFormatter.php
+++ b/extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Wikibase;
+namespace Wikibase\Repo\Diff;
 
 use Diff;
 use Html;
diff --git a/extensions/Wikibase/repo/includes/DiffView.php 
b/extensions/Wikibase/repo/includes/Diff/DiffView.php
similarity index 99%
rename from extensions/Wikibase/repo/includes/DiffView.php
rename to extensions/Wikibase/repo/includes/Diff/DiffView.php
index 2d63337..8b15c61 100644
--- a/extensions/Wikibase/repo/includes/DiffView.php
+++ b/extensions/Wikibase/repo/includes/Diff/DiffView.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Wikibase;
+namespace Wikibase\Repo\Diff;
 
 use ContextSource;
 use Diff\DiffOp\Diff\Diff;
diff --git a/extensions/Wikibase/repo/includes/EntityContentDiffView.php 
b/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
similarity index 99%
rename from extensions/Wikibase/repo/includes/EntityContentDiffView.php
rename to extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
index a6c204d..8cd7d2e 100644
--- a/extensions/Wikibase/repo/includes/EntityContentDiffView.php
+++ b/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Wikibase;
+namespace Wikibase\Repo\Diff;
 
 use Content;
 use Diff\Comparer\ComparableComparer;
diff --git a/extensions/Wikibase/repo/includes/EntityDiffVisualizer.php 
b/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php
similarity index 98%
rename from extensions/Wikibase/repo/includes/EntityDiffVisualizer.php
rename to extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php
index 56bd8ec..0c73e69 100644
--- a/extensions/Wikibase/repo/includes/EntityDiffVisualizer.php
+++ b/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php
@@ -1,6 +1,6 @@
 <?php
 
-namespace Wikibase;
+namespace Wikibase\Repo\Diff;
 
 use Diff\DiffOp\Diff\Diff;
 use Diff\DiffOp;
@@ -10,6 +10,7 @@
 use IContextSource;
 use MWException;
 use SiteStore;
+use Wikibase\DataModel\Entity\Diff\EntityDiff;
 use Wikibase\Lib\Store\EntityTitleLookup;
 use Wikibase\Repo\Content\EntityContentDiff;
 
diff --git a/extensions/Wikibase/repo/includes/actions/EditEntityAction.php 
b/extensions/Wikibase/repo/includes/actions/EditEntityAction.php
index d6ddfcd..b5980d8 100644
--- a/extensions/Wikibase/repo/includes/actions/EditEntityAction.php
+++ b/extensions/Wikibase/repo/includes/actions/EditEntityAction.php
@@ -18,6 +18,9 @@
 use Wikibase\Lib\EscapingValueFormatter;
 use Wikibase\Lib\SnakFormatter;
 use Wikibase\Repo\Content\EntityContentDiff;
+use Wikibase\Repo\Diff\ClaimDiffer;
+use Wikibase\Repo\Diff\ClaimDifferenceVisualizer;
+use Wikibase\Repo\Diff\EntityDiffVisualizer;
 use Wikibase\Repo\WikibaseRepo;
 
 /**
diff --git a/extensions/Wikibase/repo/includes/api/SetClaim.php 
b/extensions/Wikibase/repo/includes/api/SetClaim.php
index aa3af6d..443b2cc 100644
--- a/extensions/Wikibase/repo/includes/api/SetClaim.php
+++ b/extensions/Wikibase/repo/includes/api/SetClaim.php
@@ -13,12 +13,12 @@
 use OutOfBoundsException;
 use UsageException;
 use Wikibase\ChangeOp\ClaimChangeOpFactory;
-use Wikibase\ClaimDiffer;
 use Wikibase\ClaimSummaryBuilder;
 use Wikibase\DataModel\Claim\Claim;
 use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\Lib\Serializers\SerializerFactory;
+use Wikibase\Repo\Diff\ClaimDiffer;
 use Wikibase\Repo\WikibaseRepo;
 use Wikibase\Summary;
 
diff --git a/extensions/Wikibase/repo/includes/content/EntityHandler.php 
b/extensions/Wikibase/repo/includes/content/EntityHandler.php
index c74ce31..ef24453 100644
--- a/extensions/Wikibase/repo/includes/content/EntityHandler.php
+++ b/extensions/Wikibase/repo/includes/content/EntityHandler.php
@@ -136,7 +136,7 @@
         * @return string
         */
        protected function getDiffEngineClass() {
-               return '\Wikibase\EntityContentDiffView';
+               return '\Wikibase\Repo\Diff\EntityContentDiffView';
        }
 
        /**
diff --git a/extensions/Wikibase/repo/resources/Resources.php 
b/extensions/Wikibase/repo/resources/Resources.php
index 16c9432..70c88c8 100644
--- a/extensions/Wikibase/repo/resources/Resources.php
+++ b/extensions/Wikibase/repo/resources/Resources.php
@@ -39,9 +39,12 @@
                                'wikibase.EntityInitializer',
                                'wikibase.parsers.getStore',
                                'wikibase.RepoApi',
+                               'wikibase.serialization.entities',
                                'wikibase.sites',
-                               'wikibase.store.EntityStore',
-                               'wikibase.compileEntityStoreFromMwConfig',
+                               'wikibase.store.ApiEntityStore',
+                               'wikibase.store.CombiningEntityStore',
+                               'wikibase.store.FetchedContentUnserializer',
+                               'wikibase.store.MwConfigEntityStore',
                                'wikibase.ValueViewBuilder'
                        ),
                        'messages' => array(
diff --git a/extensions/Wikibase/repo/resources/wikibase.ui.entityViewInit.js 
b/extensions/Wikibase/repo/resources/wikibase.ui.entityViewInit.js
index 6f634bb..4cd5053 100644
--- a/extensions/Wikibase/repo/resources/wikibase.ui.entityViewInit.js
+++ b/extensions/Wikibase/repo/resources/wikibase.ui.entityViewInit.js
@@ -85,13 +85,36 @@
        }
 
        /**
+        * Builds an entity store.
+        * @todo Move to a top-level factory or application scope
+        *
+        * @param {wikibase.RepoApi} repoApi
+        * @return {wikibase.store.CombiningEntityStore}
+        */
+       function buildEntityStore( repoApi ) {
+               // Unserializer for fetched content whose content is a 
wb.datamodel.Entity:
+               var fetchedEntityUnserializer = new 
wb.store.FetchedContentUnserializer( {
+                               contentUnserializer: new 
wb.serialization.EntityUnserializer()
+                       } );
+
+               return new wb.store.CombiningEntityStore( [
+                       new wb.store.MwConfigEntityStore( 
fetchedEntityUnserializer ),
+                       new wb.store.ApiEntityStore(
+                               repoApi,
+                               fetchedEntityUnserializer,
+                               [ mw.config.get( 'wgUserLanguage' ) ]
+                       )
+               ] );
+
+       }
+
+       /**
         * @param {wikibase.datamodel.Entity} entity
         * @param {jQuery} $entityview
         */
        function createEntityDom( entity, $entityview ) {
-               var abstractedRepoApi = new wb.AbstractedRepoApi();
-               var entityStore = new wb.store.EntityStore( abstractedRepoApi );
-               wb.compileEntityStoreFromMwConfig( entityStore );
+               var abstractedRepoApi = new wb.AbstractedRepoApi(),
+                       entityStore = buildEntityStore( abstractedRepoApi );
 
                $entityview
                .entityview( {
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php
index 7ca014c..a365c9a 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php
@@ -5,7 +5,6 @@
 use DataValues\StringValue;
 use Diff\Comparer\ComparableComparer;
 use Diff\Differ\OrderedListDiffer;
-use Wikibase\ClaimDiffer;
 use Wikibase\ClaimSummaryBuilder;
 use Wikibase\DataModel\Claim\Claim;
 use Wikibase\DataModel\Claim\Claims;
@@ -16,6 +15,7 @@
 use Wikibase\DataModel\Snak\PropertyValueSnak;
 use Wikibase\DataModel\Snak\Snak;
 use Wikibase\DataModel\Snak\SnakList;
+use Wikibase\Repo\Diff\ClaimDiffer;
 
 /**
  * @covers Wikibase\ClaimSummaryBuilder
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php
similarity index 93%
rename from extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferTest.php
rename to 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php
index e371eb8..8f6760f 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php
@@ -8,16 +8,16 @@
 use Diff\DiffOp\DiffOpChange;
 use Diff\DiffOp\DiffOpRemove;
 use Diff\Differ\OrderedListDiffer;
-use Wikibase\ClaimDiffer;
-use Wikibase\ClaimDifference;
 use Wikibase\DataModel\Claim\Claim;
 use Wikibase\DataModel\Claim\Statement;
 use Wikibase\DataModel\ReferenceList;
 use Wikibase\DataModel\Snak\PropertyNoValueSnak;
 use Wikibase\DataModel\Snak\SnakList;
+use Wikibase\Repo\Diff\ClaimDiffer;
+use Wikibase\Repo\Diff\ClaimDifference;
 
 /**
- * @covers Wikibase\ClaimDiffer
+ * @covers Wikibase\Repo\Diff\ClaimDiffer
  *
  * @group Wikibase
  * @group WikibaseRepo
@@ -119,7 +119,7 @@
                $differ = new ClaimDiffer( new OrderedListDiffer( new 
ComparableComparer() ) );
                $actual = $differ->diffClaims( $oldClaim, $newClaim );
 
-               $this->assertInstanceOf( 'Wikibase\ClaimDifference', $actual );
+               $this->assertInstanceOf( 'Wikibase\Repo\Diff\ClaimDifference', 
$actual );
 
                if ( !$expected->equals( $actual ) ) {
                        $this->assertEquals($expected, $actual);
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php
similarity index 92%
rename from 
extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceTest.php
rename to 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php
index 426b991..59d75cf 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php
@@ -5,13 +5,13 @@
 use Diff\DiffOp\Diff\Diff;
 use Diff\DiffOp\DiffOpAdd;
 use Diff\DiffOp\DiffOpChange;
-use Wikibase\ClaimDifference;
 use Wikibase\DataModel\Claim\Statement;
 use Wikibase\DataModel\Reference;
 use Wikibase\DataModel\Snak\PropertyNoValueSnak;
+use Wikibase\Repo\Diff\ClaimDifference;
 
 /**
- * @covers Wikibase\ClaimDifference
+ * @covers Wikibase\Repo\Diff\ClaimDifference
  *
  * @group Wikibase
  * @group WikibaseRepo
@@ -32,7 +32,7 @@
 
                $actual = $difference->getReferenceChanges();
 
-               $this->assertInstanceOf( 'Diff\Diff', $actual );
+               $this->assertInstanceOf( 'Diff\DiffOp\Diff\Diff', $actual );
                $this->assertEquals( $expected, $actual );
        }
 
@@ -45,7 +45,7 @@
 
                $actual = $difference->getQualifierChanges();
 
-               $this->assertInstanceOf( 'Diff\Diff', $actual );
+               $this->assertInstanceOf( 'Diff\DiffOp\Diff\Diff', $actual );
                $this->assertEquals( $expected, $actual );
        }
 
@@ -59,7 +59,7 @@
 
                $actual = $difference->getMainSnakChange();
 
-               $this->assertInstanceOf( 'Diff\DiffOpChange', $actual );
+               $this->assertInstanceOf( 'Diff\DiffOp\DiffOpChange', $actual );
                $this->assertEquals( $expected, $actual );
        }
 
@@ -73,7 +73,7 @@
 
                $actual = $difference->getRankChange();
 
-               $this->assertInstanceOf( 'Diff\DiffOpChange', $actual );
+               $this->assertInstanceOf( 'Diff\DiffOp\DiffOpChange', $actual );
                $this->assertEquals( $expected, $actual );
        }
 
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceVisualizerTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php
similarity index 97%
rename from 
extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceVisualizerTest.php
rename to 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php
index 3a75ed7..96361c2 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceVisualizerTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php
@@ -7,8 +7,6 @@
 use Diff\DiffOp\DiffOpAdd;
 use Diff\DiffOp\DiffOpChange;
 use Diff\DiffOp\DiffOpRemove;
-use Wikibase\ClaimDifference;
-use Wikibase\ClaimDifferenceVisualizer;
 use Wikibase\DataModel\Claim\Claim;
 use Wikibase\DataModel\Claim\Statement;
 use Wikibase\DataModel\Entity\PropertyId;
@@ -19,9 +17,11 @@
 use Wikibase\DataModel\Snak\PropertyValueSnak;
 use Wikibase\DataModel\Snak\SnakList;
 use Wikibase\Lib\SnakFormatter;
+use Wikibase\Repo\Diff\ClaimDifference;
+use Wikibase\Repo\Diff\ClaimDifferenceVisualizer;
 
 /**
- * @covers Wikibase\ClaimDifferenceVisualizer
+ * @covers Wikibase\Repo\Diff\ClaimDifferenceVisualizer
  *
  * @group Wikibase
  * @group WikibaseRepo
@@ -70,7 +70,7 @@
 
        public function testConstruction(){
                $instance = $this->newClaimDifferenceVisualizer();
-               $this->assertInstanceOf( 'Wikibase\ClaimDifferenceVisualizer', 
$instance );
+               $this->assertInstanceOf( 
'Wikibase\Repo\Diff\ClaimDifferenceVisualizer', $instance );
        }
 
        public function testConstructionWithBadDetailsFormatter(){
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/DiffOpValueFormatterTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffOpValueFormatterTest.php
similarity index 93%
rename from 
extensions/Wikibase/repo/tests/phpunit/includes/DiffOpValueFormatterTest.php
rename to 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffOpValueFormatterTest.php
index 39d65e4..5942478 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/DiffOpValueFormatterTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffOpValueFormatterTest.php
@@ -2,10 +2,10 @@
 
 namespace Wikibase\Test;
 
-use Wikibase\DiffOpValueFormatter;
+use Wikibase\Repo\Diff\DiffOpValueFormatter;
 
 /**
- * @covers Wikibase\DiffOpValueFormatter
+ * @covers Wikibase\Repo\Diff\DiffOpValueFormatter
  *
  * @group Wikibase
  * @group WikibaseRepo
diff --git a/extensions/Wikibase/repo/tests/phpunit/includes/DiffViewTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php
similarity index 97%
rename from extensions/Wikibase/repo/tests/phpunit/includes/DiffViewTest.php
rename to extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php
index de3f104..d86f7d7 100644
--- a/extensions/Wikibase/repo/tests/phpunit/includes/DiffViewTest.php
+++ b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php
@@ -6,12 +6,12 @@
 use Diff\DiffOp\DiffOpAdd;
 use Diff\DiffOp\DiffOpChange;
 use Diff\DiffOp\DiffOpRemove;
-use Wikibase\DiffView;
+use Wikibase\Repo\Diff\DiffView;
 use Wikibase\Repo\WikibaseRepo;
 use Wikibase\DataModel\Entity\ItemId;
 
 /**
- * @covers Wikibase\DiffView
+ * @covers Wikibase\Repo\Diff\DiffView
  *
  * @group WikibaseRepo
  * @group Wikibase
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/EntityContentDiffViewTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php
similarity index 98%
rename from 
extensions/Wikibase/repo/tests/phpunit/includes/EntityContentDiffViewTest.php
rename to 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php
index 2892f80..0b9179b 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/EntityContentDiffViewTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php
@@ -8,12 +8,12 @@
 use Title;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
-use Wikibase\EntityContentDiffView;
 use Wikibase\ItemContent;
 use Wikibase\Lib\Store\EntityRedirect;
+use Wikibase\Repo\Diff\EntityContentDiffView;
 
 /**
- * @covers Wikibase\EntityContentDiffView
+ * @covers Wikibase\Repo\Diff\EntityContentDiffView
  *
  * @group Wikibase
  * @group WikibaseRepo
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/EntityDiffVisualizerTest.php 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php
similarity index 92%
rename from 
extensions/Wikibase/repo/tests/phpunit/includes/EntityDiffVisualizerTest.php
rename to 
extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php
index 69dd4ef..cc3dc85 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/EntityDiffVisualizerTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php
@@ -8,15 +8,15 @@
 use IContextSource;
 use Language;
 use Site;
-use Wikibase\ClaimDiffer;
-use Wikibase\ClaimDifferenceVisualizer;
 use Wikibase\DataModel\Entity\EntityDiff;
-use Wikibase\EntityDiffVisualizer;
 use Wikibase\Repo\Content\EntityContentDiff;
+use Wikibase\Repo\Diff\ClaimDiffer;
+use Wikibase\Repo\Diff\ClaimDifferenceVisualizer;
+use Wikibase\Repo\Diff\EntityDiffVisualizer;
 use Wikibase\Repo\WikibaseRepo;
 
 /**
- * @covers Wikibase\EntityDiffVisualizer
+ * @covers Wikibase\Repo\Diff\EntityDiffVisualizer
  *
  * @group Wikibase
  * @group WikibaseRepo
@@ -98,7 +98,7 @@
         * @return ClaimDiffer
         */
        protected function getMockClaimDiffer() {
-               $mock = $this->getMockBuilder( 'Wikibase\ClaimDiffer' )
+               $mock = $this->getMockBuilder( 'Wikibase\Repo\Diff\ClaimDiffer' 
)
                        ->disableOriginalConstructor()
                        ->getMock();
                return $mock;
@@ -108,7 +108,7 @@
         * @return ClaimDifferenceVisualizer
         */
        protected function getMockClaimDiffVisualizer() {
-               $mock = $this->getMockBuilder( 
'Wikibase\ClaimDifferenceVisualizer' )
+               $mock = $this->getMockBuilder( 
'Wikibase\Repo\Diff\ClaimDifferenceVisualizer' )
                        ->disableOriginalConstructor()
                        ->getMock();
                return $mock;
diff --git a/vendor/autoload.php b/vendor/autoload.php
index 17262ee..fc3a3d3 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer' . '/autoload_real.php';
 
-return ComposerAutoloaderInit6c4a97a82f7fd0042859bd522c880871::getLoader();
+return ComposerAutoloaderInit04843eff1b8cfffc9c804180fb5156df::getLoader();
diff --git a/vendor/composer/autoload_classmap.php 
b/vendor/composer/autoload_classmap.php
index ab100df..f4b218b 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -294,9 +294,6 @@
     'Wikibase\\ChangesTable' => $baseDir . 
'/extensions/Wikibase/lib/includes/ChangesTable.php',
     'Wikibase\\ChunkAccess' => $baseDir . 
'/extensions/Wikibase/lib/includes/store/ChunkAccess.php',
     'Wikibase\\ChunkCache' => $baseDir . 
'/extensions/Wikibase/lib/includes/store/ChunkCache.php',
-    'Wikibase\\ClaimDiffer' => $baseDir . 
'/extensions/Wikibase/repo/includes/ClaimDiffer.php',
-    'Wikibase\\ClaimDifference' => $baseDir . 
'/extensions/Wikibase/repo/includes/ClaimDifference.php',
-    'Wikibase\\ClaimDifferenceVisualizer' => $baseDir . 
'/extensions/Wikibase/repo/includes/ClaimDifferenceVisualizer.php',
     'Wikibase\\ClaimHtmlGenerator' => $baseDir . 
'/extensions/Wikibase/repo/includes/ClaimHtmlGenerator.php',
     'Wikibase\\ClaimSummaryBuilder' => $baseDir . 
'/extensions/Wikibase/repo/includes/ClaimSummaryBuilder.php',
     'Wikibase\\ClientHooks' => $baseDir . 
'/extensions/Wikibase/client/WikibaseClient.hooks.php',
@@ -418,8 +415,6 @@
     'Wikibase\\DataModel\\Term\\TermList' => $vendorDir . 
'/wikibase/data-model/src/Term/TermList.php',
     'Wikibase\\DataTypeSelector' => $baseDir . 
'/extensions/Wikibase/repo/includes/DataTypeSelector.php',
     'Wikibase\\DiffChange' => $baseDir . 
'/extensions/Wikibase/lib/includes/changes/DiffChange.php',
-    'Wikibase\\DiffOpValueFormatter' => $baseDir . 
'/extensions/Wikibase/repo/includes/DiffOpValueFormatter.php',
-    'Wikibase\\DiffView' => $baseDir . 
'/extensions/Wikibase/repo/includes/DiffView.php',
     'Wikibase\\DirectSqlStore' => $baseDir . 
'/extensions/Wikibase/client/includes/store/sql/DirectSqlStore.php',
     'Wikibase\\DispatchStats' => $baseDir . 
'/extensions/Wikibase/repo/includes/store/sql/DispatchStats.php',
     'Wikibase\\DummyPropertyInfoStore' => $baseDir . 
'/extensions/Wikibase/lib/includes/store/DummyPropertyInfoStore.php',
@@ -431,8 +426,6 @@
     'Wikibase\\EditPropertyAction' => $baseDir . 
'/extensions/Wikibase/repo/includes/actions/EditPropertyAction.php',
     'Wikibase\\EntityChange' => $baseDir . 
'/extensions/Wikibase/lib/includes/changes/EntityChange.php',
     'Wikibase\\EntityContent' => $baseDir . 
'/extensions/Wikibase/repo/includes/content/EntityContent.php',
-    'Wikibase\\EntityContentDiffView' => $baseDir . 
'/extensions/Wikibase/repo/includes/EntityContentDiffView.php',
-    'Wikibase\\EntityDiffVisualizer' => $baseDir . 
'/extensions/Wikibase/repo/includes/EntityDiffVisualizer.php',
     'Wikibase\\EntityFactory' => $baseDir . 
'/extensions/Wikibase/lib/includes/EntityFactory.php',
     'Wikibase\\EntityIdPager' => $baseDir . 
'/extensions/Wikibase/repo/includes/store/EntityIdPager.php',
     'Wikibase\\EntityParserOutputGenerator' => $baseDir . 
'/extensions/Wikibase/repo/includes/EntityParserOutputGenerator.php',
@@ -659,6 +652,13 @@
     'Wikibase\\Repo\\Content\\EntityHandler' => $baseDir . 
'/extensions/Wikibase/repo/includes/content/EntityHandler.php',
     'Wikibase\\Repo\\Content\\ItemHandler' => $baseDir . 
'/extensions/Wikibase/repo/includes/content/ItemHandler.php',
     'Wikibase\\Repo\\Content\\PropertyHandler' => $baseDir . 
'/extensions/Wikibase/repo/includes/content/PropertyHandler.php',
+    'Wikibase\\Repo\\Diff\\ClaimDiffer' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/ClaimDiffer.php',
+    'Wikibase\\Repo\\Diff\\ClaimDifference' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/ClaimDifference.php',
+    'Wikibase\\Repo\\Diff\\ClaimDifferenceVisualizer' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/ClaimDifferenceVisualizer.php',
+    'Wikibase\\Repo\\Diff\\DiffOpValueFormatter' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/DiffOpValueFormatter.php',
+    'Wikibase\\Repo\\Diff\\DiffView' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/DiffView.php',
+    'Wikibase\\Repo\\Diff\\EntityContentDiffView' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/EntityContentDiffView.php',
+    'Wikibase\\Repo\\Diff\\EntityDiffVisualizer' => $baseDir . 
'/extensions/Wikibase/repo/includes/Diff/EntityDiffVisualizer.php',
     'Wikibase\\Repo\\EntitySearchTextGenerator' => $baseDir . 
'/extensions/Wikibase/repo/includes/EntitySearchTextGenerator.php',
     'Wikibase\\Repo\\GenericEventDispatcher' => $baseDir . 
'/extensions/Wikibase/repo/includes/GenericEventDispatcher.php',
     'Wikibase\\Repo\\Interactors\\ItemMergeException' => $baseDir . 
'/extensions/Wikibase/repo/includes/Interactors/ItemMergeException.php',
@@ -814,9 +814,9 @@
     'Wikibase\\Test\\ChangesTableTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/ChangesTableTest.php',
     'Wikibase\\Test\\ChunkCacheTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/store/ChunkCacheTest.php',
     'Wikibase\\Test\\ClaimChangeOpFactoryTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ClaimChangeOpFactoryTest.php',
-    'Wikibase\\Test\\ClaimDifferTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferTest.php',
-    'Wikibase\\Test\\ClaimDifferenceTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceTest.php',
-    'Wikibase\\Test\\ClaimDifferenceVisualizerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/ClaimDifferenceVisualizerTest.php',
+    'Wikibase\\Test\\ClaimDifferTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferTest.php',
+    'Wikibase\\Test\\ClaimDifferenceTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceTest.php',
+    'Wikibase\\Test\\ClaimDifferenceVisualizerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/ClaimDifferenceVisualizerTest.php',
     'Wikibase\\Test\\ClaimHtmlGeneratorTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/ClaimHtmlGeneratorTest.php',
     'Wikibase\\Test\\ClaimSerializerTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/serializers/ClaimSerializerTest.php',
     'Wikibase\\Test\\ClaimSummaryBuilderTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/ClaimSummaryBuilderTest.php',
@@ -826,8 +826,8 @@
     'Wikibase\\Test\\CopyrightMessageBuilderTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/CopyrightMessageBuilderTest.php',
     'Wikibase\\Test\\DescriptionSerializerTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/serializers/DescriptionSerializerTest.php',
     'Wikibase\\Test\\DiffChangeTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/changes/DiffChangeTest.php',
-    'Wikibase\\Test\\DiffOpValueFormatterTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/DiffOpValueFormatterTest.php',
-    'Wikibase\\Test\\DiffViewTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/DiffViewTest.php',
+    'Wikibase\\Test\\DiffOpValueFormatterTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffOpValueFormatterTest.php',
+    'Wikibase\\Test\\DiffViewTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/DiffViewTest.php',
     'Wikibase\\Test\\DispatchingEntitySerializerTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/serializers/DispatchingEntitySerializerTest.php',
     'Wikibase\\Test\\DispatchingExceptionLocalizerTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/Localizer/DispatchingExceptionLocalizerTest.php',
     'Wikibase\\Test\\DummyPropertyInfoStoreTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/store/DummyPropertyInfoStoreTest.php',
@@ -836,14 +836,14 @@
     'Wikibase\\Test\\EditEntityTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/EditEntityTest.php',
     'Wikibase\\Test\\EntityChangeTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/changes/EntityChangeTest.php',
     'Wikibase\\Test\\EntityContentDiffTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentDiffTest.php',
-    'Wikibase\\Test\\EntityContentDiffViewTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/EntityContentDiffViewTest.php',
+    'Wikibase\\Test\\EntityContentDiffViewTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityContentDiffViewTest.php',
     'Wikibase\\Test\\EntityContentFactoryTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentFactoryTest.php',
     'Wikibase\\Test\\EntityContentTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityContentTest.php',
     'Wikibase\\Test\\EntityDataRequestHandlerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/LinkedData/EntityDataRequestHandlerTest.php',
     'Wikibase\\Test\\EntityDataSerializationServiceTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/LinkedData/EntityDataSerializationServiceTest.php',
     'Wikibase\\Test\\EntityDataTestProvider' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/LinkedData/EntityDataTestProvider.php',
     'Wikibase\\Test\\EntityDataUriManagerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/LinkedData/EntityDataUriManagerTest.php',
-    'Wikibase\\Test\\EntityDiffVisualizerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/EntityDiffVisualizerTest.php',
+    'Wikibase\\Test\\EntityDiffVisualizerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/Diff/EntityDiffVisualizerTest.php',
     'Wikibase\\Test\\EntityFactoryTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/entity/EntityFactoryTest.php',
     'Wikibase\\Test\\EntityHandlerTest' => $baseDir . 
'/extensions/Wikibase/repo/tests/phpunit/includes/content/EntityHandlerTest.php',
     'Wikibase\\Test\\EntityIdFormatterTest' => $baseDir . 
'/extensions/Wikibase/lib/tests/phpunit/formatters/EntityIdFormatterTest.php',
diff --git a/vendor/composer/autoload_real.php 
b/vendor/composer/autoload_real.php
index 5640ca1..2e30bb4 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInit6c4a97a82f7fd0042859bd522c880871
+class ComposerAutoloaderInit04843eff1b8cfffc9c804180fb5156df
 {
     private static $loader;
 
@@ -19,9 +19,9 @@
             return self::$loader;
         }
 
-        
spl_autoload_register(array('ComposerAutoloaderInit6c4a97a82f7fd0042859bd522c880871',
 'loadClassLoader'), true, true);
+        
spl_autoload_register(array('ComposerAutoloaderInit04843eff1b8cfffc9c804180fb5156df',
 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        
spl_autoload_unregister(array('ComposerAutoloaderInit6c4a97a82f7fd0042859bd522c880871',
 'loadClassLoader'));
+        
spl_autoload_unregister(array('ComposerAutoloaderInit04843eff1b8cfffc9c804180fb5156df',
 'loadClassLoader'));
 
         $map = require __DIR__ . '/autoload_namespaces.php';
         foreach ($map as $namespace => $path) {
@@ -42,14 +42,14 @@
 
         $includeFiles = require __DIR__ . '/autoload_files.php';
         foreach ($includeFiles as $file) {
-            composerRequire6c4a97a82f7fd0042859bd522c880871($file);
+            composerRequire04843eff1b8cfffc9c804180fb5156df($file);
         }
 
         return $loader;
     }
 }
 
-function composerRequire6c4a97a82f7fd0042859bd522c880871($file)
+function composerRequire04843eff1b8cfffc9c804180fb5156df($file)
 {
     require $file;
 }
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 0ca4cf4..3d7e779 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1180,12 +1180,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "47597574720e4381dbf976ee01894e6b2ce44b8d"
+            "reference": "8d0aa67f8d26b392592c71b15bd3ff38edb00215"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/47597574720e4381dbf976ee01894e6b2ce44b8d";,
-            "reference": "47597574720e4381dbf976ee01894e6b2ce44b8d",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/8d0aa67f8d26b392592c71b15bd3ff38edb00215";,
+            "reference": "8d0aa67f8d26b392592c71b15bd3ff38edb00215",
             "shasum": ""
         },
         "require": {
@@ -1212,7 +1212,7 @@
         "conflict": {
             "mediawiki/mediawiki": "<1.23"
         },
-        "time": "2014-09-24 09:01:52",
+        "time": "2014-09-24 20:21:31",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iace825d93dcf461d54151d3c689c0cd8ed0fe145
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: Aude <aude.w...@gmail.com>

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

Reply via email to