[tracker/initable-db-iface] libtracker-bus, -direct, -sparql: Error handling, get_direct



commit a31cc8dc59aa473a051d90258aa99d8f19e3cf9e
Author: Philip Van Hoof <philip codeminded be>
Date:   Thu Feb 3 11:53:50 2011 +0100

    libtracker-bus, -direct, -sparql: Error handling, get_direct
    
    This makes the connection.get_direct and connection.get APIs work
    right.
    
    Fixes NB#222182.

 src/libtracker-bus/tracker-bus.vala        |   10 +++-------
 src/libtracker-direct/tracker-direct.vala  |   14 ++++++--------
 src/libtracker-sparql/tracker-backend.vala |    7 ++++++-
 3 files changed, 15 insertions(+), 16 deletions(-)
---
diff --git a/src/libtracker-bus/tracker-bus.vala b/src/libtracker-bus/tracker-bus.vala
index e17c9fc..b0b3137 100644
--- a/src/libtracker-bus/tracker-bus.vala
+++ b/src/libtracker-bus/tracker-bus.vala
@@ -347,11 +347,7 @@ public class Tracker.Bus.Connection : Tracker.Sparql.Connection {
 	}
 }
 
-public Tracker.Sparql.Connection? module_init () {
-	try {
-		Tracker.Sparql.Connection plugin = new Tracker.Bus.Connection ();
-		return plugin;
-	} catch {
-		return null;
-	}
+public Tracker.Sparql.Connection? module_init () throws GLib.Error {
+	Tracker.Sparql.Connection plugin = new Tracker.Bus.Connection ();
+	return plugin;
 }
diff --git a/src/libtracker-direct/tracker-direct.vala b/src/libtracker-direct/tracker-direct.vala
index a58b1a9..cc3e51f 100644
--- a/src/libtracker-direct/tracker-direct.vala
+++ b/src/libtracker-direct/tracker-direct.vala
@@ -31,11 +31,13 @@ public class Tracker.Direct.Connection : Tracker.Sparql.Connection {
 		}
 
 		try {
+			// I don't really know why we are hiding the real error by wrapping
+			// it in a Sparql.Error.INTERNAL here ...
 			if (!Data.Manager.init (DBManagerFlags.READONLY, null, null, false, select_cache_size, 0, null, null)) {
 				throw new Sparql.Error.INTERNAL ("Unable to initialize database");
 			}
 		} catch (Tracker.DBInterfaceError e) {
-			throw new Sparql.Error.INTERNAL ("Unable to initialize database");
+			throw new Sparql.Error.INTERNAL ("Unable to initialize database: %s", e.message);
 		}
 
 		initialized = true;
@@ -112,11 +114,7 @@ public class Tracker.Direct.Connection : Tracker.Sparql.Connection {
 	}
 }
 
-public Tracker.Sparql.Connection? module_init () {
-	try {
-		Tracker.Sparql.Connection plugin = new Tracker.Direct.Connection ();
-		return plugin;
-	} catch (Tracker.Sparql.Error e) {
-		return null;
-	}
+public Tracker.Sparql.Connection? module_init () throws GLib.Error {
+	Tracker.Sparql.Connection plugin = new Tracker.Direct.Connection ();
+	return plugin;
 }
diff --git a/src/libtracker-sparql/tracker-backend.vala b/src/libtracker-sparql/tracker-backend.vala
index 6ecbb5f..94edf0b 100644
--- a/src/libtracker-sparql/tracker-backend.vala
+++ b/src/libtracker-sparql/tracker-backend.vala
@@ -35,7 +35,7 @@ class Tracker.Sparql.Backend : Connection {
 		BUS
 	}
 
-	private delegate Tracker.Sparql.Connection? ModuleInitFunc ();
+	private delegate Tracker.Sparql.Connection? ModuleInitFunc () throws GLib.Error;
 
 	public Backend (bool direct_only = false) throws Sparql.Error
 	requires (Module.supported ()) {
@@ -262,6 +262,11 @@ class Tracker.Sparql.Backend : Connection {
 			// Call module init function
 			Tracker.Sparql.Connection c = module_init ();
 
+			if (c == null) {
+				// For some reason the error when set by module_init isn't passed on :-\
+				throw new Sparql.Error.INTERNAL ("Unable to initialize database");
+			}
+
 			debug ("Loaded module source: '%s'", module.name ());
 
 			return c;



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