[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/nepomuk/query
From:       Sebastian Trueg <sebastian () trueg ! de>
Date:       2010-12-08 14:17:33
Message-ID: 20101208141733.6B93CAC8AA () svn ! kde ! org
[Download RAW message or body]

SVN commit 1204649 by trueg:

Get rid of the DBus serialization hack for additional bindings.

 M  +19 -11    dbusoperators.cpp  
 M  +1 -1      org.kde.nepomuk.Query.xml  


--- trunk/KDE/kdelibs/nepomuk/query/dbusoperators.cpp #1204648:1204649
@@ -41,7 +41,7 @@
 QDBusArgument& operator<<( QDBusArgument& arg, const Nepomuk::Query::Result& result \
)  {
     //
-    // Signature: (sda{s(isss)}s)
+    // Signature: (sda{s(isss)}a{s(isss)}s)
     //
 
     arg.beginStructure();
@@ -49,27 +49,27 @@
     // resource URI and score
     arg << QString::fromAscii( result.resource().resourceUri().toEncoded() ) << \
result.score();  
+    // request properties
     arg.beginMap( QVariant::String, qMetaTypeId<Soprano::Node>() );
-
-    // request properties
     QHash<Nepomuk::Types::Property, Soprano::Node> rp = result.requestProperties();
     for ( QHash<Nepomuk::Types::Property, Soprano::Node>::const_iterator it = \
rp.constBegin(); it != rp.constEnd(); ++it ) {  arg.beginMapEntry();
         arg << QString::fromAscii( it.key().uri().toEncoded() ) << it.value();
         arg.endMapEntry();
     }
+    arg.endMap();
 
-    // additional bindings (the hacked version to make sure we do not change the \
                signature. It would probably
-    // not be a big deal to change it but neither is this hack)
+    // additional bindings
+    arg.beginMap( QVariant::String, qMetaTypeId<Soprano::Node>() );
     const Soprano::BindingSet additionalBindings = result.additionalBindings();
     foreach( const QString& binding, additionalBindings.bindingNames() ) {
         arg.beginMapEntry();
-        arg << (QLatin1String("|") + binding) << additionalBindings[binding]; // we \
use some char which is very invalid in URIs +        arg << binding << \
additionalBindings[binding];  arg.endMapEntry();
     }
-
     arg.endMap();
 
+    // full text search excerpt
     arg << result.excerpt();
 
     arg.endStructure();
@@ -87,7 +87,6 @@
     arg.beginStructure();
     QString uri;
     double score = 0.0;
-    Soprano::BindingSet additionalBindings;
 
     arg >> uri >> score;
     result = Nepomuk::Query::Result( Nepomuk::Resource::fromResourceUri( \
QUrl::fromEncoded( uri.toAscii() ) ), score ); @@ -99,13 +98,22 @@
         arg.beginMapEntry();
         arg >> rs >> node;
         arg.endMapEntry();
-        if( rs.startsWith(QLatin1String("|")) )
-            additionalBindings.insert( rs.mid(1), node );
-        else
             result.addRequestProperty( QUrl::fromEncoded( rs.toAscii() ), node );
     }
     arg.endMap();
 
+    Soprano::BindingSet additionalBindings;
+    arg.beginMap();
+    while ( !arg.atEnd() ) {
+        QString binding;
+        Soprano::Node node;
+        arg.beginMapEntry();
+        arg >> binding >> node;
+        arg.endMapEntry();
+        additionalBindings.insert( binding, node );
+    }
+    arg.endMap();
+
     QString excerpt;
     arg >> excerpt;
     result.setExcerpt( excerpt );
--- trunk/KDE/kdelibs/nepomuk/query/org.kde.nepomuk.Query.xml #1204648:1204649
@@ -12,7 +12,7 @@
       <arg type="s" direction="out" />
     </method>
     <signal name="newEntries">
-      <arg name="entries" type="a(sda{s(isss)})" />
+      <arg name="entries" type="a(sda{s(isss)}s)" />
       <annotation name="com.trolltech.QtDBus.QtTypeName.In0" \
value="QList&lt;Nepomuk::Query::Result&gt;" />  </signal>
     <signal name="entriesRemoved">


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic