From kde-commits Sat Feb 28 22:46:24 2009 From: Volker Krause Date: Sat, 28 Feb 2009 22:46:24 +0000 To: kde-commits Subject: kdesupport/akonadi/server/src/handler Message-Id: <1235861184.913528.32135.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=123586119501661 SVN commit 933442 by vkrause: Use the new item retrieval code here as well, but keep ignoring errors for now. As we fall back to whatever we already have in the cache in this case, this actually is the desired behaviour in many cases, but I guess we need a command parameter to let the application specify if errors should be forwarded or ignored. M +12 -5 fetch.cpp --- trunk/kdesupport/akonadi/server/src/handler/fetch.cpp #933441:933442 @@ -27,7 +27,9 @@ #include "storage/selectquerybuilder.h" #include "resourceinterface.h" #include "storage/itemqueryhelper.h" +#include "storage/itemretrievalmanager.h" #include "storage/parthelper.h" +#include "akdebug.h" #include #include @@ -361,8 +363,6 @@ if ( mCacheOnly || (payloadList.isEmpty() && !mFullPayload) ) return; - DataStore *store = connection()->storageBackend(); - // TODO: I'm sure this can be done with a single query instead of manually QueryBuilder partQuery = buildPartQuery( payloadList, mFullPayload, false ); if ( !partQuery.exec() ) @@ -398,9 +398,16 @@ QStringList missingPayloadIds; foreach ( const QString &s, missingParts ) missingPayloadIds << s.mid( 4 ); - store->retrieveDataFromResource( pimItemId, mItemQuery.query().value( itemQueryRidColumn ).toString().toUtf8(), - mItemQuery.query().value( itemQueryMimeTypeColumn ).toString().toUtf8(), - mItemQuery.query().value( itemQueryResouceColumn ).toString(), missingPayloadIds ); + // TODO: how should we handle retrieval errors here? so far they have been ignored, + // which makes sense in some cases, do we need a command parameter for this? + try { + ItemRetrievalManager::instance()->requestItemDelivery( pimItemId, + mItemQuery.query().value( itemQueryRidColumn ).toString().toUtf8(), + mItemQuery.query().value( itemQueryMimeTypeColumn ).toString().toUtf8(), + mItemQuery.query().value( itemQueryResouceColumn ).toString(), missingPayloadIds ); + } catch ( const ItemRetrieverException &e ) { + akError() << e.type() << ": " << e.what(); + } } mItemQuery.query().next(); }