smf/smfservermodule/smfserver/pluginmgr/smfpluginmanagerutil.cpp
changeset 14 a469c0e6e7fb
parent 10 77a56c951f86
child 18 013a02bf2bb0
--- a/smf/smfservermodule/smfserver/pluginmgr/smfpluginmanagerutil.cpp	Mon Jun 07 11:43:45 2010 +0100
+++ b/smf/smfservermodule/smfserver/pluginmgr/smfpluginmanagerutil.cpp	Wed Jun 23 19:51:49 2010 +0530
@@ -19,6 +19,7 @@
  */
 
 // plugin interfaces
+#include <smfactivityfetcherplugin.h>
 #include <smfcontactfetcherplugin.h>
 #include <smfpostproviderplugin.h>
 #include <smflyricsserviceplugin.h>
@@ -53,8 +54,9 @@
  * Constructor with default argument
  * @param aParent The parent object
  */
-SmfPluginManagerUtil::SmfPluginManagerUtil ( QObject */*aParent*/ )
+SmfPluginManagerUtil::SmfPluginManagerUtil ( QObject *aParent )
 	{
+	Q_UNUSED(aParent)
 	}
 
 
@@ -76,30 +78,43 @@
  * @param aOperation The type of operation to be performed
  * @param aInputData The data required to create the web query
  * @param aReqData [out] The request data created by the plugin
- * @param aResult [out] SmfPluginManagerResult, The result of the operation
- * @see smfglobal.h
+ * @param aResult [out] SmfError, The result of the operation
+ * It can be :-
+ * SmfPluginNoError (if plugin has created the request successfully)
+ * SmfPluginUnknownPluginService (if plugin service is not known or unsupported)
+ * SmfPluginRequestCreationFailed (if request creation has failed)
  */
 void SmfPluginManagerUtil::createRequest ( QObject* aInstance, 
 		const SmfRequestTypeID &aOperation, 
 		QByteArray &aInputData,
 		SmfPluginRequestData &aReqData,
-		SmfPluginManagerResult &aResult )
+		SmfError &aResult )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createRequest");
-	SmfPluginError pluginErrorVal = SmfPluginErrNone;
+	qDebug()<<"SmfPluginManagerUtil::createRequest()";
+	SmfPluginError pluginErrorVal = SmfPluginErrServiceNotSupported;
 	
 	// Find the type of service required
 	switch(aOperation)
 		{
+		case SmfActivitySelfActivity:
+		case SmfActivityFriendsActivities:
+		case SmfActivityFiltered:
+		case SmfActivityCustomRequest:
+			// Authorise the plugin and call create request methods
+			pluginErrorVal = createActivityFetcherRequest(aInstance, aOperation, 
+					aInputData, aReqData);
+			break;
+			
 		case SmfContactGetFriends:
 		case SmfContactGetFollowers:
 		case SmfContactSearch:
 		case SmfContactSearchNear:
 		case SmfContactGetGroups:
 		case SmfContactSearchInGroup:
+		case SmfContactCustomRequest:
 			// Authorise the plugin and call create request methods
 			pluginErrorVal = createContactFetcherRequest(aInstance, aOperation, 
-					aInputData, aReqData, aResult);
+					aInputData, aReqData);
 			break;
 			
 		case SmfContactRetrievePosts:
@@ -109,25 +124,28 @@
 		case SmfContactCommentOnAPost:
 		case SmfContactPostAppearence:
 		case SmfContactSharePost:
+		case SmfContactPostCustomRequest:
 			// Authorise the plugin and call create request methods
 			pluginErrorVal = createContactPostRequest(aInstance, aOperation, 
-					aInputData, aReqData, aResult);
+					aInputData, aReqData);
 			break;
 			
 		case SmfMusicGetLyrics:
 		case SmfMusicGetSubtitle:
+		case SmfMusicLyricsCustomRequest:
 			// Authorise the plugin and call create request methods
 			pluginErrorVal = createMusicLyricsRequest(aInstance, aOperation, 
-					aInputData, aReqData, aResult);
+					aInputData, aReqData);
 			break;
 	
 		case SmfMusicGetEventsOnLoc:
 		case SmfMusicGetVenueOnLoc:
 		case SmfMusicGetEventsOnVenue:
 		case SmfMusicPostEvents:
+		case SmfMusicEventsCustomRequest:
 			// Authorise the plugin and call create request methods
 			pluginErrorVal = createMusicEventsRequest(aInstance, aOperation, 
-					aInputData, aReqData, aResult);
+					aInputData, aReqData);
 			break;
 			
 		case SmfMusicGetRecommendations:
@@ -135,25 +153,28 @@
 		case SmfMusicGetTrackInfo:
 		case SmfMusicGetStores:
 		case SmfMusicPostCurrentPlaying:
+		case SmfMusicSearchCustomRequest:
 			// Authorise the plugin and call create request methods
 			pluginErrorVal = createMusicSearchRequest(aInstance, aOperation, 
-					aInputData, aReqData, aResult);
+					aInputData, aReqData);
 			break;
 			
 		case SmfMusicGetUserInfo:
 		case SmfMusicSearchUser:
+		case SmfMusicServiceCustomRequest:
 			// Authorise the plugin and call create request methods
 			pluginErrorVal = createMusicServiceRequest(aInstance, aOperation, 
-					aInputData, aReqData, aResult);
+					aInputData, aReqData);
 			break;
 			
 		case SmfMusicGetPlaylists:
 		case SmfMusicGetPlaylistsOfUser:
 		case SmfMusicAddToPlaylist:
 		case SmfMusicPostCurrentPlayingPlaylist:
+		case SmfMusicPlaylistCustomRequest:
 			// Authorise the plugin and call create request methods
 			pluginErrorVal = createMusicPlaylistRequest(aInstance, aOperation, 
-					aInputData, aReqData, aResult);
+					aInputData, aReqData);
 			break;
 			
 		case SmfPictureGetPictures:
@@ -161,19 +182,110 @@
 		case SmfPictureUpload:
 		case SmfPictureMultiUpload:
 		case SmfPicturePostComment:
+		case SmfPictureCustomRequest:
 			// Authorise the plugin and call create request methods
 			pluginErrorVal = createGalleryRequest(aInstance, aOperation, 
-					aInputData, aReqData, aResult);
+					aInputData, aReqData);
 			break;
 			
 		default:
-			SmfPluginManager::getInstance()->server()->writeLog("Unknown service type!!!");
-			aResult = SmfPluginUnknownService;
+			qDebug()<<"Unknown service type!!!";
+			aResult = SmfPMPluginUnknownPluginService;
 		}
-	if(SmfPluginErrNone == pluginErrorVal)
-		aResult = SmfPluginRequestCreated;
+	qDebug()<<"return value = "<<pluginErrorVal;
+	
+	// Convert the SmfPluginError error type to SmfError type
+	convertPluginErrorType(pluginErrorVal, aResult);
+	}
+
+
+/**
+ * Method to create a web query to fetch activities
+ * @param aPlugin The instance of the loaded plugin that performs the 
+ * contact fetch operation.
+ * @param aOperation The type of operation to be performed
+ * @param aInputData The data required to create the web query
+ * @param aReqData [out] The request data created by the plugin
+ * @return SmfPluginError
+ */
+SmfPluginError SmfPluginManagerUtil::createActivityFetcherRequest ( QObject *aPlugin, 
+		const SmfRequestTypeID &aOperation, 
+		QByteArray &aInputData,
+		SmfPluginRequestData &aReqData )
+	{
+	qDebug()<<"SmfPluginManagerUtil::createActivityFetcherRequest()";
+	
+	// typecast instance to the activity - fetcher type, here SmfActivityFetcherPlugin
+	SmfActivityFetcherPlugin *plugin = qobject_cast<SmfActivityFetcherPlugin *>(aPlugin);
+	SmfPluginError pluginErrorVal = SmfPluginErrServiceNotSupported;
+	
+	if(plugin)
+		{
+		QDataStream stream(aInputData);
+		int pageNum, itemPerPage;
+
+		switch(aOperation)
+			{
+			case SmfActivitySelfActivity:
+				qDebug()<<"Plugin Operation requested : selfactivities()";
+				stream>>pageNum;
+				stream>>itemPerPage;
+				pluginErrorVal = plugin->selfActivities(aReqData, pageNum, itemPerPage);
+				break;
+				
+			case SmfActivityFriendsActivities:
+				{
+				qDebug()<<"Plugin Operation requested : friendsActivities()";
+				SmfContact contact;
+				stream>>contact;
+				stream>>pageNum;
+				stream>>itemPerPage;
+				pluginErrorVal = plugin->friendsActivities(aReqData, contact, pageNum, itemPerPage);
+				break;
+				}
+				
+			case SmfActivityFiltered:
+				{
+				qDebug()<<"Plugin Operation requested : filtered()";
+				QList<SmfActivityObjectType> list;
+				QList<int> intList;
+				stream>>intList;
+				list.clear();
+				foreach(int val, intList)
+					{
+					SmfActivityObjectType type = (SmfActivityObjectType)val;
+					list.append(type);
+					}
+				
+				stream>>pageNum;
+				stream>>itemPerPage;
+				pluginErrorVal = plugin->filtered(aReqData, list, pageNum, itemPerPage);
+				break;
+				}
+				
+			case SmfActivityCustomRequest:
+				{
+				qDebug()<<"Plugin Operation requested : customRequest()";
+				int operationType;
+				stream>>operationType;
+				QByteArray data;
+				stream>>data;
+				pluginErrorVal = plugin->customRequest(aReqData, operationType, &data);
+				break;
+				}
+				
+			default:
+				// do nothing, unknown service
+				qDebug()<<"No API found for this operation type!!!";
+			}
+		}
 	else
-		aResult = SmfPluginRequestCreationFailed;
+		{
+		qDebug()<<"Plugin instance couldn't be typecasted!!!";
+		pluginErrorVal = SmfPluginErrRequestNotCreated; 
+		}
+	
+	return pluginErrorVal;
 	}
 
 
@@ -184,21 +296,22 @@
  * @param aOperation The type of operation to be performed
  * @param aInputData The data required to create the web query
  * @param aReqData [out] The request data created by the plugin
- * @param aResult [out] SmfPluginManagerResult, The result of the operation
- * @return SmfPluginError
- * @see smfglobal.h
+ * @return SmfPluginError, it can be :-
+ * SmfPluginErrNone (if request is created successfully) or
+ * SmfPluginErrServiceNotSupported (if the service requested is not known or unsupported) or
+ * SmfPluginErrInvalidArguments (if the arguments are invalid) or 
+ * SmfPluginErrRequestNotCreated (if request could not be created) 
  */
 SmfPluginError SmfPluginManagerUtil::createContactFetcherRequest ( QObject *aPlugin, 
 		const SmfRequestTypeID &aOperation, 
 		QByteArray &aInputData,
-		SmfPluginRequestData &aReqData,
-		SmfPluginManagerResult &aResult )
+		SmfPluginRequestData &aReqData )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createContactFetcherRequest");
+	qDebug()<<"SmfPluginManagerUtil::createContactFetcherRequest()";
 	
 	// typecast instance to the contact - fetcher type, here SmfContactFetcherPlugin
 	SmfContactFetcherPlugin *plugin = qobject_cast<SmfContactFetcherPlugin *>(aPlugin);
-	SmfPluginError pluginErrorVal = SmfPluginErrNone;
+	SmfPluginError pluginErrorVal = SmfPluginErrServiceNotSupported;
 	
 	if(plugin)
 		{
@@ -208,12 +321,14 @@
 		switch(aOperation)
 			{
 			case SmfContactGetFriends:
+				qDebug()<<"Plugin Operation requested : friends()";
 				stream>>pageNum;
 				stream>>itemPerPage;
 				pluginErrorVal = plugin->friends(aReqData, pageNum, itemPerPage);
 				break;
 				
 			case SmfContactGetFollowers:
+				qDebug()<<"Plugin Operation requested : followers()";
 				stream>>pageNum;
 				stream>>itemPerPage;
 				pluginErrorVal = plugin->followers(aReqData, pageNum, itemPerPage);
@@ -221,6 +336,7 @@
 				
 			case SmfContactSearch:
 				{
+				qDebug()<<"Plugin Operation requested : search()";
 				SmfContact searchContact;
 				stream>>searchContact;
 				stream>>pageNum;
@@ -231,6 +347,7 @@
 				
 			case SmfContactSearchNear:
 				{
+				qDebug()<<"Plugin Operation requested : searchNear()";
 				SmfLocation location;
 				int i;
 				stream>>i;
@@ -242,13 +359,17 @@
 				}
 				
 			case SmfContactGetGroups:
+				{
+				qDebug()<<"Plugin Operation requested : groups()";
 				stream>>pageNum;
 				stream>>itemPerPage;
 				pluginErrorVal = plugin->groups(aReqData, pageNum, itemPerPage);
 				break;
+				}
 				
 			case SmfContactSearchInGroup:
 				{
+				qDebug()<<"Plugin Operation requested : searchInGroup()";
 				SmfGroup group;
 				stream>>group;
 				stream>>pageNum;
@@ -257,20 +378,27 @@
 				break;
 				}
 				
+			case SmfContactCustomRequest:
+				{
+				qDebug()<<"Plugin Operation requested : customRequest()";
+				int operationType;
+				stream>>operationType;
+				QByteArray data;
+				stream>>data;
+				pluginErrorVal = plugin->customRequest(aReqData, operationType, &data);
+				break;
+				}
+				
 			default:
 				// do nothing, unknown service
-				aResult = SmfPluginUnknownService;
-				SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!");
-				return SmfPluginErrInvalidRequest;
+				qDebug()<<"No API found for this operation type!!!";
 			}
-
-			if(SmfPluginErrNone == pluginErrorVal)
-				aResult = SmfPluginRequestCreated;
-			else
-				aResult = SmfPluginServiceError;
 		}
-		else
-			aResult = SmfPluginLoadError;
+	else
+		{
+		qDebug()<<"Plugin instance couldn't be typecasted!!!";
+		pluginErrorVal = SmfPluginErrRequestNotCreated; 
+		}
 	
 	return pluginErrorVal;
 	}
@@ -284,21 +412,22 @@
  * @param aOperation The type of operation to be performed
  * @param aInputData The data required to create the web query
  * @param aReqData [out] The request data created by the plugin
- * @param aResult [out] SmfPluginManagerResult, The result of the operation
- * @return SmfPluginError
- * @see smfglobal.h
+ * @return SmfPluginError, it can be :-
+ * SmfPluginErrNone (if request is created successfully) or
+ * SmfPluginErrServiceNotSupported (if the service requested is not known or unsupported) or
+ * SmfPluginErrInvalidArguments (if the arguments are invalid) or 
+ * SmfPluginErrRequestNotCreated (if request could not be created) 
  */
 SmfPluginError SmfPluginManagerUtil::createContactPostRequest ( QObject *aPlugin, 
 		const SmfRequestTypeID &aOperation, 
 		QByteArray &aInputData,
-		SmfPluginRequestData &aReqData,
-		SmfPluginManagerResult &aResult )
+		SmfPluginRequestData &aReqData )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createContactPostRequest");
+	qDebug()<<"SmfPluginManagerUtil::createContactPostRequest";
 	
 	// typecast instance to SmfPostProviderPlugin
 	SmfPostProviderPlugin *plugin = qobject_cast<SmfPostProviderPlugin *>(aPlugin);
-	SmfPluginError pluginErrorVal = SmfPluginErrNone;	
+	SmfPluginError pluginErrorVal = SmfPluginErrServiceNotSupported;	
 	
 	if(plugin)
 		{
@@ -311,6 +440,7 @@
 		switch(aOperation)
 			{
 			case SmfContactRetrievePosts:
+				qDebug()<<"Plugin Operation requested : retrieve()";
 				stream>>contact;
 				stream>>pageNum;
 				stream>>itemPerPage;
@@ -318,25 +448,31 @@
 				break;
 				
 			case SmfContactPost:
+				qDebug()<<"Plugin Operation requested : post()";
 				stream>>post;
 				stream>>location;
 				pluginErrorVal = plugin->post(aReqData, post, location);
 				break;
 				
 			case SmfContactUpdatePost:
+				qDebug()<<"Plugin Operation requested : updatePost()";
 				stream>>post;
 				pluginErrorVal = plugin->updatePost(aReqData, post);
 				break;
 				
 			case SmfContactPostDirected:
+				qDebug()<<"Plugin Operation requested : postDirected()";
 				stream>>post;
 				stream>>contact;
 				stream>>location;
+				qDebug()<<"Post data = "<<post.description();
+				qDebug()<<"Contact ID = "<<contact.value("Guid").value<QContactGuid>().guid();
 				pluginErrorVal = plugin->postDirected(aReqData, post, contact, &location);
 				break;
 				
 			case SmfContactCommentOnAPost:
 				{
+				qDebug()<<"Plugin Operation requested : commentOnAPost()";
 				SmfPost post2;
 				stream>>post;
 				stream>>post2;
@@ -347,6 +483,7 @@
 				
 			case SmfContactPostAppearence:
 				{
+				qDebug()<<"Plugin Operation requested : postAppearence()";
 				QString status;
 				int i;
 				stream>>i;
@@ -358,6 +495,7 @@
 				
 			case SmfContactSharePost:
 				{
+				qDebug()<<"Plugin Operation requested : sharePost()";
 				bool edited;
 				stream>>post;
 				stream>>contact;
@@ -366,20 +504,27 @@
 				break;
 				}
 				
+			case SmfContactPostCustomRequest:
+				{
+				qDebug()<<"Plugin Operation requested : customRequest()";
+				int operationType;
+				stream>>operationType;
+				QByteArray data;
+				stream>>data;
+				pluginErrorVal = plugin->customRequest(aReqData, operationType, &data);
+				break;
+				}
+				
 			default:
 				// do nothing, unknown service
-				aResult = SmfPluginUnknownService;
-				SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!");
-				return SmfPluginErrInvalidRequest;
+				qDebug()<<"No API found for this operation type!!!";
 			}
-	
-			if(SmfPluginErrNone == pluginErrorVal)
-				aResult = SmfPluginRequestCreated;
-			else
-				aResult = SmfPluginServiceError;
 		}
-		else
-			aResult = SmfPluginLoadError;
+	else
+		{
+		qDebug()<<"Plugin instance couldn't be typecasted!!!";
+		pluginErrorVal = SmfPluginErrRequestNotCreated; 
+		}
 	
 	return pluginErrorVal;
 	}
@@ -393,21 +538,22 @@
  * @param aOperation The type of operation to be performed
  * @param aInputData The data required to create the web query
  * @param aReqData [out] The request data created by the plugin
- * @param aResult [out] SmfPluginManagerResult, The result of the operation
- * @return SmfPluginError
- * @see smfglobal.h
+ * @return SmfPluginError, it can be :-
+ * SmfPluginErrNone (if request is created successfully) or
+ * SmfPluginErrServiceNotSupported (if the service requested is not known or unsupported) or
+ * SmfPluginErrInvalidArguments (if the arguments are invalid) or 
+ * SmfPluginErrRequestNotCreated (if request could not be created) 
  */
 SmfPluginError SmfPluginManagerUtil::createMusicLyricsRequest ( QObject *aPlugin, 
 		const SmfRequestTypeID &aOperation, 
 		QByteArray &aInputData,
-		SmfPluginRequestData &aReqData,
-		SmfPluginManagerResult &aResult )
+		SmfPluginRequestData &aReqData )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createMusicLyricsRequest");
+	qDebug()<<"SmfPluginManagerUtil::createMusicLyricsRequest";
 	
 	// typecast instance to SmfLyricsServicePlugin
 	SmfLyricsServicePlugin *plugin = qobject_cast<SmfLyricsServicePlugin *>(aPlugin);
-	SmfPluginError pluginErrorVal = SmfPluginErrNone;
+	SmfPluginError pluginErrorVal = SmfPluginErrServiceNotSupported;
 	
 	if(plugin)
 		{
@@ -418,6 +564,7 @@
 		switch(aOperation)
 			{
 			case SmfMusicGetLyrics:
+				qDebug()<<"Plugin Operation requested : lyrics()";
 				stream>>trackInfo;
 				stream>>pageNum;
 				stream>>itemPerPage;
@@ -426,6 +573,7 @@
 				
 			case SmfMusicGetSubtitle:
 				{
+				qDebug()<<"Plugin Operation requested : subtitles()";
 				stream>>trackInfo;
 				int i;
 				stream>>i;
@@ -436,20 +584,27 @@
 				break;
 				}
 				
+			case SmfMusicLyricsCustomRequest:
+				{
+				qDebug()<<"Plugin Operation requested : customRequest()";
+				int operationType;
+				stream>>operationType;
+				QByteArray data;
+				stream>>data;
+				pluginErrorVal = plugin->customRequest(aReqData, operationType, &data);
+				break;
+				}
+				
 			default:
 				// do nothing, unknown service
-				aResult = SmfPluginUnknownService;
-				SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!");
-				return SmfPluginErrInvalidRequest;
+				qDebug()<<"No API found for this operation type!!!";
 			}
-
-			if(SmfPluginErrNone == pluginErrorVal)
-				aResult = SmfPluginRequestCreated;
-			else
-				aResult = SmfPluginServiceError;
 		}
-		else
-			aResult = SmfPluginLoadError;
+	else
+		{
+		qDebug()<<"Plugin instance couldn't be typecasted!!!";
+		pluginErrorVal = SmfPluginErrRequestNotCreated; 
+		}
 	
 	return pluginErrorVal;
 	}
@@ -462,21 +617,22 @@
  * @param aOperation The type of operation to be performed
  * @param aInputData The data required to create the web query
  * @param aReqData [out] The request data created by the plugin
- * @param aResult [out] SmfPluginManagerResult, The result of the operation
- * @return SmfPluginError
- * @see smfglobal.h
+ * @return SmfPluginError, it can be :-
+ * SmfPluginErrNone (if request is created successfully) or
+ * SmfPluginErrServiceNotSupported (if the service requested is not known or unsupported) or
+ * SmfPluginErrInvalidArguments (if the arguments are invalid) or 
+ * SmfPluginErrRequestNotCreated (if request could not be created) 
  */
 SmfPluginError SmfPluginManagerUtil::createMusicEventsRequest ( QObject *aPlugin, 
 		const SmfRequestTypeID &aOperation, 
 		QByteArray &aInputData,
-		SmfPluginRequestData &aReqData,
-		SmfPluginManagerResult &aResult )
+		SmfPluginRequestData &aReqData )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createMusicEventsRequest");
+	qDebug()<<"SmfPluginManagerUtil::createMusicEventsRequest";
 	
 	// typecast instance to SmfMusicEventsPlugin
 	SmfMusicEventsPlugin *plugin = qobject_cast<SmfMusicEventsPlugin *>(aPlugin);
-	SmfPluginError pluginErrorVal = SmfPluginErrNone;
+	SmfPluginError pluginErrorVal = SmfPluginErrServiceNotSupported;
 	
 	if(plugin)
 		{
@@ -487,6 +643,7 @@
 		switch(aOperation)
 			{
 			case SmfMusicGetEventsOnLoc:
+				qDebug()<<"Plugin Operation requested : events() OnLoc";
 				stream>>location;
 				stream>>pageNum;
 				stream>>itemPerPage;
@@ -494,6 +651,7 @@
 				break;
 				
 			case SmfMusicGetVenueOnLoc:
+				qDebug()<<"Plugin Operation requested : venues()";
 				stream>>location;
 				stream>>pageNum;
 				stream>>itemPerPage;
@@ -502,6 +660,7 @@
 				
 			case SmfMusicGetEventsOnVenue:
 				{
+				qDebug()<<"Plugin Operation requested : events() OnVenue";
 				SmfLocation venue;
 				stream>>venue;
 				stream>>pageNum;
@@ -512,26 +671,34 @@
 				
 			case SmfMusicPostEvents:
 				{
+				qDebug()<<"Plugin Operation requested : postEvents()";
 				QList<SmfEvent> list;
 				stream>>list;
 				pluginErrorVal = plugin->postEvents(aReqData, list);
 				break;
 				}
 				
+			case SmfMusicEventsCustomRequest:
+				{
+				qDebug()<<"Plugin Operation requested : customRequest()";
+				int operationType;
+				stream>>operationType;
+				QByteArray data;
+				stream>>data;
+				pluginErrorVal = plugin->customRequest(aReqData, operationType, &data);
+				break;
+				}
+				
 			default:
 				// do nothing, unknown service
-				aResult = SmfPluginUnknownService;
-				SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!");
-				return SmfPluginErrInvalidRequest;
+				qDebug()<<"No API found for this operation type!!!";
 			}
-
-			if(SmfPluginErrNone == pluginErrorVal)
-				aResult = SmfPluginRequestCreated;
-			else
-				aResult = SmfPluginServiceError;
 		}
-		else
-			aResult = SmfPluginLoadError;
+	else
+		{
+		qDebug()<<"Plugin instance couldn't be typecasted!!!";
+		pluginErrorVal = SmfPluginErrRequestNotCreated; 
+		}
 	
 	return pluginErrorVal;
 	}
@@ -545,21 +712,22 @@
  * @param aOperation The type of operation to be performed
  * @param aInputData The data required to create the web query
  * @param aReqData [out] The request data created by the plugin
- * @param aResult [out] SmfPluginManagerResult, The result of the operation
- * @return SmfPluginError
- * @see smfglobal.h
+ * @return SmfPluginError, it can be :-
+ * SmfPluginErrNone (if request is created successfully) or
+ * SmfPluginErrServiceNotSupported (if the service requested is not known or unsupported) or
+ * SmfPluginErrInvalidArguments (if the arguments are invalid) or 
+ * SmfPluginErrRequestNotCreated (if request could not be created) 
  */
 SmfPluginError SmfPluginManagerUtil::createMusicSearchRequest ( QObject *aPlugin, 
 		const SmfRequestTypeID &aOperation, 
 		QByteArray &aInputData,
-		SmfPluginRequestData &aReqData,
-		SmfPluginManagerResult &aResult )
+		SmfPluginRequestData &aReqData )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createMusicSearchRequest");
+	qDebug()<<"SmfPluginManagerUtil::createMusicSearchRequest";
 	
 	// typecast instance to SmfMusicSearchPlugin
 	SmfMusicSearchPlugin *plugin = qobject_cast<SmfMusicSearchPlugin *>(aPlugin);
-	SmfPluginError pluginErrorVal = SmfPluginErrNone;
+	SmfPluginError pluginErrorVal = SmfPluginErrServiceNotSupported;
 	
 	if(plugin)
 		{
@@ -570,6 +738,7 @@
 		switch(aOperation)
 			{
 			case SmfMusicGetRecommendations:
+				qDebug()<<"Plugin Operation requested : recommendations()";
 				stream>>trackInfo;
 				stream>>pageNum;
 				stream>>itemPerPage;
@@ -577,6 +746,7 @@
 				break;
 				
 			case SmfMusicGetTracks:
+				qDebug()<<"Plugin Operation requested : tracks()";
 				stream>>trackInfo;
 				stream>>pageNum;
 				stream>>itemPerPage;
@@ -585,6 +755,7 @@
 				
 			case SmfMusicGetTrackInfo:
 				{
+				qDebug()<<"Plugin Operation requested : trackInfo()";
 				SmfMusicFingerPrint fp;
 				stream>>fp;
 				stream>>pageNum;
@@ -594,6 +765,7 @@
 				}
 				
 			case SmfMusicGetStores:
+				qDebug()<<"Plugin Operation requested : stores()";
 				stream>>trackInfo;
 				stream>>pageNum;
 				stream>>itemPerPage;
@@ -601,24 +773,52 @@
 				break;
 				
 			case SmfMusicPostCurrentPlaying:
+				qDebug()<<"Plugin Operation requested : postCurrentPlaying()";
 				stream>>trackInfo;
 				pluginErrorVal = plugin->postCurrentPlaying(aReqData, trackInfo);
 				break;
 				
+			case SmfMusicPostRating:
+				{
+				qDebug()<<"Plugin Operation requested : postRating()";
+				stream>>trackInfo;
+				SmfMusicRating rating;
+				stream>>rating;
+				pluginErrorVal = plugin->postRating(aReqData, trackInfo, rating);
+				break;
+				}
+				
+			case SmfMusicPostComment:
+				{
+				qDebug()<<"Plugin Operation requested : postComment()";
+				stream>>trackInfo;
+				SmfComment comment;
+				stream>>comment;
+				pluginErrorVal = plugin->postComments(aReqData, trackInfo, comment);
+				break;
+				}
+				
+			case SmfMusicSearchCustomRequest:
+				{
+				qDebug()<<"Plugin Operation requested : customRequest()";
+				int operationType;
+				stream>>operationType;
+				QByteArray data;
+				stream>>data;
+				pluginErrorVal = plugin->customRequest(aReqData, operationType, &data);
+				break;
+				}
+				
 			default:
 				// do nothing, unknown service
-				aResult = SmfPluginUnknownService;
-				SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!");
-				return SmfPluginErrInvalidRequest;
+				qDebug()<<"No API found for this operation type!!!";
 			}
-
-			if(SmfPluginErrNone == pluginErrorVal)
-				aResult = SmfPluginRequestCreated;
-			else
-				aResult = SmfPluginServiceError;
 		}
-		else
-			aResult = SmfPluginLoadError;
+	else
+		{
+		qDebug()<<"Plugin instance couldn't be typecasted!!!";
+		pluginErrorVal = SmfPluginErrRequestNotCreated; 
+		}
 	
 	return pluginErrorVal;
 	}
@@ -632,21 +832,22 @@
  * @param aOperation The type of operation to be performed
  * @param aInputData The data required to create the web query
  * @param aReqData [out] The request data created by the plugin
- * @param aResult [out] SmfPluginManagerResult, The result of the operation
- * @return SmfPluginError
- * @see smfglobal.h
+ * @return SmfPluginError, it can be :-
+ * SmfPluginErrNone (if request is created successfully) or
+ * SmfPluginErrServiceNotSupported (if the service requested is not known or unsupported) or
+ * SmfPluginErrInvalidArguments (if the arguments are invalid) or 
+ * SmfPluginErrRequestNotCreated (if request could not be created) 
  */
 SmfPluginError SmfPluginManagerUtil::createMusicServiceRequest ( QObject *aPlugin, 
 		const SmfRequestTypeID &aOperation, 
 		QByteArray &aInputData,
-		SmfPluginRequestData &aReqData,
-		SmfPluginManagerResult &aResult )
+		SmfPluginRequestData &aReqData )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createMusicServiceRequest");
+	qDebug()<<"SmfPluginManagerUtil::createMusicServiceRequest";
 	
 	// typecast instance to SmfMusicServicePlugin
 	SmfMusicServicePlugin *plugin = qobject_cast<SmfMusicServicePlugin *>(aPlugin);
-	SmfPluginError pluginErrorVal = SmfPluginErrNone;
+	SmfPluginError pluginErrorVal = SmfPluginErrServiceNotSupported;
 	
 	if(plugin)
 		{
@@ -656,11 +857,13 @@
 		switch(aOperation)
 			{
 			case SmfMusicGetUserInfo:
+				qDebug()<<"Plugin Operation requested : userInfo()";
 				pluginErrorVal = plugin->userInfo(aReqData);
 				break;
 				
 			case SmfMusicSearchUser:
 				{
+				qDebug()<<"Plugin Operation requested : serachNear() for Music";
 				SmfLocation place;
 				stream>>place;
 				stream>>pageNum;
@@ -669,20 +872,27 @@
 				break;
 				}
 				
+			case SmfMusicServiceCustomRequest:
+				{
+				qDebug()<<"Plugin Operation requested : customRequest()";
+				int operationType;
+				stream>>operationType;
+				QByteArray data;
+				stream>>data;
+				pluginErrorVal = plugin->customRequest(aReqData, operationType, &data);
+				break;
+				}
+				
 			default:
 				// do nothing, unknown service
-				aResult = SmfPluginUnknownService;
-				SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!");
-				return SmfPluginErrInvalidRequest;
+				qDebug()<<"No API found for this operation type!!!";
 			}
-
-			if(SmfPluginErrNone == pluginErrorVal)
-				aResult = SmfPluginRequestCreated;
-			else
-				aResult = SmfPluginServiceError;
 		}
-		else
-			aResult = SmfPluginLoadError;
+	else
+		{
+		qDebug()<<"Plugin instance couldn't be typecasted!!!";
+		pluginErrorVal = SmfPluginErrRequestNotCreated; 
+		}
 	
 	return pluginErrorVal;
 	}
@@ -696,21 +906,22 @@
  * @param aOperation The type of operation to be performed
  * @param aInputData The data required to create the web query
  * @param aReqData [out] The request data created by the plugin
- * @param aResult [out] SmfPluginManagerResult, The result of the operation
- * @return SmfPluginError
- * @see smfglobal.h
+ * @return SmfPluginError, it can be :-
+ * SmfPluginErrNone (if request is created successfully) or
+ * SmfPluginErrServiceNotSupported (if the service requested is not known or unsupported) or
+ * SmfPluginErrInvalidArguments (if the arguments are invalid) or 
+ * SmfPluginErrRequestNotCreated (if request could not be created) 
  */
 SmfPluginError SmfPluginManagerUtil::createMusicPlaylistRequest ( QObject *aPlugin, 
 		const SmfRequestTypeID &aOperation, 
 		QByteArray &aInputData,
-		SmfPluginRequestData &aReqData,
-		SmfPluginManagerResult &aResult )
+		SmfPluginRequestData &aReqData )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createMusicPlaylistRequest");
+	qDebug()<<"SmfPluginManagerUtil::createMusicPlaylistRequest";
 	
 	// typecast instance to SmfPlaylistServicePlugin
 	SmfPlaylistServicePlugin *plugin = qobject_cast<SmfPlaylistServicePlugin *>(aPlugin);
-	SmfPluginError pluginErrorVal = SmfPluginErrNone;
+	SmfPluginError pluginErrorVal = SmfPluginErrServiceNotSupported;
 	
 	if(plugin)
 		{
@@ -721,6 +932,7 @@
 		switch(aOperation)
 			{
 			case SmfMusicGetPlaylists:
+				qDebug()<<"Plugin Operation requested : playlists()";
 				stream>>pageNum;
 				stream>>itemPerPage;
 				pluginErrorVal = plugin->playlists(aReqData, pageNum, itemPerPage);
@@ -728,6 +940,7 @@
 				
 			case SmfMusicGetPlaylistsOfUser:
 				{
+				qDebug()<<"Plugin Operation requested : playlistsOf()";
 				SmfMusicProfile user;
 				stream>>user;
 				stream>>pageNum;
@@ -738,6 +951,7 @@
 				
 			case SmfMusicAddToPlaylist:
 				{
+				qDebug()<<"Plugin Operation requested : addToPlaylist()";
 				QList<SmfTrackInfo> list;
 				stream>>playlist;
 				stream>>list;
@@ -746,24 +960,32 @@
 				}
 				
 			case SmfMusicPostCurrentPlayingPlaylist:
+				qDebug()<<"Plugin Operation requested : postCurrentPlayingPlaylist()";
 				stream>>playlist;
 				pluginErrorVal = plugin->postCurrentPlayingPlaylist(aReqData, playlist);
 				break;
 				
+			case SmfMusicPlaylistCustomRequest:
+				{
+				qDebug()<<"Plugin Operation requested : customRequest()";
+				int operationType;
+				stream>>operationType;
+				QByteArray data;
+				stream>>data;
+				pluginErrorVal = plugin->customRequest(aReqData, operationType, &data);
+				break;
+				}
+				
 			default:
 				// do nothing, unknown service
-				aResult = SmfPluginUnknownService;
-				SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!");
-				return SmfPluginErrInvalidRequest;
+				qDebug()<<"No API found for this operation type!!!";
 			}
-
-			if(SmfPluginErrNone == pluginErrorVal)
-				aResult = SmfPluginRequestCreated;
-			else
-				aResult = SmfPluginServiceError;
 		}
-		else
-			aResult = SmfPluginLoadError;
+	else
+		{
+		qDebug()<<"Plugin instance couldn't be typecasted!!!";
+		pluginErrorVal = SmfPluginErrRequestNotCreated; 
+		}
 	
 	return pluginErrorVal;
 	}
@@ -776,21 +998,22 @@
  * @param aOperation The type of operation to be performed
  * @param aInputData The data required to create the web query
  * @param aReqData [out] The request data created by the plugin
- * @param aResult [out] SmfPluginManagerResult, The result of the operation
- * @return SmfPluginError
- * @see smfglobal.h
+ * @return SmfPluginError, it can be :-
+ * SmfPluginErrNone (if request is created successfully) or
+ * SmfPluginErrServiceNotSupported (if the service requested is not known or unsupported) or
+ * SmfPluginErrInvalidArguments (if the arguments are invalid) or 
+ * SmfPluginErrRequestNotCreated (if request could not be created) 
  */
 SmfPluginError SmfPluginManagerUtil::createGalleryRequest ( QObject *aPlugin, 
 		const SmfRequestTypeID &aOperation, 
 		QByteArray &aInputData,
-		SmfPluginRequestData &aReqData,
-		SmfPluginManagerResult &aResult )
+		SmfPluginRequestData &aReqData )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::createGalleryRequest");
+	qDebug()<<"SmfPluginManagerUtil::createGalleryRequest";
 	
 	// typecast instance to SmfGalleryPlugin
 	SmfGalleryPlugin *plugin = qobject_cast<SmfGalleryPlugin *>(aPlugin);
-	SmfPluginError pluginErrorVal = SmfPluginErrNone;
+	SmfPluginError pluginErrorVal = SmfPluginErrServiceNotSupported;
 	
 	if(plugin)
 		{
@@ -799,35 +1022,63 @@
 		
 		switch(aOperation)
 			{
+			
+			case SmfPictureGetAlbums:
+				{
+				qDebug()<<"Plugin Operation requested : albums()";
+				QStringList names;
+				SmfContact contact;
+				int pageNum, itemPerPage;
+				stream>>names;
+				stream>>contact;
+				stream>>pageNum;
+				stream>>itemPerPage;
+				pluginErrorVal = plugin->albums(aReqData, names, &contact, pageNum, itemPerPage);
+				break;
+				}
+			
 			case SmfPictureGetPictures:
 				{
+				qDebug()<<"Plugin Operation requested : pictures()";
 				int pageNum, itemPerPage;
+				SmfPictureAlbumList albumList;
+				stream>>albumList;
 				stream>>pageNum;
 				stream>>itemPerPage;
-				pluginErrorVal = plugin->pictures(aReqData, pageNum, itemPerPage);
+				pluginErrorVal = plugin->pictures(aReqData, albumList, pageNum, itemPerPage);
 				break;
 				}
 				
 			case SmfPictureDescription:
+				qDebug()<<"Plugin Operation requested : description()";
 				stream>>picture;
 				pluginErrorVal = plugin->description(aReqData, picture);
 				break;
 				
 			case SmfPictureUpload:
+				{
+				qDebug()<<"Plugin Operation requested : upload() single";
+				SmfPictureAlbum album;
 				stream>>picture;
-				pluginErrorVal = plugin->upload(aReqData, picture);
+				stream>>album;
+				pluginErrorVal = plugin->upload(aReqData, picture, &album);
 				break;
+				}
 				
 			case SmfPictureMultiUpload:
 				{
+				qDebug()<<"Plugin Operation requested : upload() Multiple";
 				QList<SmfPicture> list;
+				SmfPictureAlbum album;
 				stream>>list;
-				pluginErrorVal = plugin->upload(aReqData, list);
+				stream>>album;
+				pluginErrorVal = plugin->upload(aReqData, list, &album);
 				break;
 				}
 				
 			case SmfPicturePostComment:
 				{
+				qDebug()<<"Plugin Operation requested : postComment()";
 				SmfComment comment;
 				stream>>picture;
 				stream>>comment;
@@ -835,20 +1086,27 @@
 				break;
 				}
 				
+			case SmfPictureCustomRequest:
+				{
+				qDebug()<<"Plugin Operation requested : customRequest()";
+				int operationType;
+				stream>>operationType;
+				QByteArray data;
+				stream>>data;
+				pluginErrorVal = plugin->customRequest(aReqData, operationType, &data);
+				break;
+				}
+				
 			default:
 				// do nothing, unknown service
-				aResult = SmfPluginUnknownService;
-				SmfPluginManager::getInstance()->server()->writeLog("No API found for this operation type!!!");
-				return SmfPluginErrInvalidRequest;
+				qDebug()<<"No API found for this operation type!!!";
 			}
-
-			if(SmfPluginErrNone == pluginErrorVal)
-				aResult = SmfPluginRequestCreated;
-			else
-				aResult = SmfPluginServiceError;
 		}
-		else
-			aResult = SmfPluginLoadError;
+	else
+		{
+		qDebug()<<"Plugin instance couldn't be typecasted!!!";
+		pluginErrorVal = SmfPluginErrRequestNotCreated; 
+		}
 	
 	return pluginErrorVal;
 	}
@@ -865,10 +1123,9 @@
  * containing the data parsed by the plugins
  * @param aRetType [out] The Plugin return value
  * @param aPageResult [out] The page information filled by the plugins
- * @return SmfPluginManagerResult, The result of the operation
- * @see smfglobal.h
+ * @return SmfError, The result of the operation
  */	
-SmfPluginManagerResult SmfPluginManagerUtil::responseAvailable ( 
+SmfError SmfPluginManagerUtil::responseAvailable ( 
 		SmfPluginBase *aInstance,
 		const SmfRequestTypeID &aOperation,
 		const SmfTransportResult &aTransportResult, 
@@ -877,10 +1134,10 @@
 		SmfPluginRetType &aRetType,
 		SmfResultPage &aPageResult )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::responseAvailable");
+	qDebug()<<"Inside SmfPluginManagerUtil::responseAvailable()";
 	
-	SmfPluginError pluginRet;
-	SmfPluginManagerResult result = SmfPluginUnknownError;
+	SmfPluginError pluginRet = SmfPluginErrServiceNotSupported;
+	SmfError result = SmfPMPluginUnknownPluginService;
 
 	switch(aOperation)
 		{
@@ -920,7 +1177,7 @@
 		case SmfPictureMultiUpload:
 		case SmfPicturePostComment:
 			{
-			pluginRet = aInstance->responseAvailable(aTransportResult, aResponse, 
+			pluginRet = aInstance->responseAvailable(aOperation, aTransportResult, aResponse, 
 					aResult, aRetType, aPageResult );
 			
 			// When plugin returns no error
@@ -928,24 +1185,36 @@
 				{
 				// Request is complete, parsed data available with aResult
 				if( SmfRequestComplete == aRetType )
-					result =  SmfPluginResponseParsed;
+					{
+					qDebug()<<"Parsing successful";
+					result =  SmfNoError;
+					}
 				
 				// Send the request again
 				else if(SmfSendRequestAgain == aRetType )
-					result = SmfPluginSendRequestAgain;
+					{
+					qDebug()<<"Send request again";
+					result = SmfPMPluginSendRequestAgain;
+					}
 				else
-					result = SmfPluginResponseParseFailure;
+					convertPluginErrorType(pluginRet, result);
 				}
-			// Parsing failed
+
+			// Plugin returns error
 			else
-				result =  SmfPluginResponseParseFailure;
+				{
+				qDebug()<<"Plugin returned error!!!";
+				convertPluginErrorType(pluginRet, result);
+				if(SmfPluginErrorNetworkError == result)
+					convertNetworkErrorType(aTransportResult, result);
+				}
 			
 			break;
 			}
 			
 		default:
 			// Unknown service, saved data in Plugin manager is corrupted
-			SmfPluginManager::getInstance()->server()->writeLog("No operation type found!!!");
+			qDebug()<<"No operation type found!!!";
 		}
 	
 	return result;
@@ -964,7 +1233,7 @@
 		QVariant* aResult,
 		QDataStream &aDataStream )
 	{
-	SmfPluginManager::getInstance()->server()->writeLog("SmfPluginManagerUtil::serializeResult");
+	qDebug()<<"SmfPluginManagerUtil::serializeResult";
 	switch(aOperation)
 		{
 		// FOR CONTACT - FETCHER
@@ -974,6 +1243,7 @@
 		case SmfContactSearchNear:
 		case SmfContactSearchInGroup:
 			{
+			qDebug()<<"Serializing to : QList<SmfContact>";
 			QList<SmfContact> contactList;
 			if( aResult->canConvert<SmfContactList>() )
 				contactList = aResult->value<SmfContactList>();
@@ -983,6 +1253,7 @@
 
 		case SmfContactGetGroups:
 			{
+			qDebug()<<"Serializing to : QList<SmfGroup>";
 			QList<SmfGroup> groupList;
 			if( aResult->canConvert<SmfGroupList>() )
 				groupList = aResult->value<SmfGroupList>();
@@ -994,7 +1265,8 @@
 		// FOR CONTACT - POSTS
 		case SmfContactRetrievePosts:
 			{
-			SmfPluginManager::getInstance()->server()->writeLog("Serialize - retrieveposts() result");
+			qDebug()<<"Serializing to : QList<SmfPost>";
+			qDebug()<<"Serialize - retrieveposts() result";
 			
 			QList<SmfPost> postList;
 			if( aResult->canConvert<SmfPostList>() )
@@ -1010,6 +1282,7 @@
 		case SmfContactPostAppearence:
 		case SmfContactSharePost:
 			{
+			qDebug()<<"Serializing to : bool";
 			bool value;
 			if( QVariant::Bool == aResult->type() )
 				value = aResult->toBool();
@@ -1020,6 +1293,7 @@
 		// FOR MUSIC - LYRICS SERVICE
 		case SmfMusicGetLyrics:
 			{
+			qDebug()<<"Serializing to : QList<SmfLyrics>";
 			QList<SmfLyrics> lyricsList;
 			if( aResult->canConvert<SmfLyricsList>() )
 				lyricsList = aResult->value<SmfLyricsList>();
@@ -1030,6 +1304,7 @@
 
 		case SmfMusicGetSubtitle:
 			{
+			qDebug()<<"Serializing to : QList<SmfSubtitle>";
 			QList<SmfSubtitle> subtitleList;
 			if( aResult->canConvert<SmfSubtitleList>() )
 				subtitleList = aResult->value<SmfSubtitleList>();
@@ -1042,6 +1317,7 @@
 		case SmfMusicGetEventsOnLoc:
 		case SmfMusicGetEventsOnVenue:
 			{
+			qDebug()<<"Serializing to : QList<SmfEvent>";
 			QList<SmfEvent> eventList;
 			if( aResult->canConvert<SmfEventList>() )
 				eventList = aResult->value<SmfEventList>();
@@ -1052,6 +1328,7 @@
 			
 		case SmfMusicGetVenueOnLoc:
 			{
+			qDebug()<<"Serializing to : QList<SmfLocation>";
 			QList<SmfLocation> venueList;
 			if( aResult->canConvert<SmfLocationList>() )
 				venueList = aResult->value<SmfLocationList>();
@@ -1061,6 +1338,7 @@
 		
 		case SmfMusicPostEvents:
 			{
+			qDebug()<<"Serializing to : bool";
 			bool value;
 			if( QVariant::Bool == aResult->type() )
 				value = aResult->toBool();
@@ -1073,6 +1351,7 @@
 		case SmfMusicGetTracks:
 		case SmfMusicGetTrackInfo:
 			{
+			qDebug()<<"Serializing to : QList<SmfTrackInfo>";
 			QList<SmfTrackInfo> trackList;
 			if( aResult->canConvert<SmfTrackInfoList>() )
 				trackList = aResult->value<SmfTrackInfoList>();
@@ -1083,6 +1362,7 @@
 			
 		case SmfMusicGetStores:
 			{
+			qDebug()<<"Serializing to : QList<SmfProvider>";
 			QList<SmfProvider> storeList;
 			if( aResult->canConvert<SmfProviderList>() )
 				storeList = aResult->value<SmfProviderList>();
@@ -1092,6 +1372,7 @@
 			
 		case SmfMusicPostCurrentPlaying:
 			{
+			qDebug()<<"Serializing to : bool";
 			bool value;
 			if( QVariant::Bool == aResult->type() )
 				value = aResult->toBool();
@@ -1103,6 +1384,7 @@
 		// FOR MUSIC - SERVICE
 		case SmfMusicGetUserInfo:
 			{
+			qDebug()<<"Serializing to : SmfMusicProfile";
 			SmfMusicProfile user;
 			if(aResult->canConvert<SmfMusicProfile>())
 				user = aResult->value<SmfMusicProfile>();
@@ -1112,6 +1394,7 @@
 			
 		case SmfMusicSearchUser:
 			{
+			qDebug()<<"Serializing to : QList<SmfMusicProfile>";
 			QList<SmfMusicProfile> userList;
 			if( aResult->canConvert<SmfMusicProfileList>() )
 				userList = aResult->value<SmfMusicProfileList>();
@@ -1123,6 +1406,7 @@
 		case SmfMusicGetPlaylists:
 		case SmfMusicGetPlaylistsOfUser:
 			{
+			qDebug()<<"Serializing to : QList<SmfPlaylist>";
 			QList<SmfPlaylist> playlists;
 			if( aResult->canConvert<SmfPlaylistList>() )
 				playlists = aResult->value<SmfPlaylistList>();
@@ -1133,6 +1417,7 @@
 		case SmfMusicAddToPlaylist:
 		case SmfMusicPostCurrentPlayingPlaylist:
 			{
+			qDebug()<<"Serializing to : bool";
 			bool value;
 			if( QVariant::Bool == aResult->type() )
 				value = aResult->toBool();
@@ -1143,6 +1428,7 @@
 			// FOR PICTURES - GALLERY SERVICES
 		case SmfPictureGetPictures:
 			{
+			qDebug()<<"Serializing to : QList<SmfPicture>";
 			QList<SmfPicture> picList;
 			if( aResult->canConvert<SmfPictureList>() )
 				picList = aResult->value<SmfPictureList>();
@@ -1152,6 +1438,7 @@
 			
 		case SmfPictureDescription:
 			{
+			qDebug()<<"Serializing to : QString";
 			QString str;
 			if( QVariant::String == aResult->type() )
 				str = aResult->toString();
@@ -1163,6 +1450,7 @@
 		case SmfPictureMultiUpload:
 		case SmfPicturePostComment:
 			{
+			qDebug()<<"Serializing to : bool";
 			bool value;
 			if( QVariant::Bool == aResult->type() )
 				value = aResult->toBool();
@@ -1172,7 +1460,222 @@
 			
 		default:
 			// Unknown service, saved data in Plugin manager is corrupted
-			SmfPluginManager::getInstance()->server()->writeLog("No operation type found!!!");
+			qDebug()<<"No operation type found!!!";
+		}
+	}
+
+
+/**
+ * Method to convert SmfPluginError Error to the type SmfError 
+ * @param aPluginError The Error code returned by the plugin
+ * @param aSMFError [out] The Smf specific common error code
+ */
+void SmfPluginManagerUtil::convertPluginErrorType( 
+		const SmfPluginError &aPluginError,  
+		SmfError &aSMFError )
+	{
+	qDebug()<<"Converting Plugin error code to SmfError";
+	switch(aPluginError)
+		{
+		case SmfPluginErrNone:
+			aSMFError = SmfNoError;
+			break;
+			
+		case SmfPluginErrTooManyRequest:
+			aSMFError = SmfPluginErrorTooManyRequest;
+			break;
+			
+		case SmfPluginErrRequestQuotaExceeded:
+			aSMFError = SmfPluginErrorRequestQuotaExceeded;
+			break;
+			
+		case SmfPluginErrInvalidRequest:
+			aSMFError = SmfPluginErrorInvalidRequest;
+			break;
+			
+		case SmfPluginErrUserNotLoggedIn:
+			aSMFError = SmfPluginErrorUserNotLoggedIn;
+			break;
+			
+		case SmfPluginErrAuthenticationExpired:
+			aSMFError = SmfPluginErrorAuthenticationExpired;
+			break;
+			
+		case SmfPluginErrPermissionDenied:
+			aSMFError = SmfPluginErrorPermissionDenied;
+			break;
+			
+		case SmfPluginErrInvalidApplication:
+			aSMFError = SmfPluginErrorInvalidApplication;
+			break;
+			
+		case SmfPluginErrServiceUnavailable:
+			aSMFError = SmfPluginErrorServiceUnavailable;
+			break;
+			
+		case SmfPluginErrServiceTemporaryUnavailable:
+			aSMFError = SmfPluginErrorServiceTemporaryUnavailable;
+			break;
+			
+		case SmfPluginErrFormatNotSupported:
+			aSMFError = SmfPluginErrorFormatNotSupported;
+			break;
+			
+		case SmfPluginErrDataSizeExceeded:
+			aSMFError = SmfPluginErrorDataSizeExceeded;
+			break;
+			
+		case SmfPluginErrServiceNotSupported:
+			aSMFError = SmfPMPluginUnknownPluginService;
+			break;
+			
+		case SmfPluginErrInvalidArguments:
+			aSMFError = SmfPluginErrorInvalidArguments;
+			break;
+			
+		case SmfPluginErrRequestNotCreated:
+			aSMFError = SmfPMPluginRequestCreationFailed;
+			break;
+			
+		case SmfPluginErrParsingFailed:
+			aSMFError = SmfPluginErrorParsingFailed;
+			break;
+			
+		case SmfPluginErrNetworkError:
+			aSMFError = SmfPluginErrorNetworkError;
+			break;
+			
+		case SmfPluginErrCancelComplete:
+			aSMFError = SmfPluginErrorCancelComplete;
+			break;
+			
+		default:
+			aSMFError = SmfUnknownError;
 		}
 	}
 
+/**
+ * Method to convert SmfTransportResult Error to the type SmfError 
+ * @param aTMError The Error code returned by the TM
+ * @param aSMFError [out] The Smf specific common error code
+ */
+void SmfPluginManagerUtil::convertNetworkErrorType( 
+		const SmfTransportResult &aTMError,  
+		SmfError &aSMFError )
+	{
+	qDebug()<<"Converting Transport error code to SmfError";
+	switch(aTMError)
+		{
+		case SmfTransportOpNoError:
+			aSMFError = SmfNoError;
+			break;
+			
+		case SmfTransportOpConnectionRefusedError:
+			aSMFError = SmfTMConnectionRefusedError;
+			break;
+			
+		case SmfTransportOpRemoteHostClosedError:
+			aSMFError = SmfTMRemoteHostClosedError;
+			break;
+			
+		case SmfTransportOpHostNotFoundError:
+			aSMFError = SmfTMHostNotFoundError;
+			break;
+			
+		case SmfTransportOpTimeoutError:
+			aSMFError = SmfTMTimeoutError;
+			break;
+			
+		case SmfTransportOpOperationCanceledError:
+			aSMFError = SmfTMOperationCanceledError;
+			break;
+			
+		case SmfTransportOpSslHandshakeFailedError:
+			aSMFError = SmfTMSslHandshakeFailedError;
+			break;
+			
+		case SmfTransportOpProxyConnectionRefusedError:
+			aSMFError = SmfTMProxyConnectionRefusedError;
+			break;
+			
+		case SmfTransportOpProxyConnectionClosedError:
+			aSMFError = SmfTMProxyConnectionClosedError;
+			break;
+			
+		case SmfTransportOpProxyNotFoundError:
+			aSMFError = SmfTMProxyNotFoundError;
+			break;
+			
+		case SmfTransportOpProxyTimeoutError:
+			aSMFError = SmfTMProxyTimeoutError;
+			break;
+			
+		case SmfTransportOpProxyAuthenticationRequiredError:
+			aSMFError = SmfTMProxyAuthenticationRequiredError;
+			break;
+			
+		case SmfTransportOpContentAccessDenied:
+			aSMFError = SmfTMContentAccessDenied;
+			break;
+			
+		case SmfTransportOpContentOperationNotPermittedError:
+			aSMFError = SmfTMContentOperationNotPermittedError;
+			break;
+			
+		case SmfTransportOpContentNotFoundError:
+			aSMFError = SmfTMContentNotFoundError;
+			break;
+			
+		case SmfTransportOpAuthenticationRequiredError:
+			aSMFError = SmfTMAuthenticationRequiredError;
+			break;
+			
+		case SmfTransportOpContentReSendError:
+			aSMFError = SmfTMContentReSendError;
+			break;
+			
+		case SmfTransportOpProtocolUnknownError:
+			aSMFError = SmfTMProtocolUnknownError;
+			break;
+			
+		case SmfTransportOpProtocolInvalidOperationError:
+			aSMFError = SmfTMProtocolInvalidOperationError;
+			break;
+			
+		case SmfTransportOpUnknownNetworkError:
+			aSMFError = SmfTMUnknownNetworkError;
+			break;
+			
+		case SmfTransportOpUnknownProxyError:
+			aSMFError = SmfTMUnknownProxyError;
+			break;
+			
+		case SmfTransportOpUnknownContentError:
+			aSMFError = SmfTMUnknownContentError;
+			break;
+			
+		case SmfTransportOpProtocolFailure:
+			aSMFError = SmfTMProtocolFailure;
+			break;
+			
+		case SmfTransportOpUnknownError:
+			aSMFError = SmfTMUnknownError;
+			break;
+			
+		case SmfTransportOpIAPChanged:
+			aSMFError = SmfTMIAPChanged;
+			break;
+			
+		case SmfTransportOpCancelled:
+			aSMFError = SmfTMCancelled;
+			break;
+			
+		case SmfTransportOpUnsupportedContentEncodingFormat:
+			aSMFError = SmfTMUnsupportedContentEncodingFormat;
+			break;
+			
+		default:
+			aSMFError = SmfUnknownError;
+		}
+	}
+