Addshore has submitted this change and it was merged.

Change subject: New Wikidata Build - 23/03/2014 10:00
......................................................................


New Wikidata Build - 23/03/2014 10:00

...

Change-Id: I8ebaf5a3b18cbf2cfd66003935cdf06f6010ba2b
---
M composer.lock
M extensions/Wikibase/client/WikibaseClient.i18n.php
M extensions/Wikibase/repo/Wikibase.i18n.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaim.php
M extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
M extensions/Wikibase/repo/includes/ParserOutputJsConfigBuilder.php
M extensions/Wikibase/repo/includes/api/EditEntity.php
M extensions/Wikibase/repo/includes/api/SearchEntities.php
M extensions/Wikibase/repo/includes/api/SetClaim.php
M extensions/Wikibase/repo/includes/api/SetSiteLink.php
M extensions/Wikibase/repo/includes/specials/SpecialMergeItems.php
M extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpClaimTest.php
M vendor/autoload.php
M vendor/composer/autoload_real.php
M vendor/composer/installed.json
15 files changed, 231 insertions(+), 104 deletions(-)

Approvals:
  WikidataJenkins: Verified
  Addshore: Looks good to me, approved



diff --git a/composer.lock b/composer.lock
index 425fe02..2d3104d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -850,12 +850,12 @@
             "source": {
                 "type": "git",
                 "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-                "reference": "a5c1b9e581d26fd422afd6e76472f7f399d40fbc"
+                "reference": "9296f5949fa834e33b4e38679e316334d49fda9f"
             },
             "dist": {
                 "type": "zip",
-                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/a5c1b9e581d26fd422afd6e76472f7f399d40fbc";,
-                "reference": "a5c1b9e581d26fd422afd6e76472f7f399d40fbc",
+                "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/9296f5949fa834e33b4e38679e316334d49fda9f";,
+                "reference": "9296f5949fa834e33b4e38679e316334d49fda9f",
                 "shasum": ""
             },
             "require": {
@@ -914,7 +914,7 @@
                 "wikibaserepo",
                 "wikidata"
             ],
-            "time": "2014-03-22 09:43:36"
+            "time": "2014-03-22 23:50:57"
         }
     ],
     "packages-dev": [
diff --git a/extensions/Wikibase/client/WikibaseClient.i18n.php 
b/extensions/Wikibase/client/WikibaseClient.i18n.php
index 0cd4c8b..83a03ab 100644
--- a/extensions/Wikibase/client/WikibaseClient.i18n.php
+++ b/extensions/Wikibase/client/WikibaseClient.i18n.php
@@ -1525,7 +1525,7 @@
        'specialpages-group-wikibaseclient' => 'سرویس گیرنده {{WBREPONAME}}',
        'tooltip-t-wikibase' => 'پیوند به آیتم متصل به مخزن داده',
        'wikibase-after-page-move' => 'شما ممکن است در عین حال بخواهید آیتم 
وابستهٔ ویکی‌داده را نیز به [$1 روزرسانی] کنید، تا پیوند به صفحه منتقل شده باقی 
بماند.', # Fuzzy
-       'wikibase-after-page-move-queued' => '[ $1  مورد {{WBREPONAME}}] مرتبط 
با این صفحه را به طور خودکار به زودی به روز خواهد شد.',
+       'wikibase-after-page-move-queued' => '[$1  آیتم {{WBREPONAME}}] مرتبط 
با این صفحه را به طور خودکار به‌زودی به‌روز خواهد شد.',
        'wikibase-comment-add' => 'یک مورد {{WBREPONAME}} ایجاد شده‌‌است.',
        'wikibase-comment-remove' => 'مورد مرتبط {{WBREPONAME}} حذف شد. 
لینک‌های زبان حذف شد.',
        'wikibase-comment-linked' => 'مورد {{WBREPONAME}} در این صفحه مرتبط 
شده‌است.',
@@ -2522,6 +2522,7 @@
 $messages['kk-cyrl'] = array(
        'specialpages-group-wikibaseclient' => '{{WBREPONAME}} тұтынушы',
        'tooltip-t-wikibase' => 'Сілтеме дерек қойма данасымен байланысқан',
+       'wikibase-after-page-move' => 'Жылжытылған беттің тіл сілтемесін түзету 
үшін {{WBREPONAME}}-ке байланысқан элементті [$1 жаңартсаңыз] болады.',
        'wikibase-after-page-move-queued' => '[$1 {{WBREPONAME}} данасы] бұл 
бетке байланысқан біраздан кейін автоматты жаңартылады.',
        'wikibase-comment-add' => '{{WBREPONAME}} данасы құрылды.',
        'wikibase-comment-remove' => 'Байланысқан {{WBREPONAME}} данасын жойды. 
Тіл сілтемелерін алып тастады.',
@@ -3358,16 +3359,16 @@
  */
 $messages['nl'] = array(
        'wikibase-client-desc' => 'Client voor de uitbreiding Wikibase',
-       'specialpages-group-wikibaseclient' => 'Wikidataclient', # Fuzzy
+       'specialpages-group-wikibaseclient' => 'Client voor {{WBREPONAME}}',
        'tooltip-t-wikibase' => 'Koppeling naar item in verbonden 
gegevensrepository',
-       'wikibase-after-page-move' => 'U kunt ook het gekoppelde Wikidataitem 
[$1 bijwerken] om de taalkoppelingen op de hernoemde pagina te kunnen 
beheren.', # Fuzzy
-       'wikibase-after-page-move-queued' => 'Het [$1 Wikidata-item] gekoppeld 
aan deze pagina zal binnenkort automatisch worden bijgewerkt.', # Fuzzy
-       'wikibase-comment-add' => 'Wikidata item aangemaakt.', # Fuzzy
-       'wikibase-comment-remove' => 'Het gekoppelde Wikidataitem is 
verwijderd. De taalkoppelingen zijn verwijderd.', # Fuzzy
-       'wikibase-comment-linked' => 'Er is een Wikidataitem gekoppeld aan deze 
pagina.', # Fuzzy
-       'wikibase-comment-unlink' => 'Deze pagina is ontkoppeld van het 
Wikidataitem. De taalkoppelingen zijn verwijderd.', # Fuzzy
-       'wikibase-comment-restore' => 'Het gekoppelde Wikidataitem is 
teruggeplaatst. De taalkoppelingen zijn hersteld.', # Fuzzy
-       'wikibase-comment-update' => 'Wikidataitem bijgewerkt', # Fuzzy
+       'wikibase-after-page-move' => 'U kunt ook het gekoppelde item van 
{{WBREPONAME}} [$1 bijwerken] om de taalkoppelingen op de hernoemde pagina te 
kunnen beheren.',
+       'wikibase-after-page-move-queued' => 'Het aan deze pagina gekoppelde 
[$1 item van {{WBREPONAME}}] wordt binnenkort automatisch bijgewerkt.',
+       'wikibase-comment-add' => 'Item van {{WBREPONAME}} aangemaakt.',
+       'wikibase-comment-remove' => 'Het gekoppelde item van {{WBREPONAME}} is 
verwijderd. De taalkoppelingen zijn verwijderd.',
+       'wikibase-comment-linked' => 'Er is een item van {{WBREPONAME}} 
gekoppeld aan deze pagina.',
+       'wikibase-comment-unlink' => 'Deze pagina is ontkoppeld van het item 
van {{WBREPONAME}}. De taalkoppelingen zijn verwijderd.',
+       'wikibase-comment-restore' => 'Het gekoppelde item van {{WBREPONAME}} 
is teruggeplaatst. De taalkoppelingen zijn hersteld.',
+       'wikibase-comment-update' => 'Item van {{WBREPONAME}} bijgewerkt',
        'wikibase-comment-sitelink-add' => 'Taalkoppeling toegevoegd: $1',
        'wikibase-comment-sitelink-change' => 'Taalkoppeling gewijzigd van $1 
naar $2',
        'wikibase-comment-sitelink-remove' => 'Taalkoppeling verwijderd: $1',
@@ -3391,13 +3392,13 @@
        'wikibase-linkitem-success-link' => "De pagina's zijn gekoppeld. U kunt 
het item met de koppelingen vinden in de [$1 centrale gegevensrepository].",
        'wikibase-property-notfound' => 'Eigenschap $1 niet gevonden.',
        'wikibase-property-notsupportedyet' => 'Wikibase ondersteunt het 
eigenschapstype voor de eigenschap $1 nog niet.',
-       'wikibase-rc-hide-wikidata' => 'Wikidata $1', # Fuzzy
+       'wikibase-rc-hide-wikidata' => '{{WBREPONAME}} $1',
        'wikibase-rc-hide-wikidata-hide' => 'verbergen',
        'wikibase-rc-hide-wikidata-show' => 'weergeven',
-       'wikibase-rc-show-wikidata-pref' => 'Wikidatabewerkingen weergeven in 
recente wijzigingen', # Fuzzy
+       'wikibase-rc-show-wikidata-pref' => 'Bewerkingen van {{WBREPONAME}} 
weergeven in recente wijzigingen',
        'wikibase-rc-wikibase-edit-letter' => 'D',
-       'wikibase-rc-wikibase-edit-title' => 'Wikidatabewerking', # Fuzzy
-       'wikibase-watchlist-show-changes-pref' => 'Wikidata bewerkingen 
weergeven in uw volglijst', # Fuzzy
+       'wikibase-rc-wikibase-edit-title' => 'Bewerking van {{WBREPONAME}}',
+       'wikibase-watchlist-show-changes-pref' => 'Bewerkingen van 
{{WBREPONAME}} weergeven in uw volglijst',
        'wikibase-error-serialize-error' => 'De gegevens konden niet 
geserialiseerd worden',
        'wikibase-error-invalid-entity-id' => 'Het opgegeven ID is niet bekend 
in het systeem. Gebruik een geldig entiteits-ID.',
        'special-unconnectedpages' => "Pagina's die niet gekoppeld zijn aan 
items",
@@ -3408,7 +3409,7 @@
        'wikibase-unconnectedpages-page-warning' => 'De paginanaam kan niet 
worden gebruikt voor de zoekopdracht en wordt genegeerd.',
        'wikibase-unconnectedpages-iwdata-label' => "Alleen pagina's met 
intertaalkoppelingen",
        'wikibase-unconnectedpages-format-row' => '($1 
intertaalkoppeling{{PLURAL:$1||en}} op de pagina)',
-       'wikibase-pageinfo-entity-id' => 'Wikidata Item-ID', # Fuzzy
+       'wikibase-pageinfo-entity-id' => '{{WBREPONAME}} item-ID',
        'wikibase-pageinfo-entity-id-none' => 'Geen',
        'wikibase-property-render-error' => 'Het verwerken van de eigenschap $1 
is mislukt: $2',
 );
diff --git a/extensions/Wikibase/repo/Wikibase.i18n.php 
b/extensions/Wikibase/repo/Wikibase.i18n.php
index a23dac6..78dafbd 100644
--- a/extensions/Wikibase/repo/Wikibase.i18n.php
+++ b/extensions/Wikibase/repo/Wikibase.i18n.php
@@ -283,8 +283,8 @@
        'wikibase-api-no-such-site' => 'Could not find such a site', # Do not 
translate
        'wikibase-api-no-such-sitelink' => 'Could not find such a sitelink', # 
Do not translate
        'wikibase-api-no-such-statement' => 'Could not find such a statement', 
# Do not translate
-       'wikibase-api-not-a-statement' => 'Not a statement', # Do not translate
-       'wikibase-api-not-an-item' => 'Not an item', # Do not translate
+       'wikibase-api-not-statement' => 'Not a statement', # Do not translate
+       'wikibase-api-not-item' => 'Not an item', # Do not translate
        'wikibase-api-not-recognized-siteid' => 'The supplied site identifier 
was not recognized', # Do not translate
        'wikibase-api-not-recognized' => 'Something was not recognized', # Do 
not translate
        'wikibase-api-not-recognized-array' => 'An array was expected, but not 
recognized', # Do not translate
@@ -305,6 +305,7 @@
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 
search the related logs]</span>
 to find out where it went.',
        'wikibase-noentity-createone' => 'You can also [[$1|create a new 
one]].',
+       'wikibase-special-mergeitems-error-prefix' => 'The items could not be 
merged. The following error occurred:',
 
        // item - summary and autocomment, see docs/summaries.txt
        'wikibase-item-summary-wbsetitem' => 'Created a new item', // legacy
@@ -1068,8 +1069,8 @@
        'wikibase-api-no-such-site' => '!!DO NOT TRANSLATE!! Could not find 
such a site, this could be to the user entering the wrong data',
        'wikibase-api-no-such-sitelink' => 'Could not find such a sitelink, 
this could be to the user entering the wrong data',
        'wikibase-api-no-such-statement' => '!!DO NOT TRANSLATE!! Could not 
find such a statement, this could be to the user entering the wrong data',
-       'wikibase-api-not-a-statement' => '!!DO NOT TRANSLATE!! The passed 
parameter is Not a statement when a statement is expected',
-       'wikibase-api-not-an-item' => '!!DO NOT TRANSLATE!! The passed 
parameter is Not an item when an item is expected (the passed parameter may 
infact be a property)',
+       'wikibase-api-not-statement' => '!!DO NOT TRANSLATE!! The passed 
parameter is Not a statement when a statement is expected',
+       'wikibase-api-not-item' => '!!DO NOT TRANSLATE!! The passed parameter 
is Not an item when an item is expected (the passed parameter may infact be a 
property)',
        'wikibase-api-not-recognized-siteid' => '!!DO NOT TRANSLATE!! The 
supplied site identifier was not recognized',
        'wikibase-api-not-recognized' => '!!DO NOT TRANSLATE!! Something was 
not recognized (general message)',
        'wikibase-api-not-recognized-array' => '!!DO NOT TRANSLATE!! An array 
was expected, but not recognized. The user probably passed the API a malformed 
parameter',
@@ -1278,6 +1279,7 @@
 Right to alter the [[d:Wikidata:Glossary#Term|terms]] of 
[[d:Wikidata:Glossary#Item|items]].',
        'right-property-create' => '{{doc-right|property-create}}
 Right to create new [[d:Wikidata:Glossary#Property|properties]].',
+       'wikibase-special-mergeitems-error-prefix' => 'Prefix for making 
Special:MergeItems error messages more informative.',
 );
 
 /** Achinese (Acèh)
@@ -7573,6 +7575,7 @@
  * @author Pooja 1810
  * @author Siddhartha Ghai
  * @author Vivek Rai
+ * @author Wikiuser13
  */
 $messages['hi'] = array(
        'wikibase-edit' => 'संपादन',
@@ -7586,7 +7589,7 @@
        'wikibase-sitelink-site-edit-placeholder' => 'साइट',
        'wikibase-sitelink-page-edit-placeholder' => 'पृष्ठ',
        'wikibase-remove' => 'ह्टाना',
-       'wikibase-propertyedittool-full' => 'दि  ग७यी मूल्यो कि सुचि  पुरई हे!',
+       'wikibase-propertyedittool-full' => 'मानों की सूची पूर्ण है.',
        'wikibase-entityselector-more' => 'ज़्यादा',
        'wikibase-itembytitle-lookup-page' => 'प्ण्णा',
        'wikibase-itembytitle-submit' => 'खोजे',
@@ -10020,10 +10023,12 @@
        'wikibase-item-summary-wbeditentity' => 'Жаңа элемент құрылды',
        'wikibase-item-summary-wbeditentity-create' => 'also',
        'wikibase-item-summary-wbeditentity-update' => 'Элемент жаңартылды',
-       'wikibase-item-summary-wbsetlabel-set' => '[$2] деғгейі өзгертілді',
+       'wikibase-item-summary-wbsetlabel-set' => '[$2] деңгейін өзгерті',
        'wikibase-item-summary-wbsetlabel-remove' => '[$2] деңгейі алынып 
тасталды',
        'wikibase-item-summary-wbsetdescription-set' => '[$2] сипаттамасы 
өзгертілді',
        'wikibase-item-summary-wbsetdescription-remove' => '[$2]  сипаттамасы 
алынып тасталды',
+       'wikibase-item-summary-wbsetsitelink-add' => '[$2] сайтынан сілтеме 
қосты',
+       'wikibase-item-summary-wbsetsitelink-remove' => '[$2] сайтынан 
сілтемені аластады',
 );
 
 /** Korean (한국어)
@@ -12583,7 +12588,7 @@
        'wikibase-undo-nocontent' => 'De inhoud van versie $2 van pagina $1 kan 
niet geladen worden',
        'wikibase-propertyedittool-full' => 'De lijst met waarden is compleet.',
        'wikibase-propertyedittool-counter-pending-tooltip' => '{{PLURAL:$1|Eén 
waarde|$1 waarden}} nog niet opgeslagen',
-       'wikibase-propertyedittool-counter-entrieslabel' => 
'{{PLURAL:$1|ingang|ingangen}}',
+       'wikibase-propertyedittool-counter-entrieslabel' => 
'{{PLURAL:$1|item|items}}',
        'wikibase-sitelinksedittool-full' => "Koppelingen naar pagina's zijn al 
ingesteld voor alle bekende sites.",
        'wikibase-disambiguation-title' => 'Disambiguatie voor "$1"',
        'wb-special-newitem-new-item-notification' => 'Nieuw item $1 aangemaakt 
en doorverwezen naar de pagina voor dat item. Terug naar $2.',
@@ -12610,7 +12615,7 @@
        'wikibase-snakview-snaktypeselector-somevalue' => 'onbekende waarde',
        'wikibase-snakview-snaktypeselector-novalue' => 'geen waarde',
        'wikibase-shortcopyrightwarning' => 'Door te klikken op "$1" gaat u 
akkoord met de [[$2|gebruiksvoorwaarden]] en gaat u onherroepelijk akkoord met 
het vrijgeven van uw bijdrage onder de $3.',
-       'wikibase-copyrighttooltip-acknowledge' => 'Ik accepteer deze 
voorwaarden voor mijn toekomstige bewerken. Geef dit bericht niet opnieuw 
weer.',
+       'wikibase-copyrighttooltip-acknowledge' => 'Ik accepteer deze 
voorwaarden voor mijn toekomstige bewerkingen. Geef dit bericht niet opnieuw 
weer.',
        'wikibase-entityselector-more' => 'meer',
        'wikibase-anonymouseditwarning' => 'Waarschuwing: u bent niet aangemeld.
 Uw IP-adres wordt opgeslagen in bewerkingsgeschiedenis van deze entiteit.',
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaim.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaim.php
index 53b934f..eb8a234 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaim.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpClaim.php
@@ -6,10 +6,11 @@
 use OutOfBoundsException;
 use Wikibase\DataModel\ByPropertyIdArray;
 use Wikibase\DataModel\Claim\Claim;
+use Wikibase\DataModel\Claim\ClaimGuidParser;
 use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\Lib\ClaimGuidGenerator;
-use Wikibase\Repo\WikibaseRepo;
+use Wikibase\Lib\ClaimGuidValidator;
 use Wikibase\Summary;
 
 /**
@@ -23,48 +24,54 @@
 class ChangeOpClaim extends ChangeOpBase {
 
        /**
-        * @since 0.4
-        *
         * @var Claim
         */
-       protected $claim;
+       private $claim;
 
        /**
-        * @since 0.5
-        *
         * @var ClaimGuidGenerator
         */
-       protected $guidGenerator;
+       private $guidGenerator;
 
        /**
-        * @since 0.5
-        *
+        * @var ClaimGuidValidator
+        */
+       private $guidValidator;
+
+       /**
+        * @var ClaimGuidParser
+        */
+       private $guidParser;
+
+       /**
         * @var int|null
         */
-       protected $index;
+       private $index;
 
        /**
         * @param Claim $claim
         * @param ClaimGuidGenerator $guidGenerator
+        * @param ClaimGuidValidator $guidValidator
+        * @param ClaimGuidParser $guidParser
         * @param int|null $index
         *
         * @throws InvalidArgumentException
         */
-       public function __construct( $claim, $guidGenerator, $index = null ) {
-               if ( !$claim instanceof Claim ) {
-                       throw new InvalidArgumentException( '$claim needs to be 
an instance of Claim' );
-               }
-
-               if( !$guidGenerator instanceof ClaimGuidGenerator ){
-                       throw new InvalidArgumentException( '$guidGenerator 
needs to be an instance of ClaimGuidGenerator' );
-               }
-
+       public function __construct(
+               Claim $claim,
+               ClaimGuidGenerator $guidGenerator,
+               ClaimGuidValidator $guidValidator,
+               ClaimGuidParser $guidParser,
+               $index = null
+       ) {
                if( !is_null( $index ) && !is_integer( $index ) ) {
                        throw new InvalidArgumentException( '$index needs to be 
null or an integer value' );
                }
 
                $this->claim = $claim;
                $this->guidGenerator = $guidGenerator;
+               $this->guidValidator = $guidValidator;
+               $this->guidParser = $guidParser;
                $this->index = $index;
        }
 
@@ -73,16 +80,12 @@
         */
        public function apply( Entity $entity, Summary $summary = null ) {
 
-               //TODO: inject parser and validator
-               $guidValidator = 
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator();
-               $guidParser = 
WikibaseRepo::getDefaultInstance()->getClaimGuidParser();
-
                if( $this->claim->getGuid() === null ){
                        $this->claim->setGuid( $this->guidGenerator->newGuid() 
);
                }
-               $guid = $guidParser->parse( $this->claim->getGuid() );
+               $guid = $this->guidParser->parse( $this->claim->getGuid() );
 
-               if ( $guidValidator->validate( $guid->getSerialization() ) === 
false ) {
+               if ( $this->guidValidator->validate( $guid->getSerialization() 
) === false ) {
                        throw new ChangeOpException( "Claim does not have a 
valid GUID" );
                } else if ( !$entity->getId()->equals( $guid->getEntityId() ) ){
                        throw new ChangeOpException( "Claim GUID invalid for 
given entity" );
diff --git a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php 
b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
index e5e9467..d304193 100644
--- a/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
+++ b/extensions/Wikibase/repo/includes/ChangeOp/ChangeOpsMerge.php
@@ -4,14 +4,17 @@
 
 use InvalidArgumentException;
 use Wikibase\DataModel\Claim\Claim;
+use Wikibase\DataModel\Claim\ClaimGuidParser;
 use Wikibase\DataModel\Claim\Statement;
+use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\ItemId;
 use Wikibase\DataModel\Reference;
-use Wikibase\Item;
 use Wikibase\LabelDescriptionDuplicateDetector;
 use Wikibase\Lib\ClaimGuidGenerator;
 use Wikibase\SiteLinkCache;
 use Wikibase\Term;
+use Wikibase\Lib\ClaimGuidValidator;
+use Wikibase\Repo\WikibaseRepo;
 
 /**
  * @since 0.5
@@ -25,12 +28,30 @@
        private $toItem;
        private $fromChangeOps;
        private $toChangeOps;
-       /** @var array */
+
+       /**
+        * @var array
+        */
        private $ignoreConflicts;
-       /** @var LabelDescriptionDuplicateDetector */
+
+       /**
+        * @var LabelDescriptionDuplicateDetector
+        */
        private $labelDescriptionDuplicateDetector;
-       /** @var SitelinkCache */
+
+       /**
+        * @var SitelinkCache
+        */
        private $sitelinkCache;
+
+       /**
+        * @var ClaimGuidValidator
+        */
+       private $claimGuidValidator;
+       /**
+        * @var ClaimGuidParser
+        */
+       private $claimGuidParser;
 
        /**
         * @param Item $fromItem
@@ -47,14 +68,19 @@
                SitelinkCache $sitelinkCache,
                $ignoreConflicts = array()
        ) {
+               $this->assertValidIgnoreConflictValues( $ignoreConflicts );
+
                $this->fromItem = $fromItem;
                $this->toItem = $toItem;
                $this->fromChangeOps = new ChangeOps();
                $this->toChangeOps = new ChangeOps();
-               $this->assertValidIgnoreConflictValues( $ignoreConflicts );
                $this->ignoreConflicts = $ignoreConflicts;
                $this->labelDescriptionDuplicateDetector = 
$labelDescriptionDuplicateDetector;
                $this->sitelinkCache = $sitelinkCache;
+
+               //@todo inject me
+               $this->claimGuidValidator = 
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator();
+               $this->claimGuidParser = 
WikibaseRepo::getDefaultInstance()->getClaimGuidParser();
        }
 
        /**
@@ -152,9 +178,11 @@
                        if( $toMergeToClaim ) {
                                $this->generateReferencesChangeOps( $toClaim, 
$toMergeToClaim->getGuid() );
                        } else {
-                               $this->toChangeOps->add( new ChangeOpClaim(
-                                       $toClaim,
-                                       new ClaimGuidGenerator( 
$this->toItem->getId() )
+                       $this->toChangeOps->add( new ChangeOpClaim(
+                               $toClaim,
+                               new ClaimGuidGenerator( $this->toItem->getId() 
),
+                               $this->claimGuidValidator,
+                               $this->claimGuidParser
                                ) );
                        }
                }
diff --git a/extensions/Wikibase/repo/includes/ParserOutputJsConfigBuilder.php 
b/extensions/Wikibase/repo/includes/ParserOutputJsConfigBuilder.php
index 2ab6f32..27fe321 100644
--- a/extensions/Wikibase/repo/includes/ParserOutputJsConfigBuilder.php
+++ b/extensions/Wikibase/repo/includes/ParserOutputJsConfigBuilder.php
@@ -94,17 +94,19 @@
         * @param Entity $entity
         * @param SerializationOptions $options
         *
-        * @throws RuntimeException
+        * @return array
         */
        protected function getEntityVars( Entity $entity, SerializationOptions 
$options ) {
                $entityId = $entity->getId();
 
                if ( !$entityId ) {
-                       throw new RuntimeException( '$entity has no entity id' 
);
+                       $entityId = ''; //XXX: should probably throw an 
exception
+               } else {
+                       $entityId = $entityId->getSerialization();
                }
 
                $configVars = array(
-                       'wbEntityId' => $entityId->getSerialization(),
+                       'wbEntityId' => $entityId,
                        'wbUsedEntities' => FormatJson::encode( 
$this->getBasicEntityInfo( $entity ) ),
                        'wbEntity' => FormatJson::encode( 
$this->getSerializedEntity( $entity, $options ) )
                );
diff --git a/extensions/Wikibase/repo/includes/api/EditEntity.php 
b/extensions/Wikibase/repo/includes/api/EditEntity.php
index 77f5e8f..89569ab 100644
--- a/extensions/Wikibase/repo/includes/api/EditEntity.php
+++ b/extensions/Wikibase/repo/includes/api/EditEntity.php
@@ -20,13 +20,16 @@
 use Wikibase\ChangeOp\ChangeOps;
 use Wikibase\DataModel\Claim\Claim;
 use Wikibase\DataModel\Entity\Entity;
+use Wikibase\DataModel\Claim\ClaimGuidParser;
 use Wikibase\DataModel\Entity\EntityId;
 use Wikibase\DataModel\Entity\Item;
 use Wikibase\DataModel\Entity\Property;
 use Wikibase\EntityFactory;
 use Wikibase\EntityRevisionLookup;
 use Wikibase\Lib\ClaimGuidGenerator;
+use Wikibase\Lib\ClaimGuidValidator;
 use Wikibase\Lib\Serializers\SerializerFactory;
+use Wikibase\Repo\WikibaseRepo;
 use Wikibase\Summary;
 use Wikibase\Utils;
 
@@ -59,12 +62,25 @@
        protected $entityRevisionLookup;
 
        /**
+        * @var ClaimGuidValidator
+        */
+       private $claimGuidValidator;
+
+       /**
+        * @var ClaimGuidParser
+        */
+       private $claimGuidParser;
+
+       /**
         * @see ApiBase::_construct()
         */
        public function __construct( $mainModule, $moduleName, $prefix = '' ) {
                parent::__construct( $mainModule, $moduleName, $prefix );
 
                $this->validLanguageCodes = array_flip( 
Utils::getLanguageCodes() );
+
+               $this->claimGuidValidator = 
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator();
+               $this->claimGuidParser =  
WikibaseRepo::getDefaultInstance()->getClaimGuidParser();
        }
 
        /**
@@ -225,7 +241,9 @@
                        $changeOps->add(
                                $this->getClaimsChangeOps(
                                        $data['claims'],
-                                       new ClaimGuidGenerator( 
$entity->getId() )
+                                       new ClaimGuidGenerator( 
$entity->getId() ),
+                                       $this->claimGuidValidator,
+                                       $this->claimGuidParser
                                )
                        );
                }
@@ -425,9 +443,11 @@
         *
         * @param array $claims
         * @param ClaimGuidGenerator $guidGenerator
+        * @param ClaimGuidValidator $guidValidator
+        * @param ClaimGuidParser $guidParser
         * @return ChangeOpClaim[]
         */
-       protected function getClaimsChangeOps( $claims, $guidGenerator ) {
+       protected function getClaimsChangeOps( $claims, $guidGenerator, 
$guidValidator, $guidParser ) {
                if ( !is_array( $claims ) ) {
                        $this->dieUsage( "List of claims must be an array", 
'not-recognized-array' );
                }
@@ -438,12 +458,12 @@
                        foreach( $claims as $subClaims ){
                                $changeOps = array_merge( $changeOps,
                                        $this->getRemoveClaimsChangeOps( 
$subClaims ),
-                                       $this->getModifyClaimsChangeOps( 
$subClaims, $guidGenerator ) );
+                                       $this->getModifyClaimsChangeOps( 
$subClaims, $guidGenerator , $guidValidator, $guidParser ) );
                        }
                } else {
                        $changeOps = array_merge( $changeOps,
                                $this->getRemoveClaimsChangeOps( $claims ),
-                               $this->getModifyClaimsChangeOps( $claims, 
$guidGenerator ) );
+                               $this->getModifyClaimsChangeOps( $claims, 
$guidGenerator , $guidValidator, $guidParser ) );
                }
 
                return $changeOps;
@@ -452,9 +472,12 @@
        /**
         * @param array $claims array of serialized claims
         * @param ClaimGuidGenerator $guidGenerator
+        * @param ClaimGuidValidator $guidValidator
+        * @param ClaimGuidParser $guidParser
+        *
         * @return ChangeOp[]
         */
-       private function getModifyClaimsChangeOps( $claims, $guidGenerator ){
+       private function getModifyClaimsChangeOps( $claims, $guidGenerator, 
$guidValidator, $guidParser ){
                $opsToReturn = array();
 
                $serializerFactory = new SerializerFactory();
@@ -476,7 +499,7 @@
                                if( array_key_exists( 'id', $claimArray ) ){
                                        $opsToReturn[] = new 
ChangeOpClaimRemove( $claim->getGuid() );
                                }
-                               $opsToReturn[] = new ChangeOpClaim( $claim, 
$guidGenerator );
+                               $opsToReturn[] = new ChangeOpClaim( $claim, 
$guidGenerator, $guidValidator, $guidParser );
                        }
                }
                return $opsToReturn;
@@ -694,7 +717,7 @@
                        array( 'code' => 'no-such-site', 'info' => $this->msg( 
'wikibase-api-no-such-site' )->text() ),
                        array( 'code' => 'no-external-page', 'info' => 
$this->msg( 'wikibase-api-no-external-page' )->text() ),
                        array( 'code' => 'not-item', 'info' => $this->msg( 
'wikibase-api-not-item' )->text() ),
-                       array( 'code' => 'no-such-sitelink', 'info' => 
$this->msg( 'wikibase-api-no-sitelink' )->text() ),
+                       array( 'code' => 'no-such-sitelink', 'info' => 
$this->msg( 'wikibase-api-no-such-sitelink' )->text() ),
                        array( 'code' => 'invalid-json', 'info' => $this->msg( 
'wikibase-api-invalid-json' )->text() ),
                        array( 'code' => 'not-recognized-string', 'info' => 
$this->msg( 'wikibase-api-not-recognized-string' )->text() ),
                        array( 'code' => 'param-illegal', 'info' => $this->msg( 
'wikibase-api-param-illegal' )->text() ),
diff --git a/extensions/Wikibase/repo/includes/api/SearchEntities.php 
b/extensions/Wikibase/repo/includes/api/SearchEntities.php
index ee7e7bf..a687003 100644
--- a/extensions/Wikibase/repo/includes/api/SearchEntities.php
+++ b/extensions/Wikibase/repo/includes/api/SearchEntities.php
@@ -290,13 +290,11 @@
                // Actual result set.
                $entries = array_slice( $entries, $params['continue'], 
$params['limit'] );
 
-               $allowedParams = $this->getAllowedParams();
                $nextContinuation = $params['continue'] + $params['limit'];
-               $maxContinuation = 
$allowedParams['continue'][ApiBase::PARAM_MAX];
 
                // Only pass search-continue param if there are more results 
and the maximum continuation
                // limit is not exceeded.
-               if ( $hits > $nextContinuation && $nextContinuation <= 
$maxContinuation ) {
+               if ( $hits > $nextContinuation && $nextContinuation <= 
ApiBase::LIMIT_SML1 ) {
                        $this->getResult()->addValue(
                                null,
                                'search-continue',
@@ -347,14 +345,7 @@
                                ApiBase::PARAM_MIN => 0,
                                ApiBase::PARAM_RANGE_ENFORCE => true,
                        ),
-                       'continue' => array(
-                               ApiBase::PARAM_TYPE => 'limit',
-                               ApiBase::PARAM_DFLT => 0,
-                               ApiBase::PARAM_MAX => ApiBase::LIMIT_SML1,
-                               ApiBase::PARAM_MAX2 => ApiBase::LIMIT_SML2,
-                               ApiBase::PARAM_MIN => 0,
-                               ApiBase::PARAM_RANGE_ENFORCE => true,
-                       ),
+                       'continue' => null,
                );
        }
 
diff --git a/extensions/Wikibase/repo/includes/api/SetClaim.php 
b/extensions/Wikibase/repo/includes/api/SetClaim.php
index fa34a3a..6b78f89 100644
--- a/extensions/Wikibase/repo/includes/api/SetClaim.php
+++ b/extensions/Wikibase/repo/includes/api/SetClaim.php
@@ -3,6 +3,7 @@
 namespace Wikibase\Api;
 
 use ApiBase;
+use ApiMain;
 use DataValues\IllegalValueException;
 use InvalidArgumentException;
 use OutOfBoundsException;
@@ -17,7 +18,9 @@
 use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\Lib\ClaimGuidGenerator;
+use Wikibase\Lib\ClaimGuidValidator;
 use Wikibase\Lib\Serializers\SerializerFactory;
+use Wikibase\Repo\WikibaseRepo;
 use Wikibase\Summary;
 
 /**
@@ -30,6 +33,25 @@
  * @author Adam Shorland
  */
 class SetClaim extends ModifyClaim {
+
+       /**
+        * @var ClaimGuidValidator
+        */
+       private $claimGuidValidator;
+
+       public function __construct( ApiMain $mainModule, $moduleName, 
$modulePrefix = '' ) {
+               parent::__construct( $mainModule, $moduleName, $modulePrefix );
+       }
+
+       /**
+        * @return ClaimGuidValidator
+        */
+       private function getClaimGuidValidator() {
+               if( !isset( $this->claimGuidValidator ) ) {
+                       $this->claimGuidValidator = 
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator();
+               }
+               return $this->claimGuidValidator;
+       }
 
        /**
         * @see ApiBase::execute
@@ -57,6 +79,8 @@
                $changeop = new ChangeOpClaim(
                        $claim,
                        new ClaimGuidGenerator( $guid->getEntityId() ),
+                       $this->getClaimGuidValidator(),
+                       $this->claimGuidParser,
                        ( isset( $params['index'] ) ? $params['index'] : null )
                );
                try{
diff --git a/extensions/Wikibase/repo/includes/api/SetSiteLink.php 
b/extensions/Wikibase/repo/includes/api/SetSiteLink.php
index db49d5f..f0d32a5 100644
--- a/extensions/Wikibase/repo/includes/api/SetSiteLink.php
+++ b/extensions/Wikibase/repo/includes/api/SetSiteLink.php
@@ -141,7 +141,7 @@
                        array( 'code' => 'not-item', 'info' => $this->msg( 
'wikibase-api-not-item' )->text() ),
                        array( 'code' => 'not-recognized-siteid', 'info' => 
$this->msg( 'wikibase-api-not-recognized-siteid' )->text() ),
                        array( 'code' => 'no-external-page', 'info' => 
$this->msg( 'wikibase-api-no-external-page' )->text() ),
-                       array( 'code' => 'no-such-sitelink', 'info' => 
$this->msg( 'wikibase-api-no-sitelink' )->text() ),
+                       array( 'code' => 'no-such-sitelink', 'info' => 
$this->msg( 'wikibase-api-no-such-sitelink' )->text() ),
                ) );
        }
 
diff --git a/extensions/Wikibase/repo/includes/specials/SpecialMergeItems.php 
b/extensions/Wikibase/repo/includes/specials/SpecialMergeItems.php
index a0441ff..c6dd96c 100644
--- a/extensions/Wikibase/repo/includes/specials/SpecialMergeItems.php
+++ b/extensions/Wikibase/repo/includes/specials/SpecialMergeItems.php
@@ -88,7 +88,7 @@
 
                if ( $this->modifyEntity( $status ) ) {
                        if ( !$status->isGood() ) {
-                               $this->showErrorHTML( $status->getMessage() );
+                               $this->showErrorHTML( 
$this->msg('wikibase-special-mergeitems-error-prefix')->text() . ' ' . 
$status->getMessage() );
                        } elseif ( $this->saveChanges() ) {
                                return true;
                        }
diff --git 
a/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpClaimTest.php
 
b/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpClaimTest.php
index fd0f3b9..8b880f1 100644
--- 
a/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpClaimTest.php
+++ 
b/extensions/Wikibase/repo/tests/phpunit/includes/ChangeOp/ChangeOpClaimTest.php
@@ -4,6 +4,8 @@
 
 use Wikibase\ChangeOp\ChangeOpClaim;
 use Wikibase\DataModel\Claim\Claim;
+use Wikibase\DataModel\Claim\ClaimGuid;
+use Wikibase\DataModel\Claim\ClaimGuidParser;
 use Wikibase\DataModel\Claim\Claims;
 use Wikibase\DataModel\Entity\Entity;
 use Wikibase\DataModel\Entity\Item;
@@ -12,6 +14,8 @@
 use Wikibase\DataModel\Snak\PropertyNoValueSnak;
 use Wikibase\DataModel\Snak\PropertySomeValueSnak;
 use Wikibase\Lib\ClaimGuidGenerator;
+use Wikibase\Lib\ClaimGuidValidator;
+use Wikibase\Repo\WikibaseRepo;
 
 /**
  * @covers Wikibase\ChangeOp\ChangeOpClaim
@@ -26,24 +30,68 @@
  */
 class ChangeOpClaimTest extends \PHPUnit_Framework_TestCase {
 
-       public function invalidConstructorProvider() {
-               $validGuidGenerator = new ClaimGuidGenerator( new ItemId( 'q42' 
) );
+       public function getValidClaim() {
+               return new Claim( new PropertyNoValueSnak( 7 ) );
+       }
 
-               $args = array();
-               $args[] = array( array(), $validGuidGenerator );
+       public function getValidGuidGenerator( ItemId $itemId ) {
+               return new ClaimGuidGenerator( $itemId );
+       }
 
-               return $args;
+       private function getMockGuidValidator() {
+               $mock = $this->getMockBuilder( 
'\Wikibase\Lib\ClaimGuidValidator' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $mock->expects( $this->any() )
+                       ->method( 'validate' )
+                       ->will( $this->returnValue( true ) );
+               $mock->expects( $this->any() )
+                       ->method( 'validateFormat' )
+                       ->will( $this->returnValue( true ) );
+               return $mock;
+       }
+
+       private function getMockGuidParser( ItemId $itemId ) {
+               $mockClaimGuid = $this->getMockBuilder( 
'Wikibase\DataModel\Claim\ClaimGuid' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $mockClaimGuid->expects( $this->any() )
+                       ->method( 'getSerialization' )
+                       ->will( $this->returnValue( 'theValidatorIsMockedSoMeh! 
:D' ) );
+               $mockClaimGuid->expects( $this->any() )
+                       ->method( 'getEntityId' )
+                       ->will( $this->returnValue( $itemId ) );
+
+               $mock = $this->getMockBuilder( 
'Wikibase\DataModel\Claim\ClaimGuidParser' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $mock->expects( $this->any() )
+                       ->method( 'parse' )
+                       ->will( $this->returnValue( $mockClaimGuid ) );
+               return $mock;
+       }
+
+       public function invalidIndexProvider() {
+               return array(
+                       array( 'foo' ),
+                       array( array() ),
+                       array( $this->getValidClaim() ),
+               );
        }
 
        /**
-        * @dataProvider invalidConstructorProvider
+        * @dataProvider invalidIndexProvider
         * @expectedException InvalidArgumentException
-        *
-        * @param Claim $claim
-        * @param ClaimGuidGenerator $guidGenerator
         */
-       public function testInvalidConstruct( $claim, $guidGenerator ) {
-               new ChangeOpClaim( $claim, $guidGenerator );
+       public function testConstructionWithInvalidIndex( $invalidIndex ) {
+               $itemId = new ItemId( 'q42' );
+               new ChangeOpClaim(
+                       $this->getValidClaim(),
+                       $this->getValidGuidGenerator( $itemId),
+                       $this->getMockGuidValidator(),
+                       $this->getMockGuidParser( $itemId ),
+                       $invalidIndex
+               );
        }
 
        public function provideTestApply() {
@@ -124,6 +172,8 @@
                $changeOpClaim = new ChangeOpClaim(
                        $claim,
                        new ClaimGuidGenerator( $entity->getId() ),
+                       
WikibaseRepo::getDefaultInstance()->getClaimGuidValidator(), //@todo mock me!
+                       
WikibaseRepo::getDefaultInstance()->getClaimGuidParser(), //@todo mock me!
                        $index
                );
                $changeOpClaim->apply( $entity );
diff --git a/vendor/autoload.php b/vendor/autoload.php
index be6f821..98ba56c 100644
--- a/vendor/autoload.php
+++ b/vendor/autoload.php
@@ -4,4 +4,4 @@
 
 require_once __DIR__ . '/composer' . '/autoload_real.php';
 
-return ComposerAutoloaderInitabc19352de6a6ec10a4cdef700c1db2c::getLoader();
+return ComposerAutoloaderInit834601ca90ee05c029592186cbb7841b::getLoader();
diff --git a/vendor/composer/autoload_real.php 
b/vendor/composer/autoload_real.php
index 5cb3f0b..1a5d76a 100644
--- a/vendor/composer/autoload_real.php
+++ b/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
 
 // autoload_real.php @generated by Composer
 
-class ComposerAutoloaderInitabc19352de6a6ec10a4cdef700c1db2c
+class ComposerAutoloaderInit834601ca90ee05c029592186cbb7841b
 {
     private static $loader;
 
@@ -19,9 +19,9 @@
             return self::$loader;
         }
 
-        
spl_autoload_register(array('ComposerAutoloaderInitabc19352de6a6ec10a4cdef700c1db2c',
 'loadClassLoader'), true, true);
+        
spl_autoload_register(array('ComposerAutoloaderInit834601ca90ee05c029592186cbb7841b',
 'loadClassLoader'), true, true);
         self::$loader = $loader = new \Composer\Autoload\ClassLoader();
-        
spl_autoload_unregister(array('ComposerAutoloaderInitabc19352de6a6ec10a4cdef700c1db2c',
 'loadClassLoader'));
+        
spl_autoload_unregister(array('ComposerAutoloaderInit834601ca90ee05c029592186cbb7841b',
 'loadClassLoader'));
 
         $vendorDir = dirname(__DIR__);
         $baseDir = dirname($vendorDir);
@@ -45,14 +45,14 @@
 
         $includeFiles = require __DIR__ . '/autoload_files.php';
         foreach ($includeFiles as $file) {
-            composerRequireabc19352de6a6ec10a4cdef700c1db2c($file);
+            composerRequire834601ca90ee05c029592186cbb7841b($file);
         }
 
         return $loader;
     }
 }
 
-function composerRequireabc19352de6a6ec10a4cdef700c1db2c($file)
+function composerRequire834601ca90ee05c029592186cbb7841b($file)
 {
     require $file;
 }
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index ac424ca..bcf3d9e 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -877,12 +877,12 @@
         "source": {
             "type": "git",
             "url": 
"https://github.com/wikimedia/mediawiki-extensions-Wikibase.git";,
-            "reference": "a5c1b9e581d26fd422afd6e76472f7f399d40fbc"
+            "reference": "9296f5949fa834e33b4e38679e316334d49fda9f"
         },
         "dist": {
             "type": "zip",
-            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/a5c1b9e581d26fd422afd6e76472f7f399d40fbc";,
-            "reference": "a5c1b9e581d26fd422afd6e76472f7f399d40fbc",
+            "url": 
"https://api.github.com/repos/wikimedia/mediawiki-extensions-Wikibase/zipball/9296f5949fa834e33b4e38679e316334d49fda9f";,
+            "reference": "9296f5949fa834e33b4e38679e316334d49fda9f",
             "shasum": ""
         },
         "require": {
@@ -901,7 +901,7 @@
             "wikibase/data-model": "~0.7.2",
             "wikibase/easyrdf_lite": "~0.8.1"
         },
-        "time": "2014-03-22 09:43:36",
+        "time": "2014-03-22 23:50:57",
         "type": "mediawiki-extension",
         "installation-source": "dist",
         "autoload": {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I8ebaf5a3b18cbf2cfd66003935cdf06f6010ba2b
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/Wikidata
Gerrit-Branch: master
Gerrit-Owner: WikidataBuilder <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Tobias Gritschacher <[email protected]>
Gerrit-Reviewer: WikidataJenkins <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to