[tracker/parser] Turtle: Improve error handling



commit c8ffcd1cebfef9c7efefea1c6f20452e939d6579
Author: Jürg Billeter <j bitron ch>
Date:   Wed Aug 19 12:26:20 2009 +0200

    Turtle: Improve error handling

 src/libtracker-data/tracker-data-manager.c     |   16 ++++++++++++++--
 src/libtracker-data/tracker-turtle-reader.vala |   14 +++++---------
 tests/libtracker-data/tracker-ontology-test.c  |    3 ++-
 tests/libtracker-data/tracker-sparql-test.c    |    3 ++-
 utils/services/Makefile.am                     |    1 +
 5 files changed, 24 insertions(+), 13 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 09dd5f7..3cb483e 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -266,10 +266,16 @@ static void
 import_ontology_file (const gchar	      *filename)
 {
 	gchar		*ontology_file;
+	GError          *error = NULL;
 
 	ontology_file = g_build_filename (ontologies_dir, filename, NULL);
-	tracker_turtle_reader_load (ontology_file);
+	tracker_turtle_reader_load (ontology_file, &error);
 	g_free (ontology_file);
+
+	if (error) {
+		g_critical ("%s", error->message);
+		g_error_free (error);
+	}
 }
 
 static void
@@ -765,6 +771,7 @@ tracker_data_manager_init (TrackerDBManagerFlags       flags,
 		GList *sorted = NULL, *l;
 		gchar *test_schema_path;
 		const gchar *env_path;
+		GError *error = NULL;
 
 		env_path = g_getenv ("TRACKER_DB_ONTOLOGIES_DIR");
 		
@@ -833,8 +840,13 @@ tracker_data_manager_init (TrackerDBManagerFlags       flags,
 			import_ontology_file (l->data);
 		}
 		if (test_schema) {
-			tracker_turtle_reader_load (test_schema_path);
+			tracker_turtle_reader_load (test_schema_path, &error);
 			g_free (test_schema_path);
+
+			if (error) {
+				g_critical ("%s", error->message);
+				g_error_free (error);
+			}
 		}
 
 		tracker_data_commit_transaction ();
diff --git a/src/libtracker-data/tracker-turtle-reader.vala b/src/libtracker-data/tracker-turtle-reader.vala
index e985a65..0d86959 100644
--- a/src/libtracker-data/tracker-turtle-reader.vala
+++ b/src/libtracker-data/tracker-turtle-reader.vala
@@ -180,8 +180,7 @@ public class Tracker.TurtleReader : Object {
 					state = State.SUBJECT;
 					continue;
 				} else {
-					// TODO throw error
-					return false;
+					throw new SparqlError.PARSE ("expected subject");
 				}
 			case State.SUBJECT:
 				// parse predicate
@@ -204,8 +203,7 @@ public class Tracker.TurtleReader : Object {
 					state = State.PREDICATE;
 					continue;
 				} else {
-					// TODO throw error
-					return false;
+					throw new SparqlError.PARSE ("expected predicate");
 				}
 			case State.PREDICATE:
 				// parse object
@@ -317,8 +315,7 @@ public class Tracker.TurtleReader : Object {
 					state = State.OBJECT;
 					return true;
 				} else {
-					// TODO throw error
-					return false;
+					throw new SparqlError.PARSE ("expected object");
 				}
 			case State.OBJECT:
 				if (accept (SparqlTokenType.COMMA)) {
@@ -336,14 +333,13 @@ public class Tracker.TurtleReader : Object {
 					state = State.BOS;
 					continue;
 				} else {
-					// TODO throw error
-					return false;
+					throw new SparqlError.PARSE ("expected comma, semicolon, or dot");
 				}
 			}
 		}
 	}
 
-	public static void load (string path) {
+	public static void load (string path) throws SparqlError, DataError {
 		try {
 			Data.begin_transaction ();
 
diff --git a/tests/libtracker-data/tracker-ontology-test.c b/tests/libtracker-data/tracker-ontology-test.c
index b4b339a..ce33ef4 100644
--- a/tests/libtracker-data/tracker-ontology-test.c
+++ b/tests/libtracker-data/tracker-ontology-test.c
@@ -106,7 +106,8 @@ test_query (gconstpointer test_data)
 
 		/* load data set */
 		data_filename = g_strconcat (data_prefix, ".ttl", NULL);
-		tracker_turtle_reader_load (data_filename);
+		tracker_turtle_reader_load (data_filename, &error);
+		g_assert (error == NULL);
 
 		query_filename = g_strconcat (test_prefix, ".rq", NULL);
 		g_file_get_contents (query_filename, &query, NULL, &error);
diff --git a/tests/libtracker-data/tracker-sparql-test.c b/tests/libtracker-data/tracker-sparql-test.c
index 695fd52..e389670 100644
--- a/tests/libtracker-data/tracker-sparql-test.c
+++ b/tests/libtracker-data/tracker-sparql-test.c
@@ -120,7 +120,8 @@ test_sparql_query (gconstpointer test_data)
 
 		/* load data set */
 		data_filename = g_strconcat (data_prefix, ".ttl", NULL);
-		tracker_turtle_reader_load (data_filename);
+		tracker_turtle_reader_load (data_filename, &error);
+		g_assert (error == NULL);
 
 		query_filename = g_strconcat (test_prefix, ".rq", NULL);
 		g_file_get_contents (query_filename, &query, NULL, &error);
diff --git a/utils/services/Makefile.am b/utils/services/Makefile.am
index 14b5dcb..98cd070 100644
--- a/utils/services/Makefile.am
+++ b/utils/services/Makefile.am
@@ -4,6 +4,7 @@ noinst_PROGRAMS = ontology-validator ttl2html data-validator
 
 INCLUDES = 				\
 	-DG_LOG_DOMAIN=\"Tracker\"	\
+	-DTRACKER_COMPILATION		\
 	-I$(top_srcdir)/src		\
 	$(WARN_CFLAGS)			\
 	$(GLIB2_CFLAGS)			\



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