[tracker/tracker-store] plugins: Remove the indexer part of the push modules



commit f11e199cf752e5fe428ff4179e07d783a5bc02ec
Author: Philip Van Hoof <philip codeminded be>
Date:   Mon Apr 27 12:42:46 2009 +0200

    plugins: Remove the indexer part of the push modules
    
    After the reachitecture the indexer wont do the writes, the daemon wil.
    This means that we must not proxy the request to the indexer anymore,
    instead will the daemon perform the write immediately itself.
    
    Applied several ontology fixes to the KMail and Evolution push modules
---
 src/plugins/evolution/Makefile.am                  |   23 -
 src/plugins/evolution/tracker-evolution-indexer.c  |  681 --------------------
 src/plugins/evolution/tracker-evolution-indexer.h  |  101 ---
 .../evolution/tracker-evolution-registrar.c        |  516 +++++++++++++---
 src/plugins/kmail/Makefile.am                      |   23 -
 src/plugins/kmail/tracker-kmail-indexer.c          |  477 --------------
 src/plugins/kmail/tracker-kmail-indexer.h          |  101 ---
 src/plugins/kmail/tracker-kmail-registrar.c        |  297 ++++++---
 src/plugins/rss/Makefile.am                        |   23 -
 src/plugins/rss/tracker-rss-indexer.c              |  347 ----------
 src/plugins/rss/tracker-rss-indexer.h              |  101 ---
 src/plugins/rss/tracker-rss-registrar.c            |  203 ++++---
 12 files changed, 764 insertions(+), 2129 deletions(-)

diff --git a/src/plugins/evolution/Makefile.am b/src/plugins/evolution/Makefile.am
index dbc9209..69f3bb8 100644
--- a/src/plugins/evolution/Makefile.am
+++ b/src/plugins/evolution/Makefile.am
@@ -29,16 +29,8 @@ eplugin_LTLIBRARIES = liborg-freedesktop-Tracker-evolution-plugin.la
 module_flags = -module -avoid-version -no-undefined
 
 pushd_modulesdir = $(libdir)/tracker-$(TRACKER_API_VERSION)/push-modules/daemon
-pushi_modulesdir = $(libdir)/tracker-$(TRACKER_API_VERSION)/push-modules/indexer
 
 pushd_modules_LTLIBRARIES = libtracker-module-evolution-daemon-module.la
-pushi_modules_LTLIBRARIES = libtracker-module-evolution-indexer-module.la
-
-libtracker_module_evolution_indexer_module_la_SOURCES =			\
-	tracker-evolution-indexer.c					\
-	tracker-evolution-indexer.h					\
-	tracker-evolution-registrar-glue.h				\
-	tracker-evolution-common.h
 
 libtracker_module_evolution_daemon_module_la_SOURCES =	 		\
 	tracker-evolution-registrar.c					\
@@ -60,21 +52,6 @@ libtracker_module_evolution_daemon_module_la_LIBADD = 			\
 	$(RAPTOR_LIBS)							\
 	$(GCOV_LIBS)
 
-libtracker_module_evolution_indexer_module_la_LDFLAGS = $(module_flags)
-
-libtracker_module_evolution_indexer_module_la_LIBADD = 			\
-	$(top_builddir)/src/libtracker-data/libtracker-data.la          \
-	$(top_builddir)/src/libtracker-db/libtracker-db.la              \
-	$(top_builddir)/src/libtracker-common/libtracker-common.la      \
-	$(GMODULE_LIBS)							\
-	$(DBUS_LIBS)                                                    \
-	$(GTHREAD_LIBS)                                                 \
-	$(GIO_LIBS)                                                     \
-	$(GLIB2_LIBS)                                                   \
-	$(RAPTOR_LIBS)							\
-	$(GMIME_LIBS)							\
-	$(GCOV_LIBS)
-
 liborg_freedesktop_Tracker_evolution_plugin_la_SOURCES = 		\
 	tracker-evolution-plugin.c 			 		\
 	tracker-evolution-plugin.h					\
diff --git a/src/plugins/evolution/tracker-evolution-indexer.c b/src/plugins/evolution/tracker-evolution-indexer.c
deleted file mode 100644
index 213d5c1..0000000
--- a/src/plugins/evolution/tracker-evolution-indexer.c
+++ /dev/null
@@ -1,681 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2008, Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
- *
- * Authors:
- *  Philip Van Hoof <philip codeminded be>
- */
-
-#include "config.h"
-
-#include <string.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <glib.h>
-#include <gio/gio.h>
-#include <glib/gstdio.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <gmime/gmime.h>
-
-#include <libtracker-common/tracker-ontology.h>
-
-#include <libtracker-data/tracker-data-manager.h>
-#include <libtracker-data/tracker-data-query.h>
-#include <libtracker-data/tracker-data-update.h>
-
-#define TRANSACTION_MAX 200
-
-#include "tracker-evolution-indexer.h"
-
-/* These defines/renames are necessary for -glue.h */
-#define tracker_evolution_registrar_set tracker_evolution_indexer_set
-#define tracker_evolution_registrar_set_many tracker_evolution_indexer_set_many
-#define tracker_evolution_registrar_unset_many tracker_evolution_indexer_unset_many
-#define tracker_evolution_registrar_unset tracker_evolution_indexer_unset
-#define tracker_evolution_registrar_cleanup tracker_evolution_indexer_cleanup
-#define dbus_glib_tracker_evolution_indexer_object_info dbus_glib_tracker_evolution_registrar_object_info
-
-#include "tracker-evolution-registrar-glue.h"
-
-/* Based on data/services/email.metadata */
-
-#define NIE_DATASOURCE 			       TRACKER_NIE_PREFIX "DataSource"
-#define NIE_DATASOURCE_P 		       TRACKER_NIE_PREFIX "dataSource"
-
-#define RDF_PREFIX	TRACKER_RDF_PREFIX
-#define NMO_PREFIX	TRACKER_NMO_PREFIX
-#define NCO_PREFIX	TRACKER_NCO_PREFIX
-#define NAO_PREFIX	TRACKER_NAO_PREFIX
-
-#define DATASOURCE_URN			       "urn:nepomuk:datasource:1cb1eb90-1241-11de-8c30-0800200c9a66"
-
-void tracker_push_module_init (TrackerConfig *config);
-void tracker_push_module_shutdown (void);
-
-G_DEFINE_TYPE (TrackerEvolutionIndexer, tracker_evolution_indexer, G_TYPE_OBJECT)
-
-/* This runs in-process of tracker-indexer */
-
-static GObject *idx_indexer = NULL;
-
-enum {
-	PROP_0,
-};
-
-void tracker_push_module_init (TrackerConfig *config);
-void tracker_push_module_shutdown (void);
-
-static void
-tracker_evolution_indexer_finalize (GObject *object)
-{
-	G_OBJECT_CLASS (tracker_evolution_indexer_parent_class)->finalize (object);
-}
-
-static void
-tracker_evolution_indexer_set_property (GObject      *object,
-					guint         prop_id,
-					const GValue *value,
-					GParamSpec   *pspec)
-{
-	switch (prop_id) {
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-tracker_evolution_indexer_get_property (GObject    *object,
-					guint       prop_id,
-					GValue     *value,
-					GParamSpec *pspec)
-{
-	switch (prop_id) {
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-tracker_evolution_indexer_class_init (TrackerEvolutionIndexerClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-	object_class->finalize = tracker_evolution_indexer_finalize;
-	object_class->set_property = tracker_evolution_indexer_set_property;
-	object_class->get_property = tracker_evolution_indexer_get_property;
-}
-
-static void
-tracker_evolution_indexer_init (TrackerEvolutionIndexer *object)
-{
-}
-
-
-#if 0
-static void
-extract_mime_parts (GMimeObject *object,
-		    gpointer     user_data)
-{
-	const gchar *message_subject = user_data;
-	gchar *subject = NULL;
-	const gchar *disposition, *filename;
-	GMimePart *part;
-
-	if (GMIME_IS_MESSAGE_PART (object)) {
-		GMimeMessage *message;
-
-		message = g_mime_message_part_get_message (GMIME_MESSAGE_PART (object));
-
-		if (message) {
-			g_mime_message_foreach_part (message, extract_mime_parts, user_data);
-			g_object_unref (message);
-		}
-
-		return;
-	} else if (GMIME_IS_MULTIPART (object)) {
-		g_mime_multipart_foreach (GMIME_MULTIPART (object), extract_mime_parts, user_data);
-		return;
-	}
-
-	part = GMIME_PART (object);
-	disposition = g_mime_part_get_content_disposition (part);
-
-	if (!disposition ||
-	    (g_strcmp0 (disposition, GMIME_DISPOSITION_ATTACHMENT) != 0 &&
-	     g_strcmp0 (disposition, GMIME_DISPOSITION_INLINE) != 0)) {
-		return;
-	}
-
-	filename = g_mime_part_get_filename (GMIME_PART (object));
-
-	if (!filename ||
-	    g_strcmp0 (filename, "signature.asc") == 0 ||
-	    g_strcmp0 (filename, "signature.pgp") == 0) {
-		return;
-	}
-
-	if (filename) {
-		GHashTable *data;
-		TrackerModuleMetadata *metadata;
-		gchar *subject;
-
-		/* This is not a path but a URI: don't use the OS's dir separator
-		 * here, use the '/'. Another option is to use '#' instead of '/'
-		 * here. This depends on how we want to format the URI and what
-		 * Evolution can cope with as URI for an attachment (I don't 
-		 * think it can cope with any attachment URI, btw). */
-
-		subject = g_strdup_printf ("%s/%s", message_subject, 
-					   filename);
-
-		tracker_data_insert_statement (subject, 
-					       "File:Path", 
-					       filename);
-
-		tracker_data_insert_statement (subject, 
-					       "File:Name", 
-					       filename);
-
-		g_free (subject);
-	}
-}
-
-static gchar *
-get_object_encoding (GMimeObject *object)
-{
-	const gchar *start_encoding, *end_encoding;
-	const gchar *content_type = NULL;
-
-	if (GMIME_IS_MESSAGE (object)) {
-		content_type = g_mime_message_get_header (GMIME_MESSAGE (object), "Content-Type");
-	} else if (GMIME_IS_PART (object)) {
-		content_type = g_mime_part_get_content_header (GMIME_PART (object), "Content-Type");
-	}
-
-	if (!content_type) {
-		return NULL;
-	}
-
-	start_encoding = strstr (content_type, "charset=");
-
-	if (!start_encoding) {
-		return NULL;
-	}
-
-	start_encoding += strlen ("charset=");
-
-	if (start_encoding[0] == '"') {
-		/* encoding is quoted */
-		start_encoding++;
-		end_encoding = strstr (start_encoding, "\"");
-	} else {
-		end_encoding = strstr (start_encoding, ";");
-	}
-
-	if (end_encoding) {
-		return g_strndup (start_encoding, end_encoding - start_encoding);
-	} else {
-		return g_strdup (start_encoding);
-	}
-}
-#endif
-
-
-static void
-get_email_and_fullname (const gchar *line, gchar **email, gchar **fullname)
-{
-	gchar *ptr = g_utf8_strchr (line, -1, '<');
-
-	if (ptr) {
-		gchar *holder;
-
-		holder = g_strdup (line);
-		ptr = g_utf8_strchr (holder, -1, '<');
-		*ptr = '\0';
-		ptr++;
-		*fullname = holder;
-		holder = ptr;
-		ptr = g_utf8_strchr (ptr, -1, '>');
-		if (ptr) {
-			*ptr = '\0';
-		}
-		*email = g_strdup (holder);
-
-	} else {
-		*email = g_strdup (line);
-		*fullname = NULL;
-	}
-}
-
-static void
-perform_set (TrackerEvolutionIndexer *object, 
-	     const gchar *subject, 
-	     const GStrv predicates, 
-	     const GStrv values)
-{
-	guint i = 0;
-
-	if (!tracker_data_query_resource_exists (DATASOURCE_URN, NULL)) {
-		tracker_data_insert_statement (DATASOURCE_URN, RDF_PREFIX "type",
-					       NIE_DATASOURCE);
-	}
-
-	tracker_data_insert_statement (subject, RDF_PREFIX "type",
-		                       NMO_PREFIX "Email");
-
-	tracker_data_insert_statement (subject, RDF_PREFIX "type",
-		                       NMO_PREFIX "MailboxDataObject");
-
-	tracker_data_insert_statement (subject, NIE_DATASOURCE_P,
-		                       DATASOURCE_URN);
-
-	while (predicates [i] != NULL && values[i] != NULL) {
-
-		/* TODO: TRACKER_EVOLUTION_PREDICATE_JUNK (!)
-		 *       TRACKER_EVOLUTION_PREDICATE_ANSWERED
-		 *       TRACKER_EVOLUTION_PREDICATE_FLAGGED
-		 *       TRACKER_EVOLUTION_PREDICATE_FORWARDED
-		 *       TRACKER_EVOLUTION_PREDICATE_DELETED (!)
-		 *       TRACKER_EVOLUTION_PREDICATE_SIZE (!) :
-		 *
-		 * I don't have predicates in Tracker's ontology for these. In
-		 * Jürg's vstore branch we are working with Nepomuk as ontology-
-		 * set. Perhaps when we merge this to that branch that we can 
-		 * improve this situation. */
-
-
-#if 0
-
-		/* Disabling this as I can't find any version of GMime-2.0 that
-		 * wont crash on any of my test E-mails. Going to ask Garnacho
-		 * to migrate to GMime-2.4 with his old Evolution support. */
-
-		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_FILE) == 0) {
-			GMimeStream *stream;
-			GMimeParser *parser;
-			GMimeMessage *message;
-			gint fd;
-			gchar *text, *orig_text, *ptr, *encoding;
-			gchar *path = g_strdup (values[i]);
-			off_t offset = 0;
-			gboolean is_html;
-
-			ptr = strstr (path, "/!");
-			if (ptr) {
-				offset = (off_t) atol (ptr+2);
-				*ptr = '\0';
-			}
-
-			fd = tracker_file_open (path, FALSE);
-
-			g_free (path);
-
-			if (fd == -1) 
-				goto cont;
-
-			stream = g_mime_stream_fs_new_with_bounds (fd, offset, -1);
-
-			if (!stream) {
-				close (fd);
-				goto cont;
-			}
-
-			parser = g_mime_parser_new_with_stream (stream);
-
-			if (!parser) {
-				g_object_unref (stream);
-				goto cont;
-			}
-
-			g_mime_parser_set_scan_from (parser, FALSE);
-
-			message = g_mime_parser_construct_message (parser);
-
-			if (!message) {
-				g_object_unref (parser);
-				g_object_unref (stream);
-				goto cont;
-			}
-
-			g_mime_message_foreach_part (message,
-						     extract_mime_parts,
-						     subject);
-
-			orig_text = g_mime_message_get_body (message, TRUE, &is_html);
-
-			if (orig_text) {
-
-				encoding = get_object_encoding (GMIME_OBJECT (message));
-
-				if (encoding) {
-					text = g_convert (text, -1, "utf8", encoding, NULL, NULL, NULL);
-					g_free (orig_text);
-				} else
-					text = orig_text;
-
-				tracker_data_insert_statement (subject, 
-							       METADATA_EMAIL_TEXT, 
-							       text);
-
-				g_free (text);
-				g_free (encoding);
-			}
-
-			g_object_unref (message);
-			g_object_unref (parser);
-			g_object_unref (stream);
-		}
-#endif
-
-		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_TAG) == 0) {
-			gchar *key, *value;
-
-			if (!values[i] || strlen (values[i]) < 1)
-				goto cont;
-
-			key = g_strdup (values[i]);
-			value = strchr (key, '=');
-
-			if (value) {
-				*value = '\0';
-				value++;
-			}
-
-			tracker_data_insert_statement (":1", RDF_PREFIX "type",
-			                               NAO_PREFIX "Property");
-
-			tracker_data_insert_statement (":1", 
-			                               NAO_PREFIX "propertyName",
-			                               key);
-
-			tracker_data_insert_statement (":1", 
-			                               NAO_PREFIX "propertyValue",
-			                               value);
-
-			tracker_data_insert_statement (subject, 
-			                               NAO_PREFIX "hasProperty", 
-			                               ":1");
-
-			g_free (key);
-		}
-
-		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_SUBJECT) == 0) {
-			tracker_data_insert_statement (subject,
-						       TRACKER_NMO_PREFIX "messageSubject", 
-						       values[i]);
-		}
-
-		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_SENT) == 0) {
-			tracker_data_insert_statement (subject,
-						       TRACKER_NMO_PREFIX "receivedDate", 
-						       values[i]);
-		}
-
-		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_FROM) == 0) {
-			gchar *email_uri, *email = NULL, *fullname = NULL;
-			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
-			get_email_and_fullname (values[i], &email, &fullname);
-			if (fullname) {
-				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
-				g_free (fullname);
-			}
-			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
-			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
-			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
-			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
-			tracker_data_insert_statement (subject, NMO_PREFIX "from", ":1");
-			g_free (email_uri);
-			g_free (email);
-		}
-
-		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_TO) == 0) {
-			gchar *email_uri, *email = NULL, *fullname = NULL;
-			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
-			get_email_and_fullname (values[i], &email, &fullname);
-			if (fullname) {
-				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
-				g_free (fullname);
-			}
-			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
-			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
-			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
-			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
-			tracker_data_insert_statement (subject, NMO_PREFIX "to", ":1");
-			g_free (email_uri);
-			g_free (email);
-		}
-
-		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_CC) == 0) {
-			gchar *email_uri, *email = NULL, *fullname = NULL;
-			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
-			get_email_and_fullname (values[i], &email, &fullname);
-			if (fullname) {
-				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
-				g_free (fullname);
-			}
-			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
-			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
-			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
-			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
-			tracker_data_insert_statement (subject, NMO_PREFIX "cc", ":1");
-			g_free (email_uri);
-			g_free (email);
-		}
-
-		cont:
-
-		i++;
-	}
-
-}
-
-static void 
-perform_unset (TrackerEvolutionIndexer *object, 
-	       const gchar *subject)
-{
-	tracker_data_delete_resource (subject); 
-}
-
-static void
-perform_cleanup (TrackerEvolutionIndexer *object)
-{
-	GError *error = NULL;
-
-	tracker_data_update_sparql ("DELETE { ?s ?p ?o } WHERE { ?s nie:dataSource <" DATASOURCE_URN "> }", &error);
-
-	if (error) {
-		g_warning ("%s", error->message);
-		g_error_free (error);
-	}
-}
-
-static void
-set_stored_last_modseq (guint last_modseq)
-{
-	tracker_data_manager_set_db_option_int ("EvolutionLastModseq", (gint) last_modseq);
-}
-
-void
-tracker_evolution_indexer_set (TrackerEvolutionIndexer *object, 
-			       const gchar *subject, 
-			       const GStrv predicates,
-			       const GStrv values,
-			       const guint modseq,
-			       DBusGMethodInvocation *context,
-			       GError *derror)
-{
-	dbus_async_return_if_fail (subject != NULL, context);
-
-	if (predicates && values) {
-
-		dbus_async_return_if_fail (g_strv_length (predicates) == 
-					   g_strv_length (values), context);
-
-		perform_set (object, subject, predicates, values);
-	}
-
-	set_stored_last_modseq (modseq);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_evolution_indexer_set_many (TrackerEvolutionIndexer *object, 
-				    const GStrv subjects, 
-				    const GPtrArray *predicates,
-				    const GPtrArray *values,
-				    const guint modseq,
-				    DBusGMethodInvocation *context,
-				    GError *derror)
-{
-	guint len;
-	guint i = 0, amount = 0;
-
-	dbus_async_return_if_fail (subjects != NULL, context);
-	dbus_async_return_if_fail (predicates != NULL, context);
-	dbus_async_return_if_fail (values != NULL, context);
-
-	len = g_strv_length (subjects);
-
-	dbus_async_return_if_fail (len == predicates->len, context);
-	dbus_async_return_if_fail (len == values->len, context);
-
-	tracker_data_begin_transaction ();
-
-	while (subjects[i] != NULL) {
-		GStrv preds = g_ptr_array_index (predicates, i);
-		GStrv vals = g_ptr_array_index (values, i);
-
-		perform_set (object, subjects[i], preds, vals);
-
-		amount++;
-		if (amount > TRANSACTION_MAX) {
-			tracker_data_commit_transaction ();
-			g_main_context_iteration (NULL, FALSE);
-			tracker_data_begin_transaction ();
-			amount = 0;
-		}
-
-		i++;
-	}
-
-	set_stored_last_modseq (modseq);
-
-	tracker_data_commit_transaction ();
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_evolution_indexer_unset_many (TrackerEvolutionIndexer *object, 
-				      const GStrv subjects, 
-				      const guint modseq,
-				      DBusGMethodInvocation *context,
-				      GError *derror)
-{
-	guint i = 0, amount = 0;
-
-	dbus_async_return_if_fail (subjects != NULL, context);
-
-	tracker_data_begin_transaction ();
-
-	while (subjects[i] != NULL) {
-
-		perform_unset (object, subjects[i]);
-
-		amount++;
-		if (amount > TRANSACTION_MAX) {
-			tracker_data_commit_transaction ();
-			g_main_context_iteration (NULL, FALSE);
-			tracker_data_begin_transaction ();
-			amount = 0;
-		}
-
-		i++;
-	}
-
-	set_stored_last_modseq (modseq);
-
-	tracker_data_commit_transaction ();
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_evolution_indexer_unset (TrackerEvolutionIndexer *object, 
-				 const gchar *subject, 
-				 const guint modseq,
-				 DBusGMethodInvocation *context,
-				 GError *derror)
-{
-	dbus_async_return_if_fail (subject != NULL, context);
-
-	perform_unset (object, subject);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_evolution_indexer_cleanup (TrackerEvolutionIndexer *object, 
-				   const guint modseq,
-				   DBusGMethodInvocation *context,
-				   GError *derror)
-{
-	perform_cleanup (object);
-
-	set_stored_last_modseq (modseq);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_push_module_init (TrackerConfig *config)
-{
-	GError *error = NULL;
-	DBusGConnection *connection;
-
-	connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
-
-	if (!error) {
-		idx_indexer = g_object_new (TRACKER_TYPE_EVOLUTION_INDEXER, NULL);
-
-		dbus_g_object_type_install_info (G_OBJECT_TYPE (idx_indexer), 
-						 &dbus_glib_tracker_evolution_indexer_object_info);
-
-		dbus_g_connection_register_g_object (connection, 
-						     TRACKER_EVOLUTION_INDEXER_PATH, 
-						     idx_indexer);
-	}
-
-	if (error) {
-		g_critical ("Can't init DBus for Evolution support: %s", error->message);
-		g_error_free (error);
-	}
-}
-
-void
-tracker_push_module_shutdown (void)
-{
-	if (idx_indexer)
-		g_object_unref (idx_indexer);
-}
diff --git a/src/plugins/evolution/tracker-evolution-indexer.h b/src/plugins/evolution/tracker-evolution-indexer.h
deleted file mode 100644
index 7e5d03f..0000000
--- a/src/plugins/evolution/tracker-evolution-indexer.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2008, Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
- *
- * Authors:
- *  Philip Van Hoof <philip codeminded be>
- */
-
-#ifndef __LIBTRACKER_EVOLUTION_H__
-#define __LIBTRACKER_EVOLUTION_H__
-
-#if !defined (TRACKER_ENABLE_INTERNALS) && !defined (TRACKER_COMPILATION)
-#error "TRACKER_ENABLE_INTERNALS not defined, this must be defined to use tracker's internal functions"
-#endif
-
-#include <glib.h>
-
-#include <libtracker-common/tracker-common.h>
-
-G_BEGIN_DECLS
-
-#if !defined (TRACKER_ENABLE_INTERNALS) && !defined (TRACKER_COMPILATION)
-#error "TRACKER_ENABLE_INTERNALS not defined, this must be defined to use tracker's internal functions"
-#endif
-
-#include <glib.h>
-#include <dbus/dbus-glib-bindings.h>
-
-#include <tracker-indexer/tracker-indexer.h>
-
-#include "tracker-evolution-common.h"
-
-G_BEGIN_DECLS
-
-#define TRACKER_TYPE_EVOLUTION_INDEXER          (tracker_evolution_indexer_get_type())
-#define TRACKER_EVOLUTION_INDEXER(o)            (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_EVOLUTION_INDEXER, TrackerEvolutionIndexer))
-#define TRACKER_EVOLUTION_INDEXER_CLASS(c)      (G_TYPE_CHECK_CLASS_CAST ((c), TRACKER_TYPE_EVOLUTION_INDEXER, TrackerEvolutionIndexerClass))
-#define TRACKER_EVOLUTION_INDEXER_GET_CLASS(o)  (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_EVOLUTION_INDEXER, TrackerEvolutionIndexerClass))
-
-G_BEGIN_DECLS
-
-typedef struct TrackerEvolutionIndexer TrackerEvolutionIndexer;
-typedef struct TrackerEvolutionIndexerClass TrackerEvolutionIndexerClass;
-
-struct TrackerEvolutionIndexer {
-	GObject parent;
-};
-
-struct TrackerEvolutionIndexerClass {
-	GObjectClass parent;
-};
-
-GType  tracker_evolution_indexer_get_type   (void);
-
-void  tracker_evolution_indexer_set         (TrackerEvolutionIndexer *object, 
-					     const gchar *subject, 
-					     const GStrv predicates,
-					     const GStrv values,
-					     const guint modseq,
-					     DBusGMethodInvocation *context,
-					     GError *derror);
-void  tracker_evolution_indexer_set_many    (TrackerEvolutionIndexer *object, 
-					     const GStrv subjects, 
-					     const GPtrArray *predicates,
-					     const GPtrArray *values,
-					     const guint modseq,
-					     DBusGMethodInvocation *context,
-					     GError *derror);
-void  tracker_evolution_indexer_unset_many  (TrackerEvolutionIndexer *object, 
-					     const GStrv subjects, 
-					     const guint modseq,
-					     DBusGMethodInvocation *context,
-					     GError *derror);
-void  tracker_evolution_indexer_unset       (TrackerEvolutionIndexer *object, 
-					     const gchar *subject, 
-					     const guint modseq,
-					     DBusGMethodInvocation *context,
-					     GError *derror);
-void  tracker_evolution_indexer_cleanup     (TrackerEvolutionIndexer *object, 
-					     const guint modseq,
-					     DBusGMethodInvocation *context,
-					     GError *derror);
-
-G_END_DECLS
-
-#endif /* __LIBTRACKER_EVOLUTION_H__ */
diff --git a/src/plugins/evolution/tracker-evolution-registrar.c b/src/plugins/evolution/tracker-evolution-registrar.c
index 4d36b55..5cf013c 100644
--- a/src/plugins/evolution/tracker-evolution-registrar.c
+++ b/src/plugins/evolution/tracker-evolution-registrar.c
@@ -23,11 +23,15 @@
 
 #include "config.h"
 
+#include <string.h>
+
 #include <glib-object.h>
 #include <dbus/dbus-glib-bindings.h>
 
 #include <libtracker-data/tracker-data-update.h>
 #include <libtracker-data/tracker-data-manager.h>
+#include <libtracker-data/tracker-data-query.h>
+#include <libtracker-common/tracker-ontology.h>
 
 #include <trackerd/tracker-push-registrar.h>
 
@@ -41,6 +45,17 @@
 #define TRACKER_TYPE_EVOLUTION_PUSH_REGISTRAR    (tracker_evolution_push_registrar_get_type ())
 #define TRACKER_EVOLUTION_PUSH_REGISTRAR(module) (G_TYPE_CHECK_INSTANCE_CAST ((module), TRACKER_TYPE_EVOLUTION_PUSH_REGISTRAR, TrackerEvolutionPushRegistrar))
 
+
+#define NIE_DATASOURCE 			       TRACKER_NIE_PREFIX "DataSource"
+#define NIE_DATASOURCE_P 		       TRACKER_NIE_PREFIX "dataSource"
+
+#define RDF_PREFIX	TRACKER_RDF_PREFIX
+#define NMO_PREFIX	TRACKER_NMO_PREFIX
+#define NCO_PREFIX	TRACKER_NCO_PREFIX
+#define NAO_PREFIX	TRACKER_NAO_PREFIX
+
+#define DATASOURCE_URN			       "urn:nepomuk:datasource:1cb1eb90-1241-11de-8c30-0800200c9a66"
+
 typedef struct TrackerEvolutionPushRegistrar TrackerEvolutionPushRegistrar;
 typedef struct TrackerEvolutionPushRegistrarClass TrackerEvolutionPushRegistrarClass;
 
@@ -54,13 +69,11 @@ struct TrackerEvolutionPushRegistrarClass {
 
 
 typedef struct {
-	DBusGProxy *idx_proxy;
-	DBusGConnection *connection;
+	gpointer dummy;
 } TrackerEvolutionRegistrarPrivate;
 
 enum {
 	PROP_0,
-	PROP_CONNECTION
 };
 
 static GType tracker_evolution_push_registrar_get_type (void) G_GNUC_CONST;
@@ -68,34 +81,12 @@ static GType tracker_evolution_push_registrar_get_type (void) G_GNUC_CONST;
 G_DEFINE_TYPE (TrackerEvolutionRegistrar, tracker_evolution_registrar, G_TYPE_OBJECT)
 G_DEFINE_TYPE (TrackerEvolutionPushRegistrar, tracker_evolution_push_registrar, TRACKER_TYPE_PUSH_REGISTRAR);
 
-/* This runs in-process of trackerd. It simply proxies everything to the indexer
- * who wont always be running. Which is why this is needed (trackerd is always
- * running, so it's more suitable to respond to Evolution's requests). */
-
 static void
 tracker_evolution_registrar_finalize (GObject *object)
 {
-	TrackerEvolutionRegistrarPrivate *priv = TRACKER_EVOLUTION_REGISTRAR_GET_PRIVATE (object);
-
-	if (priv->idx_proxy)
-		g_object_unref (priv->idx_proxy);
-
 	G_OBJECT_CLASS (tracker_evolution_registrar_parent_class)->finalize (object);
 }
 
-static void 
-tracker_evolution_registrar_set_connection (TrackerEvolutionRegistrar *object, 
-					    DBusGConnection *connection)
-{
-	TrackerEvolutionRegistrarPrivate *priv = TRACKER_EVOLUTION_REGISTRAR_GET_PRIVATE (object);
-
-	priv->connection = connection; /* weak */
-
-	priv->idx_proxy = dbus_g_proxy_new_for_name (priv->connection, 
-						     "org.freedesktop.Tracker.Indexer",
-						     TRACKER_EVOLUTION_INDEXER_PATH,
-						     TRACKER_EVOLUTION_REGISTRAR_INTERFACE);
-}
 
 static void
 tracker_evolution_registrar_set_property (GObject      *object,
@@ -104,10 +95,6 @@ tracker_evolution_registrar_set_property (GObject      *object,
 					  GParamSpec   *pspec)
 {
 	switch (prop_id) {
-	case PROP_CONNECTION:
-		tracker_evolution_registrar_set_connection (TRACKER_EVOLUTION_REGISTRAR (object),
-							    g_value_get_pointer (value));
-		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	}
@@ -119,12 +106,7 @@ tracker_evolution_registrar_get_property (GObject    *object,
 					  GValue     *value,
 					  GParamSpec *pspec)
 {
-	TrackerEvolutionRegistrarPrivate *priv = TRACKER_EVOLUTION_REGISTRAR_GET_PRIVATE (object);
-
 	switch (prop_id) {
-	case PROP_CONNECTION:
-		g_value_set_pointer (value, priv->connection);
-		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	}
@@ -139,14 +121,6 @@ tracker_evolution_registrar_class_init (TrackerEvolutionRegistrarClass *klass)
 	object_class->set_property = tracker_evolution_registrar_set_property;
 	object_class->get_property = tracker_evolution_registrar_get_property;
 
-	g_object_class_install_property (object_class,
-					 PROP_CONNECTION,
-					 g_param_spec_pointer ("connection",
-							       "DBus connection",
-							       "DBus connection",
-							       G_PARAM_READWRITE |
-							       G_PARAM_CONSTRUCT));
-
 	g_type_class_add_private (object_class, sizeof (TrackerEvolutionRegistrarPrivate));
 }
 
@@ -155,6 +129,395 @@ tracker_evolution_registrar_init (TrackerEvolutionRegistrar *object)
 {
 }
 
+
+
+
+
+#if 0
+static void
+extract_mime_parts (GMimeObject *object,
+		    gpointer     user_data)
+{
+	const gchar *message_subject = user_data;
+	gchar *subject = NULL;
+	const gchar *disposition, *filename;
+	GMimePart *part;
+
+	if (GMIME_IS_MESSAGE_PART (object)) {
+		GMimeMessage *message;
+
+		message = g_mime_message_part_get_message (GMIME_MESSAGE_PART (object));
+
+		if (message) {
+			g_mime_message_foreach_part (message, extract_mime_parts, user_data);
+			g_object_unref (message);
+		}
+
+		return;
+	} else if (GMIME_IS_MULTIPART (object)) {
+		g_mime_multipart_foreach (GMIME_MULTIPART (object), extract_mime_parts, user_data);
+		return;
+	}
+
+	part = GMIME_PART (object);
+	disposition = g_mime_part_get_content_disposition (part);
+
+	if (!disposition ||
+	    (g_strcmp0 (disposition, GMIME_DISPOSITION_ATTACHMENT) != 0 &&
+	     g_strcmp0 (disposition, GMIME_DISPOSITION_INLINE) != 0)) {
+		return;
+	}
+
+	filename = g_mime_part_get_filename (GMIME_PART (object));
+
+	if (!filename ||
+	    g_strcmp0 (filename, "signature.asc") == 0 ||
+	    g_strcmp0 (filename, "signature.pgp") == 0) {
+		return;
+	}
+
+	if (filename) {
+		GHashTable *data;
+		TrackerModuleMetadata *metadata;
+		gchar *subject;
+
+		/* This is not a path but a URI: don't use the OS's dir separator
+		 * here, use the '/'. Another option is to use '#' instead of '/'
+		 * here. This depends on how we want to format the URI and what
+		 * Evolution can cope with as URI for an attachment (I don't 
+		 * think it can cope with any attachment URI, btw). */
+
+		subject = g_strdup_printf ("%s/%s", message_subject, 
+					   filename);
+
+		tracker_data_insert_statement (subject, 
+					       "File:Path", 
+					       filename);
+
+		tracker_data_insert_statement (subject, 
+					       "File:Name", 
+					       filename);
+
+		g_free (subject);
+	}
+}
+
+static gchar *
+get_object_encoding (GMimeObject *object)
+{
+	const gchar *start_encoding, *end_encoding;
+	const gchar *content_type = NULL;
+
+	if (GMIME_IS_MESSAGE (object)) {
+		content_type = g_mime_message_get_header (GMIME_MESSAGE (object), "Content-Type");
+	} else if (GMIME_IS_PART (object)) {
+		content_type = g_mime_part_get_content_header (GMIME_PART (object), "Content-Type");
+	}
+
+	if (!content_type) {
+		return NULL;
+	}
+
+	start_encoding = strstr (content_type, "charset=");
+
+	if (!start_encoding) {
+		return NULL;
+	}
+
+	start_encoding += strlen ("charset=");
+
+	if (start_encoding[0] == '"') {
+		/* encoding is quoted */
+		start_encoding++;
+		end_encoding = strstr (start_encoding, "\"");
+	} else {
+		end_encoding = strstr (start_encoding, ";");
+	}
+
+	if (end_encoding) {
+		return g_strndup (start_encoding, end_encoding - start_encoding);
+	} else {
+		return g_strdup (start_encoding);
+	}
+}
+#endif
+
+
+static void
+get_email_and_fullname (const gchar *line, gchar **email, gchar **fullname)
+{
+	gchar *ptr = g_utf8_strchr (line, -1, '<');
+
+	if (ptr) {
+		gchar *holder;
+
+		holder = g_strdup (line);
+		ptr = g_utf8_strchr (holder, -1, '<');
+		*ptr = '\0';
+		ptr++;
+		*fullname = holder;
+		holder = ptr;
+		ptr = g_utf8_strchr (ptr, -1, '>');
+		if (ptr) {
+			*ptr = '\0';
+		}
+		*email = g_strdup (holder);
+
+	} else {
+		*email = g_strdup (line);
+		*fullname = NULL;
+	}
+}
+
+static void
+perform_set (TrackerEvolutionRegistrar *object, 
+	     const gchar *subject, 
+	     const GStrv predicates, 
+	     const GStrv values)
+{
+	guint i = 0;
+
+	if (!tracker_data_query_resource_exists (DATASOURCE_URN, NULL, NULL)) {
+		tracker_data_insert_statement (DATASOURCE_URN, RDF_PREFIX "type",
+					       NIE_DATASOURCE);
+	}
+
+	tracker_data_insert_statement (subject, RDF_PREFIX "type",
+		                       NMO_PREFIX "Email");
+
+	tracker_data_insert_statement (subject, RDF_PREFIX "type",
+		                       NMO_PREFIX "MailboxDataObject");
+
+	tracker_data_insert_statement (subject, NIE_DATASOURCE_P,
+		                       DATASOURCE_URN);
+
+	while (predicates [i] != NULL && values[i] != NULL) {
+
+		/* TODO: TRACKER_EVOLUTION_PREDICATE_JUNK (!)
+		 *       TRACKER_EVOLUTION_PREDICATE_ANSWERED
+		 *       TRACKER_EVOLUTION_PREDICATE_FLAGGED
+		 *       TRACKER_EVOLUTION_PREDICATE_FORWARDED
+		 *       TRACKER_EVOLUTION_PREDICATE_DELETED (!)
+		 *       TRACKER_EVOLUTION_PREDICATE_SIZE (!) :
+		 *
+		 * I don't have predicates in Tracker's ontology for these. In
+		 * Jürg's vstore branch we are working with Nepomuk as ontology-
+		 * set. Perhaps when we merge this to that branch that we can 
+		 * improve this situation. */
+
+
+#if 0
+
+		/* Disabling this as I can't find any version of GMime-2.0 that
+		 * wont crash on any of my test E-mails. Going to ask Garnacho
+		 * to migrate to GMime-2.4 with his old Evolution support. */
+
+		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_FILE) == 0) {
+			GMimeStream *stream;
+			GMimeParser *parser;
+			GMimeMessage *message;
+			gint fd;
+			gchar *text, *orig_text, *ptr, *encoding;
+			gchar *path = g_strdup (values[i]);
+			off_t offset = 0;
+			gboolean is_html;
+
+			ptr = strstr (path, "/!");
+			if (ptr) {
+				offset = (off_t) atol (ptr+2);
+				*ptr = '\0';
+			}
+
+			fd = tracker_file_open (path, FALSE);
+
+			g_free (path);
+
+			if (fd == -1) 
+				goto cont;
+
+			stream = g_mime_stream_fs_new_with_bounds (fd, offset, -1);
+
+			if (!stream) {
+				close (fd);
+				goto cont;
+			}
+
+			parser = g_mime_parser_new_with_stream (stream);
+
+			if (!parser) {
+				g_object_unref (stream);
+				goto cont;
+			}
+
+			g_mime_parser_set_scan_from (parser, FALSE);
+
+			message = g_mime_parser_construct_message (parser);
+
+			if (!message) {
+				g_object_unref (parser);
+				g_object_unref (stream);
+				goto cont;
+			}
+
+			g_mime_message_foreach_part (message,
+						     extract_mime_parts,
+						     subject);
+
+			orig_text = g_mime_message_get_body (message, TRUE, &is_html);
+
+			if (orig_text) {
+
+				encoding = get_object_encoding (GMIME_OBJECT (message));
+
+				if (encoding) {
+					text = g_convert (text, -1, "utf8", encoding, NULL, NULL, NULL);
+					g_free (orig_text);
+				} else
+					text = orig_text;
+
+				tracker_data_insert_statement (subject, 
+							       METADATA_EMAIL_TEXT, 
+							       text);
+
+				g_free (text);
+				g_free (encoding);
+			}
+
+			g_object_unref (message);
+			g_object_unref (parser);
+			g_object_unref (stream);
+		}
+#endif
+
+		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_TAG) == 0) {
+			gchar *key, *value;
+
+			if (!values[i] || strlen (values[i]) < 1)
+				goto cont;
+
+			key = g_strdup (values[i]);
+			value = strchr (key, '=');
+
+			if (value) {
+				*value = '\0';
+				value++;
+			}
+
+			tracker_data_insert_statement (":1", RDF_PREFIX "type",
+			                               NAO_PREFIX "Property");
+
+			tracker_data_insert_statement (":1", 
+			                               NAO_PREFIX "propertyName",
+			                               key);
+
+			tracker_data_insert_statement (":1", 
+			                               NAO_PREFIX "propertyValue",
+			                               value);
+
+			tracker_data_insert_statement (subject, 
+			                               NAO_PREFIX "hasProperty", 
+			                               ":1");
+
+			g_free (key);
+		}
+
+		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_SUBJECT) == 0) {
+			tracker_data_insert_statement (subject,
+						       TRACKER_NMO_PREFIX "messageSubject", 
+						       values[i]);
+		}
+
+		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_SENT) == 0) {
+			tracker_data_insert_statement (subject,
+						       TRACKER_NMO_PREFIX "receivedDate", 
+						       values[i]);
+		}
+
+		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_FROM) == 0) {
+			gchar *email_uri, *email = NULL, *fullname = NULL;
+			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
+			get_email_and_fullname (values[i], &email, &fullname);
+			if (fullname) {
+				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
+				g_free (fullname);
+			}
+			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
+			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
+			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
+			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
+			tracker_data_insert_statement (subject, NMO_PREFIX "from", ":1");
+			g_free (email_uri);
+			g_free (email);
+		}
+
+		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_TO) == 0) {
+			gchar *email_uri, *email = NULL, *fullname = NULL;
+			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
+			get_email_and_fullname (values[i], &email, &fullname);
+			if (fullname) {
+				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
+				g_free (fullname);
+			}
+			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
+			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
+			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
+			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
+			tracker_data_insert_statement (subject, NMO_PREFIX "to", ":1");
+			g_free (email_uri);
+			g_free (email);
+		}
+
+		if (g_strcmp0 (predicates[i], TRACKER_EVOLUTION_PREDICATE_CC) == 0) {
+			gchar *email_uri, *email = NULL, *fullname = NULL;
+			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
+			get_email_and_fullname (values[i], &email, &fullname);
+			if (fullname) {
+				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
+				g_free (fullname);
+			}
+			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
+			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
+			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
+			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
+			tracker_data_insert_statement (subject, NMO_PREFIX "cc", ":1");
+			g_free (email_uri);
+			g_free (email);
+		}
+
+		cont:
+
+		i++;
+	}
+
+}
+
+static void 
+perform_unset (TrackerEvolutionRegistrar *object, 
+	       const gchar *subject)
+{
+	tracker_data_delete_resource (subject); 
+}
+
+static void
+perform_cleanup (TrackerEvolutionRegistrar *object)
+{
+	GError *error = NULL;
+
+	tracker_data_update_sparql ("DELETE { ?s ?p ?o } WHERE { ?s nie:dataSource <" DATASOURCE_URN "> }", &error);
+
+	if (error) {
+		g_warning ("%s", error->message);
+		g_error_free (error);
+	}
+}
+
+static void
+set_stored_last_modseq (guint last_modseq)
+{
+	tracker_data_manager_set_db_option_int ("EvolutionLastModseq", (gint) last_modseq);
+}
+
+
 void
 tracker_evolution_registrar_set (TrackerEvolutionRegistrar *object, 
 				 const gchar *subject, 
@@ -164,8 +527,6 @@ tracker_evolution_registrar_set (TrackerEvolutionRegistrar *object,
 				 DBusGMethodInvocation *context,
 				 GError *derror)
 {
-	TrackerEvolutionRegistrarPrivate *priv = TRACKER_EVOLUTION_REGISTRAR_GET_PRIVATE (object);
-
 	dbus_async_return_if_fail (subject != NULL, context);
 
 	if (predicates && values) {
@@ -173,16 +534,11 @@ tracker_evolution_registrar_set (TrackerEvolutionRegistrar *object,
 		dbus_async_return_if_fail (g_strv_length (predicates) == 
 					   g_strv_length (values), context);
 
-		dbus_g_proxy_call_no_reply (priv->idx_proxy,
-					    "Set",
-					    G_TYPE_STRING, subject,
-					    G_TYPE_STRV, predicates,
-					    G_TYPE_STRV, values,
-					    G_TYPE_UINT, modseq,
-					    G_TYPE_INVALID, 
-					    G_TYPE_INVALID);
+		perform_set (object, subject, predicates, values);
 	}
 
+	set_stored_last_modseq (modseq);
+
 	dbus_g_method_return (context);
 }
 
@@ -195,8 +551,8 @@ tracker_evolution_registrar_set_many (TrackerEvolutionRegistrar *object,
 				      DBusGMethodInvocation *context,
 				      GError *derror)
 {
-	TrackerEvolutionRegistrarPrivate *priv = TRACKER_EVOLUTION_REGISTRAR_GET_PRIVATE (object);
 	guint len;
+	guint i = 0;
 
 	dbus_async_return_if_fail (subjects != NULL, context);
 	dbus_async_return_if_fail (predicates != NULL, context);
@@ -207,14 +563,16 @@ tracker_evolution_registrar_set_many (TrackerEvolutionRegistrar *object,
 	dbus_async_return_if_fail (len == predicates->len, context);
 	dbus_async_return_if_fail (len == values->len, context);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "SetMany",
-				    G_TYPE_STRV, subjects,
-				    TRACKER_TYPE_G_STRV_ARRAY, predicates,
-				    TRACKER_TYPE_G_STRV_ARRAY, values,
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	while (subjects[i] != NULL) {
+		GStrv preds = g_ptr_array_index (predicates, i);
+		GStrv vals = g_ptr_array_index (values, i);
+
+		perform_set (object, subjects[i], preds, vals);
+
+		i++;
+	}
+
+	set_stored_last_modseq (modseq);
 
 	dbus_g_method_return (context);
 }
@@ -226,16 +584,18 @@ tracker_evolution_registrar_unset_many (TrackerEvolutionRegistrar *object,
 					DBusGMethodInvocation *context,
 					GError *derror)
 {
-	TrackerEvolutionRegistrarPrivate *priv = TRACKER_EVOLUTION_REGISTRAR_GET_PRIVATE (object);
+	guint i = 0;
 
 	dbus_async_return_if_fail (subjects != NULL, context);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "UnsetMany",
-				    G_TYPE_STRV, subjects,
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	while (subjects[i] != NULL) {
+
+		perform_unset (object, subjects[i]);
+
+		i++;
+	}
+
+	set_stored_last_modseq (modseq);
 
 	dbus_g_method_return (context);
 }
@@ -247,16 +607,9 @@ tracker_evolution_registrar_unset (TrackerEvolutionRegistrar *object,
 				   DBusGMethodInvocation *context,
 				   GError *derror)
 {
-	TrackerEvolutionRegistrarPrivate *priv = TRACKER_EVOLUTION_REGISTRAR_GET_PRIVATE (object);
-
 	dbus_async_return_if_fail (subject != NULL, context);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "Unset",
-				    G_TYPE_STRING, subject,
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	perform_unset (object, subject);
 
 	dbus_g_method_return (context);
 }
@@ -267,13 +620,9 @@ tracker_evolution_registrar_cleanup (TrackerEvolutionRegistrar *object,
 				     DBusGMethodInvocation *context,
 				     GError *derror)
 {
-	TrackerEvolutionRegistrarPrivate *priv = TRACKER_EVOLUTION_REGISTRAR_GET_PRIVATE (object);
+	perform_cleanup (object);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "Cleanup",
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	set_stored_last_modseq (modseq);
 
 	dbus_g_method_return (context);
 }
@@ -324,8 +673,7 @@ tracker_evolution_push_registrar_enable (TrackerPushRegistrar *registrar,
 		return;
 	}
 
-	object = g_object_new (TRACKER_TYPE_EVOLUTION_REGISTRAR, 
-			       "connection", connection, NULL);
+	object = g_object_new (TRACKER_TYPE_EVOLUTION_REGISTRAR, NULL);
 
 	dbus_g_object_type_install_info (G_OBJECT_TYPE (object), 
 					 &dbus_glib_tracker_evolution_registrar_object_info);
diff --git a/src/plugins/kmail/Makefile.am b/src/plugins/kmail/Makefile.am
index 5a3e5e9..acd2a8e 100644
--- a/src/plugins/kmail/Makefile.am
+++ b/src/plugins/kmail/Makefile.am
@@ -12,16 +12,8 @@ INCLUDES = -I$(top_srcdir)/src						\
 module_flags = -module -avoid-version -no-undefined
 
 pushd_modulesdir = $(libdir)/tracker-$(TRACKER_API_VERSION)/push-modules/daemon
-pushi_modulesdir = $(libdir)/tracker-$(TRACKER_API_VERSION)/push-modules/indexer
 
 pushd_modules_LTLIBRARIES = libtracker-module_kmail-daemon-module.la
-pushi_modules_LTLIBRARIES = libtracker-module_kmail-indexer-module.la
-
-libtracker_module_kmail_indexer_module_la_SOURCES =			\
-	tracker-kmail-indexer.c						\
-	tracker-kmail-indexer.h						\
-	tracker-kmail-registrar-glue.h					\
-	tracker-kmail-common.h
 
 libtracker_module_kmail_daemon_module_la_SOURCES =		 	\
 	tracker-kmail-registrar.c					\
@@ -43,21 +35,6 @@ libtracker_module_kmail_daemon_module_la_LIBADD = 			\
 	$(RAPTOR_LIBS)							\
 	$(GCOV_LIBS)
 
-libtracker_module_kmail_indexer_module_la_LDFLAGS = $(module_flags)
-
-libtracker_module_kmail_indexer_module_la_LIBADD = 			\
-	$(top_builddir)/src/libtracker-data/libtracker-data.la          \
-	$(top_builddir)/src/libtracker-db/libtracker-db.la              \
-	$(top_builddir)/src/libtracker-common/libtracker-common.la      \
-	$(GMODULE_LIBS)							\
-	$(DBUS_LIBS)                                                    \
-	$(GTHREAD_LIBS)                                                 \
-	$(GIO_LIBS)                                                     \
-	$(GLIB2_LIBS)                                                   \
-	$(RAPTOR_LIBS)							\
-	$(GMIME_LIBS)							\
-	$(GCOV_LIBS)
-
 dbus_sources = tracker-kmail-registrar-glue.h
 
 %-glue.h: %.xml
diff --git a/src/plugins/kmail/tracker-kmail-indexer.c b/src/plugins/kmail/tracker-kmail-indexer.c
deleted file mode 100644
index 6ae0c72..0000000
--- a/src/plugins/kmail/tracker-kmail-indexer.c
+++ /dev/null
@@ -1,477 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2008, Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
- *
- * Authors:
- *  Philip Van Hoof <philip codeminded be>
- */
- 
-#include "config.h"
-
-#include <string.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <glib.h>
-#include <gio/gio.h>
-#include <glib/gstdio.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <gmime/gmime.h>
-
-#include <libtracker-common/tracker-ontology.h>
-
-#include <libtracker-data/tracker-data-manager.h>
-#include <libtracker-data/tracker-data-query.h>
-#include <libtracker-data/tracker-data-update.h>
-
-/* This is okay, we run in-process of the indexer: we can access its symbols */
-#include <tracker-indexer/tracker-module.h>
-#include <tracker-indexer/tracker-push.h>
-#include <tracker-indexer/tracker-module-metadata-private.h>
-
-#define TRANSACTION_MAX 200
-
-#include "tracker-kmail-indexer.h"
-
-void tracker_push_module_init (TrackerConfig *config);
-void tracker_push_module_shutdown (void);
-
-/* These defines/renames are necessary for -glue.h */
-#define tracker_kmail_registrar_set tracker_kmail_indexer_set
-#define tracker_kmail_registrar_set_many tracker_kmail_indexer_set_many
-#define tracker_kmail_registrar_unset_many tracker_kmail_indexer_unset_many
-#define tracker_kmail_registrar_unset tracker_kmail_indexer_unset
-#define tracker_kmail_registrar_cleanup tracker_kmail_indexer_cleanup
-#define dbus_glib_tracker_kmail_indexer_object_info dbus_glib_tracker_kmail_registrar_object_info
-
-#include "tracker-kmail-registrar-glue.h"
-
-/* Based on data/services/email.metadata */
-
-
-#define RDF_PREFIX	TRACKER_RDF_PREFIX
-#define NMO_PREFIX	TRACKER_NMO_PREFIX
-#define NCO_PREFIX	TRACKER_NCO_PREFIX
-#define NAO_PREFIX	TRACKER_NAO_PREFIX
-
-#define NIE_DATASOURCE 			       TRACKER_NIE_PREFIX "DataSource"
-#define NIE_DATASOURCE_P 		       TRACKER_NIE_PREFIX "dataSource"
-
-#define DATASOURCE_URN			       "urn:nepomuk:datasource:4a157cf0-1241-11de-8c30-0800200c9a66"
-
-G_DEFINE_TYPE (TrackerKMailIndexer, tracker_kmail_indexer, G_TYPE_OBJECT)
-
-/* This runs in-process of tracker-indexer */
-
-static GObject *idx_indexer = NULL;
-
-
-enum {
-	PROP_0,
-};
-
-void tracker_push_module_init (TrackerConfig *config);
-void tracker_push_module_shutdown (void);
-
-static void
-tracker_kmail_indexer_finalize (GObject *object)
-{
-	G_OBJECT_CLASS (tracker_kmail_indexer_parent_class)->finalize (object);
-}
-
-static void
-tracker_kmail_indexer_set_property (GObject      *object,
-					guint         prop_id,
-					const GValue *value,
-					GParamSpec   *pspec)
-{
-	switch (prop_id) {
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-tracker_kmail_indexer_get_property (GObject    *object,
-					guint       prop_id,
-					GValue     *value,
-					GParamSpec *pspec)
-{
-	switch (prop_id) {
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-tracker_kmail_indexer_class_init (TrackerKMailIndexerClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-	object_class->finalize = tracker_kmail_indexer_finalize;
-	object_class->set_property = tracker_kmail_indexer_set_property;
-	object_class->get_property = tracker_kmail_indexer_get_property;
-}
-
-static void
-tracker_kmail_indexer_init (TrackerKMailIndexer *object)
-{
-}
-
-
-
-static void
-get_email_and_fullname (const gchar *line, gchar **email, gchar **fullname)
-{
-	gchar *ptr = g_utf8_strchr (line, -1, '<');
-
-	if (ptr) {
-		gchar *holder;
-
-		holder = g_strdup (line);
-		ptr = g_utf8_strchr (holder, -1, '<');
-		*ptr = '\0';
-		ptr++;
-		*fullname = holder;
-		holder = ptr;
-		ptr = g_utf8_strchr (ptr, -1, '>');
-		if (ptr) {
-			*ptr = '\0';
-		}
-		*email = g_strdup (holder);
-
-	} else {
-		*email = g_strdup (line);
-		*fullname = NULL;
-	}
-}
-
-
-static void
-perform_set (TrackerKMailIndexer *object, 
-	     const gchar *subject, 
-	     const GStrv predicates, 
-	     const GStrv values)
-{
-	guint i = 0;
-
-	if (!tracker_data_query_resource_exists (DATASOURCE_URN, NULL)) {
-		tracker_data_insert_statement (DATASOURCE_URN, RDF_PREFIX "type",
-					       NIE_DATASOURCE);
-	}
-
-
-	tracker_data_insert_statement (subject, RDF_PREFIX "type",
-		                       NMO_PREFIX "Email");
-
-	tracker_data_insert_statement (subject, RDF_PREFIX "type",
-		                       NMO_PREFIX "MailboxDataObject");
-
-	tracker_data_insert_statement (subject, NIE_DATASOURCE_P,
-		                       DATASOURCE_URN);
-
-	while (predicates [i] != NULL && values[i] != NULL) {
-
-		/* TODO: TRACKER_KMAIL_PREDICATE_IDMD5
-		 *       TRACKER_KMAIL_PREDICATE_UID
-		 *       TRACKER_KMAIL_PREDICATE_SERNUM
-		 *       TRACKER_KMAIL_PREDICATE_SPAM
-		 *       TRACKER_KMAIL_PREDICATE_HAM
-		 *
-		 * I don't have predicates in Tracker's ontology for these. In
-		 * Jürg's vstore branch we are working with Nepomuk as ontology-
-		 * set. Perhaps when we merge this to that branch that we can 
-		 * improve this situation. */
-
-		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_TAG) == 0) {
-
-			tracker_data_insert_statement (":1", RDF_PREFIX "type",
-			                               NAO_PREFIX "Tag");
-
-			tracker_data_insert_statement (":1", 
-			                               NAO_PREFIX "prefLabel",
-			                               values[i]);
-
-			tracker_data_insert_statement (subject, 
-			                               NAO_PREFIX "hasTag", 
-			                                ":1");
-		}
-
-		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_SUBJECT) == 0) {
-			tracker_data_insert_statement (subject,
-						       TRACKER_NMO_PREFIX "messageSubject", 
-						       values[i]);
-		}
-
-		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_SENT) == 0) {
-			tracker_data_insert_statement (subject,
-						       TRACKER_NMO_PREFIX "receivedDate", 
-						       values[i]);
-		}
-
-		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_FROM) == 0) {
-			gchar *email_uri, *email = NULL, *fullname = NULL;
-			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
-			get_email_and_fullname (values[i], &email, &fullname);
-			if (fullname) {
-				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
-				g_free (fullname);
-			}
-			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
-			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
-			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
-			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
-			tracker_data_insert_statement (subject, NMO_PREFIX "from", ":1");
-			g_free (email_uri);
-			g_free (email);
-		}
-
-		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_TO) == 0) {
-			gchar *email_uri, *email = NULL, *fullname = NULL;
-			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
-			get_email_and_fullname (values[i], &email, &fullname);
-			if (fullname) {
-				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
-				g_free (fullname);
-			}
-			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
-			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
-			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
-			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
-			tracker_data_insert_statement (subject, NMO_PREFIX "to", ":1");
-			g_free (email_uri);
-			g_free (email);
-		}
-
-		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_CC) == 0) {
-			gchar *email_uri, *email = NULL, *fullname = NULL;
-			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
-			get_email_and_fullname (values[i], &email, &fullname);
-			if (fullname) {
-				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
-				g_free (fullname);
-			}
-			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
-			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
-			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
-			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
-			tracker_data_insert_statement (subject, NMO_PREFIX "cc", ":1");
-			g_free (email_uri);
-			g_free (email);
-		}
-
-
-		i++;
-	}
-
-}
-
-static void 
-perform_unset (TrackerKMailIndexer *object, 
-	       const gchar *subject)
-{
-	tracker_data_delete_resource (subject); 
-}
-
-static void
-perform_cleanup (TrackerKMailIndexer *object)
-{
-	GError *error = NULL;
-
-	tracker_data_update_sparql ("DELETE { ?s ?p ?o } WHERE { ?s nie:dataSource <" DATASOURCE_URN "> }", &error);
-
-	if (error) {
-		g_warning ("%s", error->message);
-		g_error_free (error);
-	}
-}
-
-static void
-set_stored_last_modseq (guint last_modseq)
-{
-	tracker_data_manager_set_db_option_int ("KMailLastModseq", (gint) last_modseq);
-}
-
-void
-tracker_kmail_indexer_set (TrackerKMailIndexer *object, 
-			   const gchar *subject, 
-			   const GStrv predicates,
-			   const GStrv values,
-			   const guint modseq,
-			   DBusGMethodInvocation *context,
-			   GError *derror)
-{
-	dbus_async_return_if_fail (subject != NULL, context);
-
-	if (predicates && values) {
-
-		dbus_async_return_if_fail (g_strv_length (predicates) == 
-					   g_strv_length (values), context);
-
-		perform_set (object, subject, predicates, values);
-	}
-
-	set_stored_last_modseq (modseq);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_kmail_indexer_set_many (TrackerKMailIndexer *object, 
-				const GStrv subjects, 
-				const GPtrArray *predicates,
-				const GPtrArray *values,
-				const guint modseq,
-				DBusGMethodInvocation *context,
-				GError *derror)
-{
-	guint len;
-	guint i = 0, amount = 0;
-
-	dbus_async_return_if_fail (subjects != NULL, context);
-	dbus_async_return_if_fail (predicates != NULL, context);
-	dbus_async_return_if_fail (values != NULL, context);
-
-	len = g_strv_length (subjects);
-
-	dbus_async_return_if_fail (len == predicates->len, context);
-	dbus_async_return_if_fail (len == values->len, context);
-
-	tracker_data_begin_transaction ();
-
-	while (subjects[i] != NULL) {
-		GStrv preds = g_ptr_array_index (predicates, i);
-		GStrv vals = g_ptr_array_index (values, i);
-
-		perform_set (object, subjects[i], preds, vals);
-
-		amount++;
-		if (amount > TRANSACTION_MAX) {
-			tracker_data_commit_transaction ();
-			g_main_context_iteration (NULL, FALSE);
-			tracker_data_begin_transaction ();
-			amount = 0;
-		}
-
-		i++;
-	}
-
-	set_stored_last_modseq (modseq);
-
-	tracker_data_commit_transaction ();
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_kmail_indexer_unset_many (TrackerKMailIndexer *object, 
-				  const GStrv subjects, 
-				  const guint modseq,
-				  DBusGMethodInvocation *context,
-				  GError *derror)
-{
-	guint i = 0, amount = 0;
-
-	dbus_async_return_if_fail (subjects != NULL, context);
-
-	tracker_data_begin_transaction ();
-
-	while (subjects[i] != NULL) {
-
-		perform_unset (object, subjects[i]);
-
-		amount++;
-		if (amount > TRANSACTION_MAX) {
-			tracker_data_commit_transaction ();
-			g_main_context_iteration (NULL, FALSE);
-			tracker_data_begin_transaction ();
-			amount = 0;
-		}
-
-		i++;
-	}
-
-	set_stored_last_modseq (modseq);
-
-	tracker_data_commit_transaction ();
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_kmail_indexer_unset (TrackerKMailIndexer *object, 
-			     const gchar *subject, 
-			     const guint modseq,
-			     DBusGMethodInvocation *context,
-			     GError *derror)
-{
-	dbus_async_return_if_fail (subject != NULL, context);
-
-	perform_unset (object, subject);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_kmail_indexer_cleanup (TrackerKMailIndexer *object, 
-			       const guint modseq,
-			       DBusGMethodInvocation *context,
-			       GError *derror)
-{
-	perform_cleanup (object);
-
-	set_stored_last_modseq (modseq);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_push_module_init (TrackerConfig *config)
-{
-	GError *error = NULL;
-	DBusGConnection *connection;
-
-	connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
-
-	if (!error) {
-		idx_indexer = g_object_new (TRACKER_TYPE_KMAIL_INDEXER, NULL);
-
-		dbus_g_object_type_install_info (G_OBJECT_TYPE (idx_indexer), 
-						 &dbus_glib_tracker_kmail_indexer_object_info);
-
-		dbus_g_connection_register_g_object (connection, 
-						     TRACKER_KMAIL_INDEXER_PATH, 
-						     idx_indexer);
-	}
-
-	if (error) {
-		g_critical ("Can't init DBus for KMail support: %s", error->message);
-		g_error_free (error);
-	}
-}
-
-void
-tracker_push_module_shutdown (void)
-{
-	if (idx_indexer)
-		g_object_unref (idx_indexer);
-}
diff --git a/src/plugins/kmail/tracker-kmail-indexer.h b/src/plugins/kmail/tracker-kmail-indexer.h
deleted file mode 100644
index 17a6d52..0000000
--- a/src/plugins/kmail/tracker-kmail-indexer.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2008, Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
- *
- * Authors:
- *  Philip Van Hoof <philip codeminded be>
- */
-
-#ifndef __LIBTRACKER_KMAIL_H__
-#define __LIBTRACKER_KMAIL_H__
-
-#if !defined (TRACKER_ENABLE_INTERNALS) && !defined (TRACKER_COMPILATION)
-#error "TRACKER_ENABLE_INTERNALS not defined, this must be defined to use tracker's internal functions"
-#endif
-
-#include <glib.h>
-
-#include <libtracker-common/tracker-common.h>
-
-G_BEGIN_DECLS
-
-#if !defined (TRACKER_ENABLE_INTERNALS) && !defined (TRACKER_COMPILATION)
-#error "TRACKER_ENABLE_INTERNALS not defined, this must be defined to use tracker's internal functions"
-#endif
-
-#include <glib.h>
-#include <dbus/dbus-glib-bindings.h>
-
-#include <tracker-indexer/tracker-indexer.h>
-
-#include "tracker-kmail-common.h"
-
-G_BEGIN_DECLS
-
-#define TRACKER_TYPE_KMAIL_INDEXER          (tracker_kmail_indexer_get_type())
-#define TRACKER_KMAIL_INDEXER(o)            (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_KMAIL_INDEXER, TrackerKMailIndexer))
-#define TRACKER_KMAIL_INDEXER_CLASS(c)      (G_TYPE_CHECK_CLASS_CAST ((c), TRACKER_TYPE_KMAIL_INDEXER, TrackerKMailIndexerClass))
-#define TRACKER_KMAIL_INDEXER_GET_CLASS(o)  (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_KMAIL_INDEXER, TrackerKMailIndexerClass))
-
-G_BEGIN_DECLS
-
-typedef struct TrackerKMailIndexer TrackerKMailIndexer;
-typedef struct TrackerKMailIndexerClass TrackerKMailIndexerClass;
-
-struct TrackerKMailIndexer {
-	GObject parent;
-};
-
-struct TrackerKMailIndexerClass {
-	GObjectClass parent;
-};
-
-GType  tracker_kmail_indexer_get_type   (void);
-
-void  tracker_kmail_indexer_set         (TrackerKMailIndexer *object, 
-					 const gchar *subject, 
-					 const GStrv predicates,
-					 const GStrv values,
-					 const guint modseq,
-					 DBusGMethodInvocation *context,
-					 GError *derror);
-void  tracker_kmail_indexer_set_many    (TrackerKMailIndexer *object, 
-					 const GStrv subjects, 
-					 const GPtrArray *predicates,
-					 const GPtrArray *values,
-					 const guint modseq,
-					 DBusGMethodInvocation *context,
-					 GError *derror);
-void  tracker_kmail_indexer_unset_many  (TrackerKMailIndexer *object, 
-					 const GStrv subjects, 
-					 const guint modseq,
-					 DBusGMethodInvocation *context,
-					 GError *derror);
-void  tracker_kmail_indexer_unset       (TrackerKMailIndexer *object, 
-					 const gchar *subject, 
-					 const guint modseq,
-					 DBusGMethodInvocation *context,
-					 GError *derror);
-void  tracker_kmail_indexer_cleanup     (TrackerKMailIndexer *object, 
-					 const guint modseq,
-					 DBusGMethodInvocation *context,
-					 GError *derror);
-
-G_END_DECLS
-
-#endif /* __LIBTRACKER_KMAIL_H__ */
diff --git a/src/plugins/kmail/tracker-kmail-registrar.c b/src/plugins/kmail/tracker-kmail-registrar.c
index 093f237..abe1de7 100644
--- a/src/plugins/kmail/tracker-kmail-registrar.c
+++ b/src/plugins/kmail/tracker-kmail-registrar.c
@@ -23,11 +23,14 @@
 
 #include "config.h"
 
+#include <string.h>
+
 #include <glib-object.h>
 #include <dbus/dbus-glib-bindings.h>
 
 #include <libtracker-data/tracker-data-update.h>
 #include <libtracker-data/tracker-data-manager.h>
+#include <libtracker-data/tracker-data-query.h>
 
 #include <trackerd/tracker-push-registrar.h>
 
@@ -41,6 +44,16 @@
 #define TRACKER_TYPE_KMAIL_PUSH_REGISTRAR    (tracker_kmail_push_registrar_get_type ())
 #define TRACKER_KMAIL_PUSH_REGISTRAR(module) (G_TYPE_CHECK_INSTANCE_CAST ((module), TRACKER_TYPE_KMAIL_PUSH_REGISTRAR, TrackerKMailPushRegistrar))
 
+#define RDF_PREFIX	TRACKER_RDF_PREFIX
+#define NMO_PREFIX	TRACKER_NMO_PREFIX
+#define NCO_PREFIX	TRACKER_NCO_PREFIX
+#define NAO_PREFIX	TRACKER_NAO_PREFIX
+
+#define NIE_DATASOURCE 			       TRACKER_NIE_PREFIX "DataSource"
+#define NIE_DATASOURCE_P 		       TRACKER_NIE_PREFIX "dataSource"
+
+#define DATASOURCE_URN			       "urn:nepomuk:datasource:4a157cf0-1241-11de-8c30-0800200c9a66"
+
 typedef struct TrackerKMailPushRegistrar TrackerKMailPushRegistrar;
 typedef struct TrackerKMailPushRegistrarClass TrackerKMailPushRegistrarClass;
 
@@ -54,13 +67,11 @@ struct TrackerKMailPushRegistrarClass {
 
 
 typedef struct {
-	DBusGProxy *idx_proxy;
-	DBusGConnection *connection;
+	gpointer dummy;
 } TrackerKMailRegistrarPrivate;
 
 enum {
 	PROP_0,
-	PROP_CONNECTION
 };
 
 static GType tracker_kmail_push_registrar_get_type (void) G_GNUC_CONST;
@@ -68,35 +79,12 @@ static GType tracker_kmail_push_registrar_get_type (void) G_GNUC_CONST;
 G_DEFINE_TYPE (TrackerKMailRegistrar, tracker_kmail_registrar, G_TYPE_OBJECT)
 G_DEFINE_TYPE (TrackerKMailPushRegistrar, tracker_kmail_push_registrar, TRACKER_TYPE_PUSH_REGISTRAR);
 
-/* This runs in-process of trackerd. It simply proxies everything to the indexer
- * who wont always be running. Which is why this is needed (trackerd is always
- * running, so it's more suitable to respond to KMail's requests). */
-
 static void
 tracker_kmail_registrar_finalize (GObject *object)
 {
-	TrackerKMailRegistrarPrivate *priv = TRACKER_KMAIL_REGISTRAR_GET_PRIVATE (object);
-
-	if (priv->idx_proxy)
-		g_object_unref (priv->idx_proxy);
-
 	G_OBJECT_CLASS (tracker_kmail_registrar_parent_class)->finalize (object);
 }
 
-static void 
-tracker_kmail_registrar_set_connection (TrackerKMailRegistrar *object, 
-					DBusGConnection *connection)
-{
-	TrackerKMailRegistrarPrivate *priv = TRACKER_KMAIL_REGISTRAR_GET_PRIVATE (object);
-
-	priv->connection = connection; /* weak */
-
-	priv->idx_proxy = dbus_g_proxy_new_for_name (priv->connection, 
-						     "org.freedesktop.Tracker.Indexer",
-						     TRACKER_KMAIL_INDEXER_PATH,
-						     TRACKER_KMAIL_REGISTRAR_INTERFACE);
-}
-
 static void
 tracker_kmail_registrar_set_property (GObject      *object,
 				      guint         prop_id,
@@ -104,10 +92,6 @@ tracker_kmail_registrar_set_property (GObject      *object,
 				      GParamSpec   *pspec)
 {
 	switch (prop_id) {
-	case PROP_CONNECTION:
-		tracker_kmail_registrar_set_connection (TRACKER_KMAIL_REGISTRAR (object),
-							    g_value_get_pointer (value));
-		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	}
@@ -119,12 +103,7 @@ tracker_kmail_registrar_get_property (GObject    *object,
 					  GValue     *value,
 					  GParamSpec *pspec)
 {
-	TrackerKMailRegistrarPrivate *priv = TRACKER_KMAIL_REGISTRAR_GET_PRIVATE (object);
-
 	switch (prop_id) {
-	case PROP_CONNECTION:
-		g_value_set_pointer (value, priv->connection);
-		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	}
@@ -139,14 +118,6 @@ tracker_kmail_registrar_class_init (TrackerKMailRegistrarClass *klass)
 	object_class->set_property = tracker_kmail_registrar_set_property;
 	object_class->get_property = tracker_kmail_registrar_get_property;
 
-	g_object_class_install_property (object_class,
-					 PROP_CONNECTION,
-					 g_param_spec_pointer ("connection",
-							       "DBus connection",
-							       "DBus connection",
-							       G_PARAM_READWRITE |
-							       G_PARAM_CONSTRUCT));
-
 	g_type_class_add_private (object_class, sizeof (TrackerKMailRegistrarPrivate));
 }
 
@@ -155,6 +126,180 @@ tracker_kmail_registrar_init (TrackerKMailRegistrar *object)
 {
 }
 
+
+static void
+get_email_and_fullname (const gchar *line, gchar **email, gchar **fullname)
+{
+	gchar *ptr = g_utf8_strchr (line, -1, '<');
+
+	if (ptr) {
+		gchar *holder;
+
+		holder = g_strdup (line);
+		ptr = g_utf8_strchr (holder, -1, '<');
+		*ptr = '\0';
+		ptr++;
+		*fullname = holder;
+		holder = ptr;
+		ptr = g_utf8_strchr (ptr, -1, '>');
+		if (ptr) {
+			*ptr = '\0';
+		}
+		*email = g_strdup (holder);
+
+	} else {
+		*email = g_strdup (line);
+		*fullname = NULL;
+	}
+}
+
+
+static void
+perform_set (TrackerKMailRegistrar *object, 
+	     const gchar *subject, 
+	     const GStrv predicates, 
+	     const GStrv values)
+{
+	guint i = 0;
+
+	if (!tracker_data_query_resource_exists (DATASOURCE_URN, NULL, NULL)) {
+		tracker_data_insert_statement (DATASOURCE_URN, RDF_PREFIX "type",
+					       NIE_DATASOURCE);
+	}
+
+
+	tracker_data_insert_statement (subject, RDF_PREFIX "type",
+		                       NMO_PREFIX "Email");
+
+	tracker_data_insert_statement (subject, RDF_PREFIX "type",
+		                       NMO_PREFIX "MailboxDataObject");
+
+	tracker_data_insert_statement (subject, NIE_DATASOURCE_P,
+		                       DATASOURCE_URN);
+
+	while (predicates [i] != NULL && values[i] != NULL) {
+
+		/* TODO: TRACKER_KMAIL_PREDICATE_IDMD5
+		 *       TRACKER_KMAIL_PREDICATE_UID
+		 *       TRACKER_KMAIL_PREDICATE_SERNUM
+		 *       TRACKER_KMAIL_PREDICATE_SPAM
+		 *       TRACKER_KMAIL_PREDICATE_HAM
+		 *
+		 * I don't have predicates in Tracker's ontology for these. In
+		 * Jürg's vstore branch we are working with Nepomuk as ontology-
+		 * set. Perhaps when we merge this to that branch that we can 
+		 * improve this situation. */
+
+		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_TAG) == 0) {
+
+			tracker_data_insert_statement (":1", RDF_PREFIX "type",
+			                               NAO_PREFIX "Tag");
+
+			tracker_data_insert_statement (":1", 
+			                               NAO_PREFIX "prefLabel",
+			                               values[i]);
+
+			tracker_data_insert_statement (subject, 
+			                               NAO_PREFIX "hasTag", 
+			                                ":1");
+		}
+
+		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_SUBJECT) == 0) {
+			tracker_data_insert_statement (subject,
+						       TRACKER_NMO_PREFIX "messageSubject", 
+						       values[i]);
+		}
+
+		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_SENT) == 0) {
+			tracker_data_insert_statement (subject,
+						       TRACKER_NMO_PREFIX "receivedDate", 
+						       values[i]);
+		}
+
+		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_FROM) == 0) {
+			gchar *email_uri, *email = NULL, *fullname = NULL;
+			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
+			get_email_and_fullname (values[i], &email, &fullname);
+			if (fullname) {
+				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
+				g_free (fullname);
+			}
+			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
+			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
+			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
+			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
+			tracker_data_insert_statement (subject, NMO_PREFIX "from", ":1");
+			g_free (email_uri);
+			g_free (email);
+		}
+
+		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_TO) == 0) {
+			gchar *email_uri, *email = NULL, *fullname = NULL;
+			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
+			get_email_and_fullname (values[i], &email, &fullname);
+			if (fullname) {
+				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
+				g_free (fullname);
+			}
+			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
+			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
+			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
+			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
+			tracker_data_insert_statement (subject, NMO_PREFIX "to", ":1");
+			g_free (email_uri);
+			g_free (email);
+		}
+
+		if (g_strcmp0 (predicates[i], TRACKER_KMAIL_PREDICATE_CC) == 0) {
+			gchar *email_uri, *email = NULL, *fullname = NULL;
+			tracker_data_insert_statement (":1", RDF_PREFIX "type", NCO_PREFIX "Contact");
+			get_email_and_fullname (values[i], &email, &fullname);
+			if (fullname) {
+				tracker_data_insert_statement (":1", NCO_PREFIX "fullname", fullname);
+				g_free (fullname);
+			}
+			email_uri = tracker_uri_printf_escaped ("mailto:%s";, email); 
+			tracker_data_insert_statement (email_uri, RDF_PREFIX "type", NCO_PREFIX "EmailAddress");
+			tracker_data_insert_statement (email_uri, NCO_PREFIX "emailAddress", email);
+			tracker_data_insert_statement (":1", NCO_PREFIX "hasEmailAddress", email_uri);
+			tracker_data_insert_statement (subject, NMO_PREFIX "cc", ":1");
+			g_free (email_uri);
+			g_free (email);
+		}
+
+
+		i++;
+	}
+
+}
+
+static void 
+perform_unset (TrackerKMailRegistrar *object, 
+	       const gchar *subject)
+{
+	tracker_data_delete_resource (subject); 
+}
+
+static void
+perform_cleanup (TrackerKMailRegistrar *object)
+{
+	GError *error = NULL;
+
+	tracker_data_update_sparql ("DELETE { ?s ?p ?o } WHERE { ?s nie:dataSource <" DATASOURCE_URN "> }", &error);
+
+	if (error) {
+		g_warning ("%s", error->message);
+		g_error_free (error);
+	}
+}
+
+static void
+set_stored_last_modseq (guint last_modseq)
+{
+	tracker_data_manager_set_db_option_int ("KMailLastModseq", (gint) last_modseq);
+}
+
+
 void
 tracker_kmail_registrar_set (TrackerKMailRegistrar *object, 
 				 const gchar *subject, 
@@ -164,8 +309,6 @@ tracker_kmail_registrar_set (TrackerKMailRegistrar *object,
 				 DBusGMethodInvocation *context,
 				 GError *derror)
 {
-	TrackerKMailRegistrarPrivate *priv = TRACKER_KMAIL_REGISTRAR_GET_PRIVATE (object);
-
 	dbus_async_return_if_fail (subject != NULL, context);
 
 	if (predicates && values) {
@@ -173,16 +316,11 @@ tracker_kmail_registrar_set (TrackerKMailRegistrar *object,
 		dbus_async_return_if_fail (g_strv_length (predicates) == 
 					   g_strv_length (values), context);
 
-		dbus_g_proxy_call_no_reply (priv->idx_proxy,
-					    "Set",
-					    G_TYPE_STRING, subject,
-					    G_TYPE_STRV, predicates,
-					    G_TYPE_STRV, values,
-					    G_TYPE_UINT, modseq,
-					    G_TYPE_INVALID, 
-					    G_TYPE_INVALID);
+		perform_set (object, subject, predicates, values);
 	}
 
+	set_stored_last_modseq (modseq);
+
 	dbus_g_method_return (context);
 }
 
@@ -195,8 +333,8 @@ tracker_kmail_registrar_set_many (TrackerKMailRegistrar *object,
 				      DBusGMethodInvocation *context,
 				      GError *derror)
 {
-	TrackerKMailRegistrarPrivate *priv = TRACKER_KMAIL_REGISTRAR_GET_PRIVATE (object);
 	guint len;
+	guint i = 0;
 
 	dbus_async_return_if_fail (subjects != NULL, context);
 	dbus_async_return_if_fail (predicates != NULL, context);
@@ -207,14 +345,16 @@ tracker_kmail_registrar_set_many (TrackerKMailRegistrar *object,
 	dbus_async_return_if_fail (len == predicates->len, context);
 	dbus_async_return_if_fail (len == values->len, context);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "SetMany",
-				    G_TYPE_STRV, subjects,
-				    TRACKER_TYPE_G_STRV_ARRAY, predicates,
-				    TRACKER_TYPE_G_STRV_ARRAY, values,
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	while (subjects[i] != NULL) {
+		GStrv preds = g_ptr_array_index (predicates, i);
+		GStrv vals = g_ptr_array_index (values, i);
+
+		perform_set (object, subjects[i], preds, vals);
+
+		i++;
+	}
+
+	set_stored_last_modseq (modseq);
 
 	dbus_g_method_return (context);
 }
@@ -226,16 +366,18 @@ tracker_kmail_registrar_unset_many (TrackerKMailRegistrar *object,
 				    DBusGMethodInvocation *context,
 				    GError *derror)
 {
-	TrackerKMailRegistrarPrivate *priv = TRACKER_KMAIL_REGISTRAR_GET_PRIVATE (object);
+	guint i = 0;
 
 	dbus_async_return_if_fail (subjects != NULL, context);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "UnsetMany",
-				    G_TYPE_STRV, subjects,
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	while (subjects[i] != NULL) {
+
+		perform_unset (object, subjects[i]);
+
+		i++;
+	}
+
+	set_stored_last_modseq (modseq);
 
 	dbus_g_method_return (context);
 }
@@ -247,16 +389,9 @@ tracker_kmail_registrar_unset (TrackerKMailRegistrar *object,
 			       DBusGMethodInvocation *context,
 			       GError *derror)
 {
-	TrackerKMailRegistrarPrivate *priv = TRACKER_KMAIL_REGISTRAR_GET_PRIVATE (object);
-
 	dbus_async_return_if_fail (subject != NULL, context);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "Unset",
-				    G_TYPE_STRING, subject,
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	perform_unset (object, subject);
 
 	dbus_g_method_return (context);
 }
@@ -267,13 +402,9 @@ tracker_kmail_registrar_cleanup (TrackerKMailRegistrar *object,
 				 DBusGMethodInvocation *context,
 				 GError *derror)
 {
-	TrackerKMailRegistrarPrivate *priv = TRACKER_KMAIL_REGISTRAR_GET_PRIVATE (object);
+	perform_cleanup (object);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "Cleanup",
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	set_stored_last_modseq (modseq);
 
 	dbus_g_method_return (context);
 }
diff --git a/src/plugins/rss/Makefile.am b/src/plugins/rss/Makefile.am
index 712040d..9e85939 100644
--- a/src/plugins/rss/Makefile.am
+++ b/src/plugins/rss/Makefile.am
@@ -12,16 +12,8 @@ INCLUDES = -I$(top_srcdir)/src						\
 module_flags = -module -avoid-version -no-undefined
 
 pushd_modulesdir = $(libdir)/tracker-$(TRACKER_API_VERSION)/push-modules/daemon
-pushi_modulesdir = $(libdir)/tracker-$(TRACKER_API_VERSION)/push-modules/indexer
 
 pushd_modules_LTLIBRARIES = libtracker-module-rss-daemon-module.la
-pushi_modules_LTLIBRARIES = libtracker-module-rss-indexer-module.la
-
-libtracker_module_rss_indexer_module_la_SOURCES =			\
-	tracker-rss-indexer.c						\
-	tracker-rss-indexer.h						\
-	tracker-rss-registrar-glue.h					\
-	tracker-rss-common.h
 
 libtracker_module_rss_daemon_module_la_SOURCES =			\
 	tracker-rss-registrar.c						\
@@ -43,21 +35,6 @@ libtracker_module_rss_daemon_module_la_LIBADD = 			\
 	$(RAPTOR_LIBS)							\
 	$(GCOV_LIBS)
 
-libtracker_module_rss_indexer_module_la_LDFLAGS = $(module_flags)
-
-libtracker_module_rss_indexer_module_la_LIBADD = 			\
-	$(top_builddir)/src/libtracker-data/libtracker-data.la          \
-	$(top_builddir)/src/libtracker-db/libtracker-db.la              \
-	$(top_builddir)/src/libtracker-common/libtracker-common.la      \
-	$(GMODULE_LIBS)							\
-	$(DBUS_LIBS)                                                    \
-	$(GTHREAD_LIBS)                                                 \
-	$(GIO_LIBS)                                                     \
-	$(GLIB2_LIBS)                                                   \
-	$(RAPTOR_LIBS)							\
-	$(GMIME_LIBS)							\
-	$(GCOV_LIBS)
-
 dbus_sources = tracker-rss-registrar-glue.h
 
 %-glue.h: %.xml
diff --git a/src/plugins/rss/tracker-rss-indexer.c b/src/plugins/rss/tracker-rss-indexer.c
deleted file mode 100644
index c1faa21..0000000
--- a/src/plugins/rss/tracker-rss-indexer.c
+++ /dev/null
@@ -1,347 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2008, Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
- *
- * Authors:
- *  Philip Van Hoof <philip codeminded be>
- */
- 
-#include "config.h"
-
-#include <string.h>
-#include <fcntl.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <glib.h>
-#include <gio/gio.h>
-#include <glib/gstdio.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include <gmime/gmime.h>
-
-#include <libtracker-common/tracker-ontology.h>
-
-#include <libtracker-data/tracker-data-update.h>
-#include <libtracker-data/tracker-data-manager.h>
-
-/* This is okay, we run in-process of the indexer: we can access its symbols */
-#include <tracker-indexer/tracker-module.h>
-#include <tracker-indexer/tracker-push.h>
-#include <tracker-indexer/tracker-module-metadata-private.h>
-
-#include "tracker-rss-indexer.h"
-
-void tracker_push_module_init (TrackerConfig *config);
-void tracker_push_module_shutdown (void);
-
-/* These defines/renames are necessary for -glue.h */
-#define tracker_rss_registrar_set tracker_rss_indexer_set
-#define tracker_rss_registrar_set_many tracker_rss_indexer_set_many
-#define tracker_rss_registrar_unset_many tracker_rss_indexer_unset_many
-#define tracker_rss_registrar_unset tracker_rss_indexer_unset
-#define tracker_rss_registrar_cleanup tracker_rss_indexer_cleanup
-#define dbus_glib_tracker_rss_indexer_object_info dbus_glib_tracker_rss_registrar_object_info
-
-#include "tracker-rss-registrar-glue.h"
-
-/* This is of course TODO (and to move to libtracker-common/tracker-ontology.h): */
-#define TRACKER_RSS_PREFIX		       "http://www.tracker-project.org/temp/rss#";
-
-#define METADATA_RSS			       TRACKER_RSS_PREFIX "RSS"
-#define METADATA_RSSDATA_OBJECT		       TRACKER_RSS_PREFIX "RSSDataObject"
-
-#define METADATA_RSS_SOMETHING		       TRACKER_RSS_PREFIX "something"
-
-#define NIE_DATASOURCE 			       TRACKER_NIE_PREFIX "DataSource"
-#define NIE_DATASOURCE_P 		       TRACKER_NIE_PREFIX "dataSource"
-
-#define RDF_TYPE			       TRACKER_RDF_PREFIX "type"
-
-#define NAO_TAG				       TRACKER_NAO_PREFIX "Tag"
-#define NAO_PREFLABEL			       TRACKER_NAO_PREFIX "prefLabel"
-
-#define DATASOURCE_URN			       "urn:nepomuk:datasource:670e2cd0-1241-11de-8c30-0800200c9a66"
-
-G_DEFINE_TYPE (TrackerRssIndexer, tracker_rss_indexer, G_TYPE_OBJECT)
-
-/* This runs in-process of tracker-indexer */
-
-static GObject *idx_indexer = NULL;
-
-enum {
-	PROP_0,
-};
-
-static void
-tracker_rss_indexer_finalize (GObject *object)
-{
-	G_OBJECT_CLASS (tracker_rss_indexer_parent_class)->finalize (object);
-}
-
-static void
-tracker_rss_indexer_set_property (GObject      *object,
-				  guint         prop_id,
-				  const GValue *value,
-				  GParamSpec   *pspec)
-{
-	switch (prop_id) {
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-tracker_rss_indexer_get_property (GObject    *object,
-				  guint       prop_id,
-				  GValue     *value,
-				  GParamSpec *pspec)
-{
-	switch (prop_id) {
-	default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-		break;
-	}
-}
-
-static void
-tracker_rss_indexer_class_init (TrackerRssIndexerClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-	object_class->finalize = tracker_rss_indexer_finalize;
-	object_class->set_property = tracker_rss_indexer_set_property;
-	object_class->get_property = tracker_rss_indexer_get_property;
-}
-
-static void
-tracker_rss_indexer_init (TrackerRssIndexer *object)
-{
-}
-
-
-static void
-perform_set (TrackerRssIndexer *object, 
-	     const gchar *subject, 
-	     const GStrv predicates, 
-	     const GStrv values)
-{
-	guint i = 0;
-
-	/* TODO */
-	return;
-
-	if (!tracker_data_query_resource_exists (DATASOURCE_URN, NULL, NULL)) {
-		tracker_data_insert_statement (DATASOURCE_URN, RDF_TYPE,
-					       NIE_DATASOURCE);
-	}
-
-	tracker_data_insert_statement (subject, RDF_TYPE,
-		                       METADATA_RSS);
-
-	tracker_data_insert_statement (subject, RDF_TYPE,
-		                       METADATA_RSSDATA_OBJECT);
-
-	tracker_data_insert_statement (subject, NIE_DATASOURCE_P,
-		                       DATASOURCE_URN);
-
-	while (predicates [i] != NULL && values[i] != NULL) {
-
-		if (g_strcmp0 (predicates[i], TRACKER_RSS_PREDICATE_THING) == 0) {
-			tracker_data_insert_statement (subject,
-						       METADATA_RSS_SOMETHING, 
-						       values[i]);
-		}
-
-		i++;
-	}
-}
-
-static void 
-perform_unset (TrackerRssIndexer *object, 
-	       const gchar *subject)
-{
-	/* TODO */
-	return;
-
-	tracker_data_delete_resource (subject); 
-}
-
-static void
-perform_cleanup (TrackerRssIndexer *object)
-{
-	GError *error = NULL;
-
-	/* TODO */
-	return;
-
-	tracker_data_update_sparql ("DELETE { ?s ?p ?o } WHERE { ?s nie:dataSource <" DATASOURCE_URN "> }", &error);
-
-	if (error) {
-		g_warning ("%s", error->message);
-		g_error_free (error);
-	}
-}
-
-static void
-set_stored_last_modseq (guint last_modseq)
-{
-	tracker_data_manager_set_db_option_int ("RssLastModseq", (gint) last_modseq);
-}
-
-void
-tracker_rss_indexer_set (TrackerRssIndexer *object, 
-			 const gchar *subject, 
-			 const GStrv predicates,
-			 const GStrv values,
-			 const guint modseq,
-			 DBusGMethodInvocation *context,
-			 GError *derror)
-{
-	dbus_async_return_if_fail (subject != NULL, context);
-
-	if (predicates && values) {
-
-		dbus_async_return_if_fail (g_strv_length (predicates) == 
-					   g_strv_length (values), context);
-
-		perform_set (object, subject, predicates, values);
-	}
-
-	set_stored_last_modseq (modseq);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_rss_indexer_set_many (TrackerRssIndexer *object, 
-			      const GStrv subjects, 
-			      const GPtrArray *predicates,
-			      const GPtrArray *values,
-			      const guint modseq,
-			      DBusGMethodInvocation *context,
-			      GError *derror)
-{
-	guint len;
-	guint i = 0;
-
-	dbus_async_return_if_fail (subjects != NULL, context);
-	dbus_async_return_if_fail (predicates != NULL, context);
-	dbus_async_return_if_fail (values != NULL, context);
-
-	len = g_strv_length (subjects);
-
-	dbus_async_return_if_fail (len == predicates->len, context);
-	dbus_async_return_if_fail (len == values->len, context);
-
-	while (subjects[i] != NULL) {
-		GStrv preds = g_ptr_array_index (predicates, i);
-		GStrv vals = g_ptr_array_index (values, i);
-
-		perform_set (object, subjects[i], preds, vals);
-
-		i++;
-	}
-
-	set_stored_last_modseq (modseq);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_rss_indexer_unset_many (TrackerRssIndexer *object, 
-				const GStrv subjects, 
-				const guint modseq,
-				DBusGMethodInvocation *context,
-				GError *derror)
-{
-	guint i = 0;
-
-	dbus_async_return_if_fail (subjects != NULL, context);
-
-	while (subjects[i] != NULL) {
-
-		perform_unset (object, subjects[i]);
-
-		i++;
-	}
-
-	set_stored_last_modseq (modseq);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_rss_indexer_unset (TrackerRssIndexer *object, 
-			   const gchar *subject, 
-			   const guint modseq,
-			   DBusGMethodInvocation *context,
-			   GError *derror)
-{
-	dbus_async_return_if_fail (subject != NULL, context);
-
-	perform_unset (object, subject);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_rss_indexer_cleanup (TrackerRssIndexer *object, 
-			     const guint modseq,
-			     DBusGMethodInvocation *context,
-			     GError *derror)
-{
-	perform_cleanup (object);
-
-	set_stored_last_modseq (modseq);
-
-	dbus_g_method_return (context);
-}
-
-void
-tracker_push_module_init (TrackerConfig *config)
-{
-	GError *error = NULL;
-	DBusGConnection *connection;
-
-	connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
-
-	if (!error) {
-		idx_indexer = g_object_new (TRACKER_TYPE_RSS_INDEXER, NULL);
-
-		dbus_g_object_type_install_info (G_OBJECT_TYPE (idx_indexer), 
-						 &dbus_glib_tracker_rss_indexer_object_info);
-
-		dbus_g_connection_register_g_object (connection, 
-						     TRACKER_RSS_INDEXER_PATH, 
-						     idx_indexer);
-	}
-
-	if (error) {
-		g_critical ("Can't init DBus for Rss support: %s", error->message);
-		g_error_free (error);
-	}
-}
-
-void
-tracker_push_module_shutdown (void)
-{
-	if (idx_indexer)
-		g_object_unref (idx_indexer);
-}
diff --git a/src/plugins/rss/tracker-rss-indexer.h b/src/plugins/rss/tracker-rss-indexer.h
deleted file mode 100644
index a886264..0000000
--- a/src/plugins/rss/tracker-rss-indexer.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Copyright (C) 2008, Nokia
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA  02110-1301, USA.
- *
- * Authors:
- *  Philip Van Hoof <philip codeminded be>
- */
-
-#ifndef __LIBTRACKER_RSS_H__
-#define __LIBTRACKER_RSS_H__
-
-#if !defined (TRACKER_ENABLE_INTERNALS) && !defined (TRACKER_COMPILATION)
-#error "TRACKER_ENABLE_INTERNALS not defined, this must be defined to use tracker's internal functions"
-#endif
-
-#include <glib.h>
-
-#include <libtracker-common/tracker-common.h>
-
-G_BEGIN_DECLS
-
-#if !defined (TRACKER_ENABLE_INTERNALS) && !defined (TRACKER_COMPILATION)
-#error "TRACKER_ENABLE_INTERNALS not defined, this must be defined to use tracker's internal functions"
-#endif
-
-#include <glib.h>
-#include <dbus/dbus-glib-bindings.h>
-
-#include <tracker-indexer/tracker-indexer.h>
-
-#include "tracker-rss-common.h"
-
-G_BEGIN_DECLS
-
-#define TRACKER_TYPE_RSS_INDEXER          (tracker_rss_indexer_get_type())
-#define TRACKER_RSS_INDEXER(o)            (G_TYPE_CHECK_INSTANCE_CAST ((o), TRACKER_TYPE_RSS_INDEXER, TrackerRssIndexer))
-#define TRACKER_RSS_INDEXER_CLASS(c)      (G_TYPE_CHECK_CLASS_CAST ((c), TRACKER_TYPE_RSS_INDEXER, TrackerRssIndexerClass))
-#define TRACKER_RSS_INDEXER_GET_CLASS(o)  (G_TYPE_INSTANCE_GET_CLASS ((o), TRACKER_TYPE_RSS_INDEXER, TrackerRssIndexerClass))
-
-G_BEGIN_DECLS
-
-typedef struct TrackerRssIndexer TrackerRssIndexer;
-typedef struct TrackerRssIndexerClass TrackerRssIndexerClass;
-
-struct TrackerRssIndexer {
-	GObject parent;
-};
-
-struct TrackerRssIndexerClass {
-	GObjectClass parent;
-};
-
-GType  tracker_rss_indexer_get_type   (void);
-
-void  tracker_rss_indexer_set         (TrackerRssIndexer *object, 
-				       const gchar *subject, 
-				       const GStrv predicates,
-				       const GStrv values,
-				       const guint modseq,
-				       DBusGMethodInvocation *context,
-				       GError *derror);
-void  tracker_rss_indexer_set_many    (TrackerRssIndexer *object, 
-				       const GStrv subjects, 
-				       const GPtrArray *predicates,
-				       const GPtrArray *values,
-				       const guint modseq,
-				       DBusGMethodInvocation *context,
-				       GError *derror);
-void  tracker_rss_indexer_unset_many  (TrackerRssIndexer *object, 
-				       const GStrv subjects, 
-				       const guint modseq,
-				       DBusGMethodInvocation *context,
-				       GError *derror);
-void  tracker_rss_indexer_unset       (TrackerRssIndexer *object, 
-				       const gchar *subject, 
-				       const guint modseq,
-				       DBusGMethodInvocation *context,
-				       GError *derror);
-void  tracker_rss_indexer_cleanup     (TrackerRssIndexer *object, 
-				       const guint modseq,
-				       DBusGMethodInvocation *context,
-				       GError *derror);
-
-G_END_DECLS
-
-#endif /* __LIBTRACKER_RSS_H__ */
diff --git a/src/plugins/rss/tracker-rss-registrar.c b/src/plugins/rss/tracker-rss-registrar.c
index 7f4c206..0e3984a 100644
--- a/src/plugins/rss/tracker-rss-registrar.c
+++ b/src/plugins/rss/tracker-rss-registrar.c
@@ -28,6 +28,7 @@
 
 #include <libtracker-data/tracker-data-update.h>
 #include <libtracker-data/tracker-data-manager.h>
+#include <libtracker-data/tracker-data-query.h>
 
 #include <trackerd/tracker-push-registrar.h>
 
@@ -41,6 +42,24 @@
 #define TRACKER_TYPE_RSS_PUSH_REGISTRAR    (tracker_rss_push_registrar_get_type ())
 #define TRACKER_RSS_PUSH_REGISTRAR(module) (G_TYPE_CHECK_INSTANCE_CAST ((module), TRACKER_TYPE_RSS_PUSH_REGISTRAR, TrackerRssPushRegistrar))
 
+/* This is of course TODO (and to move to libtracker-common/tracker-ontology.h): */
+#define TRACKER_RSS_PREFIX		       "http://www.tracker-project.org/temp/rss#";
+
+#define METADATA_RSS			       TRACKER_RSS_PREFIX "RSS"
+#define METADATA_RSSDATA_OBJECT		       TRACKER_RSS_PREFIX "RSSDataObject"
+
+#define METADATA_RSS_SOMETHING		       TRACKER_RSS_PREFIX "something"
+
+#define NIE_DATASOURCE 			       TRACKER_NIE_PREFIX "DataSource"
+#define NIE_DATASOURCE_P 		       TRACKER_NIE_PREFIX "dataSource"
+
+#define RDF_TYPE			       TRACKER_RDF_PREFIX "type"
+
+#define NAO_TAG				       TRACKER_NAO_PREFIX "Tag"
+#define NAO_PREFLABEL			       TRACKER_NAO_PREFIX "prefLabel"
+
+#define DATASOURCE_URN			       "urn:nepomuk:datasource:670e2cd0-1241-11de-8c30-0800200c9a66"
+
 typedef struct TrackerRssPushRegistrar TrackerRssPushRegistrar;
 typedef struct TrackerRssPushRegistrarClass TrackerRssPushRegistrarClass;
 
@@ -54,13 +73,11 @@ struct TrackerRssPushRegistrarClass {
 
 
 typedef struct {
-	DBusGProxy *idx_proxy;
-	DBusGConnection *connection;
+	gpointer dummy;
 } TrackerRssRegistrarPrivate;
 
 enum {
 	PROP_0,
-	PROP_CONNECTION
 };
 
 static GType tracker_rss_push_registrar_get_type (void) G_GNUC_CONST;
@@ -68,35 +85,12 @@ static GType tracker_rss_push_registrar_get_type (void) G_GNUC_CONST;
 G_DEFINE_TYPE (TrackerRssRegistrar, tracker_rss_registrar, G_TYPE_OBJECT)
 G_DEFINE_TYPE (TrackerRssPushRegistrar, tracker_rss_push_registrar, TRACKER_TYPE_PUSH_REGISTRAR);
 
-/* This runs in-process of trackerd. It simply proxies everything to the indexer
- * who wont always be running. Which is why this is needed (trackerd is always
- * running, so it's more suitable to respond to Rss's requests). */
-
 static void
 tracker_rss_registrar_finalize (GObject *object)
 {
-	TrackerRssRegistrarPrivate *priv = TRACKER_RSS_REGISTRAR_GET_PRIVATE (object);
-
-	if (priv->idx_proxy)
-		g_object_unref (priv->idx_proxy);
-
 	G_OBJECT_CLASS (tracker_rss_registrar_parent_class)->finalize (object);
 }
 
-static void 
-tracker_rss_registrar_set_connection (TrackerRssRegistrar *object, 
-					    DBusGConnection *connection)
-{
-	TrackerRssRegistrarPrivate *priv = TRACKER_RSS_REGISTRAR_GET_PRIVATE (object);
-
-	priv->connection = connection; /* weak */
-
-	priv->idx_proxy = dbus_g_proxy_new_for_name (priv->connection, 
-						     "org.freedesktop.Tracker.Indexer",
-						     TRACKER_RSS_INDEXER_PATH,
-						     TRACKER_RSS_REGISTRAR_INTERFACE);
-}
-
 static void
 tracker_rss_registrar_set_property (GObject      *object,
 					  guint         prop_id,
@@ -104,10 +98,6 @@ tracker_rss_registrar_set_property (GObject      *object,
 					  GParamSpec   *pspec)
 {
 	switch (prop_id) {
-	case PROP_CONNECTION:
-		tracker_rss_registrar_set_connection (TRACKER_RSS_REGISTRAR (object),
-							    g_value_get_pointer (value));
-		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	}
@@ -119,12 +109,7 @@ tracker_rss_registrar_get_property (GObject    *object,
 					  GValue     *value,
 					  GParamSpec *pspec)
 {
-	TrackerRssRegistrarPrivate *priv = TRACKER_RSS_REGISTRAR_GET_PRIVATE (object);
-
 	switch (prop_id) {
-	case PROP_CONNECTION:
-		g_value_set_pointer (value, priv->connection);
-		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	}
@@ -139,14 +124,6 @@ tracker_rss_registrar_class_init (TrackerRssRegistrarClass *klass)
 	object_class->set_property = tracker_rss_registrar_set_property;
 	object_class->get_property = tracker_rss_registrar_get_property;
 
-	g_object_class_install_property (object_class,
-					 PROP_CONNECTION,
-					 g_param_spec_pointer ("connection",
-							       "DBus connection",
-							       "DBus connection",
-							       G_PARAM_READWRITE |
-							       G_PARAM_CONSTRUCT));
-
 	g_type_class_add_private (object_class, sizeof (TrackerRssRegistrarPrivate));
 }
 
@@ -155,6 +132,77 @@ tracker_rss_registrar_init (TrackerRssRegistrar *object)
 {
 }
 
+
+static void
+perform_set (TrackerRssRegistrar *object, 
+	     const gchar *subject, 
+	     const GStrv predicates, 
+	     const GStrv values)
+{
+	guint i = 0;
+
+	/* TODO */
+	return;
+
+	if (!tracker_data_query_resource_exists (DATASOURCE_URN, NULL, NULL)) {
+		tracker_data_insert_statement (DATASOURCE_URN, RDF_TYPE,
+					       NIE_DATASOURCE);
+	}
+
+	tracker_data_insert_statement (subject, RDF_TYPE,
+		                       METADATA_RSS);
+
+	tracker_data_insert_statement (subject, RDF_TYPE,
+		                       METADATA_RSSDATA_OBJECT);
+
+	tracker_data_insert_statement (subject, NIE_DATASOURCE_P,
+		                       DATASOURCE_URN);
+
+	while (predicates [i] != NULL && values[i] != NULL) {
+
+		if (g_strcmp0 (predicates[i], TRACKER_RSS_PREDICATE_THING) == 0) {
+			tracker_data_insert_statement (subject,
+						       METADATA_RSS_SOMETHING, 
+						       values[i]);
+		}
+
+		i++;
+	}
+}
+
+static void 
+perform_unset (TrackerRssRegistrar *object, 
+	       const gchar *subject)
+{
+	/* TODO */
+	return;
+
+	tracker_data_delete_resource (subject); 
+}
+
+static void
+perform_cleanup (TrackerRssRegistrar *object)
+{
+	GError *error = NULL;
+
+	/* TODO */
+	return;
+
+	tracker_data_update_sparql ("DELETE { ?s ?p ?o } WHERE { ?s nie:dataSource <" DATASOURCE_URN "> }", &error);
+
+	if (error) {
+		g_warning ("%s", error->message);
+		g_error_free (error);
+	}
+}
+
+static void
+set_stored_last_modseq (guint last_modseq)
+{
+	tracker_data_manager_set_db_option_int ("RssLastModseq", (gint) last_modseq);
+}
+
+
 void
 tracker_rss_registrar_set (TrackerRssRegistrar *object, 
 			   const gchar *subject, 
@@ -164,8 +212,6 @@ tracker_rss_registrar_set (TrackerRssRegistrar *object,
 			   DBusGMethodInvocation *context,
 			   GError *derror)
 {
-	TrackerRssRegistrarPrivate *priv = TRACKER_RSS_REGISTRAR_GET_PRIVATE (object);
-
 	dbus_async_return_if_fail (subject != NULL, context);
 
 	if (predicates && values) {
@@ -173,16 +219,11 @@ tracker_rss_registrar_set (TrackerRssRegistrar *object,
 		dbus_async_return_if_fail (g_strv_length (predicates) == 
 					   g_strv_length (values), context);
 
-		dbus_g_proxy_call_no_reply (priv->idx_proxy,
-					    "Set",
-					    G_TYPE_STRING, subject,
-					    G_TYPE_STRV, predicates,
-					    G_TYPE_STRV, values,
-					    G_TYPE_UINT, modseq,
-					    G_TYPE_INVALID, 
-					    G_TYPE_INVALID);
+		perform_set (object, subject, predicates, values);
 	}
 
+	set_stored_last_modseq (modseq);
+
 	dbus_g_method_return (context);
 }
 
@@ -195,8 +236,8 @@ tracker_rss_registrar_set_many (TrackerRssRegistrar *object,
 				DBusGMethodInvocation *context,
 				GError *derror)
 {
-	TrackerRssRegistrarPrivate *priv = TRACKER_RSS_REGISTRAR_GET_PRIVATE (object);
 	guint len;
+	guint i = 0;
 
 	dbus_async_return_if_fail (subjects != NULL, context);
 	dbus_async_return_if_fail (predicates != NULL, context);
@@ -207,14 +248,16 @@ tracker_rss_registrar_set_many (TrackerRssRegistrar *object,
 	dbus_async_return_if_fail (len == predicates->len, context);
 	dbus_async_return_if_fail (len == values->len, context);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "SetMany",
-				    G_TYPE_STRV, subjects,
-				    TRACKER_TYPE_G_STRV_ARRAY, predicates,
-				    TRACKER_TYPE_G_STRV_ARRAY, values,
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	while (subjects[i] != NULL) {
+		GStrv preds = g_ptr_array_index (predicates, i);
+		GStrv vals = g_ptr_array_index (values, i);
+
+		perform_set (object, subjects[i], preds, vals);
+
+		i++;
+	}
+
+	set_stored_last_modseq (modseq);
 
 	dbus_g_method_return (context);
 }
@@ -226,16 +269,18 @@ tracker_rss_registrar_unset_many (TrackerRssRegistrar *object,
 				  DBusGMethodInvocation *context,
 				  GError *derror)
 {
-	TrackerRssRegistrarPrivate *priv = TRACKER_RSS_REGISTRAR_GET_PRIVATE (object);
+	guint i = 0;
 
 	dbus_async_return_if_fail (subjects != NULL, context);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "UnsetMany",
-				    G_TYPE_STRV, subjects,
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	while (subjects[i] != NULL) {
+
+		perform_unset (object, subjects[i]);
+
+		i++;
+	}
+
+	set_stored_last_modseq (modseq);
 
 	dbus_g_method_return (context);
 }
@@ -247,16 +292,9 @@ tracker_rss_registrar_unset (TrackerRssRegistrar *object,
 				   DBusGMethodInvocation *context,
 				   GError *derror)
 {
-	TrackerRssRegistrarPrivate *priv = TRACKER_RSS_REGISTRAR_GET_PRIVATE (object);
-
 	dbus_async_return_if_fail (subject != NULL, context);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "Unset",
-				    G_TYPE_STRING, subject,
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	perform_unset (object, subject);
 
 	dbus_g_method_return (context);
 }
@@ -267,13 +305,9 @@ tracker_rss_registrar_cleanup (TrackerRssRegistrar *object,
 				     DBusGMethodInvocation *context,
 				     GError *derror)
 {
-	TrackerRssRegistrarPrivate *priv = TRACKER_RSS_REGISTRAR_GET_PRIVATE (object);
+	perform_cleanup (object);
 
-	dbus_g_proxy_call_no_reply (priv->idx_proxy,
-				    "Cleanup",
-				    G_TYPE_UINT, modseq,
-				    G_TYPE_INVALID, 
-				    G_TYPE_INVALID);
+	set_stored_last_modseq (modseq);
 
 	dbus_g_method_return (context);
 }
@@ -324,8 +358,7 @@ tracker_rss_push_registrar_enable (TrackerPushRegistrar *registrar,
 		return;
 	}
 
-	object = g_object_new (TRACKER_TYPE_RSS_REGISTRAR, 
-			       "connection", connection, NULL);
+	object = g_object_new (TRACKER_TYPE_RSS_REGISTRAR, NULL);
 
 	dbus_g_object_type_install_info (G_OBJECT_TYPE (object), 
 					 &dbus_glib_tracker_rss_registrar_object_info);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]