<table><tr><td style="">astippich added inline comments.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D17302">View Revision</a></tr></table><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D17302#inline-104021">View Inline</a><span style="color: #4b4d51; font-weight: bold;">bruns</span> wrote in <span style="color: #4b4d51; font-weight: bold;">resulttest.cpp:63</span></div>
<div style="margin: 8px 0; padding: 0 12px; color: #74777D;"><p style="padding: 0; margin: 8px;">This looks wrong to me ...<br />
How many items do you get when you append "keyword3" first and ["keyword1", "keyword2"] next?</p></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">It's the same. The properties will get merged regardless of their form if the QVariantMap already contains an item with the same key, see <a href="https://phabricator.kde.org/source/baloo/browse/master/src/file/extractor/result.cpp$52" class="remarkup-link" target="_blank" rel="noreferrer">https://phabricator.kde.org/source/baloo/browse/master/src/file/extractor/result.cpp$52</a> so this works as currently intended.<br />
Right now, we rely on this behavior because KFileMetaData (incorrectly) outputs multiple properties with the same key instead of a single property made of a QStringList. I wrote the test to prepare the switch to string lists at some point.<br />
My favorite solution is to remove this merging, once KFileMetaData outputs string lists when necessary. This requires a custom function for the conversion of the output JSON to a PropertyMap, see <a href="https://phabricator.kde.org/source/baloo/browse/master/src/lib/file.cpp$118" class="remarkup-link" target="_blank" rel="noreferrer">https://phabricator.kde.org/source/baloo/browse/master/src/lib/file.cpp$118</a><br />
QJsonDocument::toVariantMap currently does not handle duplicated keys. IIRC JSON with duplicated keys is strictly not compliant, but since it is only internal, this is okay IMHO.<br />
The own conversion function will save us an extra for loop, and makes sure that the same PropertyMap is generated when either querying via Baloo (file.load()) or directly via KFileMetaData's SimpleExtractionResult.</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R293 Baloo</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D17302">https://phabricator.kde.org/D17302</a></div></div><br /><div><strong>To: </strong>astippich, Baloo, bruns<br /><strong>Cc: </strong>kde-frameworks-devel, ashaposhnikov, michaelh, astippich, spoorun, ngraham, bruns, abrahams<br /></div>