diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2022-07-02 19:46:17 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2022-07-11 20:55:05 +0200 |
commit | a2efb8b6b3c1d1b3ed611cc648fe29c74cc7ee7d (patch) | |
tree | 13ad1a415b4b362f5d066a1bd8424fcd17502cdb /src | |
parent | 2717dcb043c9a1f3c66bdf9925a92e687d1ae5e2 (diff) | |
download | tracker-a2efb8b6b3c1d1b3ed611cc648fe29c74cc7ee7d.tar.gz |
libtracker-sparql: Pass namespace manager explicitly to TrackerSerializer
Implementations of this object poked the given cursor's connection in order
to get a TrackerNamespaceManager. This usually works with cursors from
queries, but we want to use serializers with data not necessarily coming
from a connection, so pass explicitly the TrackerNamespaceManager to use
during serialization.
Diffstat (limited to 'src')
-rw-r--r-- | src/libtracker-sparql/direct/tracker-direct-statement.c | 4 | ||||
-rw-r--r-- | src/libtracker-sparql/direct/tracker-direct.c | 5 | ||||
-rw-r--r-- | src/libtracker-sparql/tracker-endpoint-http.c | 6 | ||||
-rw-r--r-- | src/libtracker-sparql/tracker-serializer-trig.c | 4 | ||||
-rw-r--r-- | src/libtracker-sparql/tracker-serializer-turtle.c | 4 | ||||
-rw-r--r-- | src/libtracker-sparql/tracker-serializer.c | 35 | ||||
-rw-r--r-- | src/libtracker-sparql/tracker-serializer.h | 3 |
7 files changed, 51 insertions, 10 deletions
diff --git a/src/libtracker-sparql/direct/tracker-direct-statement.c b/src/libtracker-sparql/direct/tracker-direct-statement.c index f23901213..8ff95c8fb 100644 --- a/src/libtracker-sparql/direct/tracker-direct-statement.c +++ b/src/libtracker-sparql/direct/tracker-direct-statement.c @@ -253,7 +253,9 @@ serialize_in_thread (GTask *task, conn = tracker_sparql_statement_get_connection (object); tracker_direct_connection_update_timestamp (TRACKER_DIRECT_CONNECTION (conn)); tracker_sparql_cursor_set_connection (cursor, conn); - istream = tracker_serializer_new (cursor, convert_format (data->format)); + istream = tracker_serializer_new (cursor, + tracker_sparql_connection_get_namespace_manager (conn), + convert_format (data->format)); out: g_clear_object (&cursor); diff --git a/src/libtracker-sparql/direct/tracker-direct.c b/src/libtracker-sparql/direct/tracker-direct.c index 7b8b1fab1..0cef224e0 100644 --- a/src/libtracker-sparql/direct/tracker-direct.c +++ b/src/libtracker-sparql/direct/tracker-direct.c @@ -322,6 +322,7 @@ serialize_in_thread (GTask *task, TrackerDirectConnection *conn; TrackerSparql *query = NULL; TrackerSparqlCursor *cursor = NULL; + TrackerNamespaceManager *namespaces; GInputStream *istream = NULL; SerializeRdf *data = task_data->data; GError *error = NULL; @@ -345,7 +346,9 @@ serialize_in_thread (GTask *task, goto out; tracker_sparql_cursor_set_connection (cursor, TRACKER_SPARQL_CONNECTION (conn)); - istream = tracker_serializer_new (cursor, convert_format (data->format)); + namespaces = tracker_sparql_connection_get_namespace_manager (TRACKER_SPARQL_CONNECTION (conn)); + istream = tracker_serializer_new (cursor, namespaces, + convert_format (data->format)); out: g_clear_object (&query); diff --git a/src/libtracker-sparql/tracker-endpoint-http.c b/src/libtracker-sparql/tracker-endpoint-http.c index 00395a690..c5829494f 100644 --- a/src/libtracker-sparql/tracker-endpoint-http.c +++ b/src/libtracker-sparql/tracker-endpoint-http.c @@ -107,6 +107,7 @@ query_async_cb (GObject *object, { TrackerEndpointHttp *endpoint_http; TrackerSparqlCursor *cursor; + TrackerSparqlConnection *conn; Request *request = user_data; GInputStream *stream; GError *error = NULL; @@ -124,7 +125,10 @@ query_async_cb (GObject *object, return; } - stream = tracker_serializer_new (cursor, request->format); + conn = tracker_sparql_cursor_get_connection (cursor); + stream = tracker_serializer_new (cursor, + tracker_sparql_connection_get_namespace_manager (conn), + request->format); /* Consumes the input stream */ tracker_http_server_response (endpoint_http->server, request->request, diff --git a/src/libtracker-sparql/tracker-serializer-trig.c b/src/libtracker-sparql/tracker-serializer-trig.c index 71952e8ff..307bfb78c 100644 --- a/src/libtracker-sparql/tracker-serializer-trig.c +++ b/src/libtracker-sparql/tracker-serializer-trig.c @@ -196,7 +196,6 @@ serialize_up_to_size (TrackerSerializerTrig *serializer_trig, { TrackerSparqlCursor *cursor; TrackerNamespaceManager *namespaces; - TrackerSparqlConnection *conn; GError *inner_error = NULL; TrackerQuad *cur; @@ -204,8 +203,7 @@ serialize_up_to_size (TrackerSerializerTrig *serializer_trig, serializer_trig->data = g_string_new (NULL); cursor = tracker_serializer_get_cursor (TRACKER_SERIALIZER (serializer_trig)); - conn = tracker_sparql_cursor_get_connection (cursor); - namespaces = tracker_sparql_connection_get_namespace_manager (conn); + namespaces = tracker_serializer_get_namespaces (TRACKER_SERIALIZER (serializer_trig)); if (!serializer_trig->head_printed) { gchar *str; diff --git a/src/libtracker-sparql/tracker-serializer-turtle.c b/src/libtracker-sparql/tracker-serializer-turtle.c index b94fc85e7..fc60f2325 100644 --- a/src/libtracker-sparql/tracker-serializer-turtle.c +++ b/src/libtracker-sparql/tracker-serializer-turtle.c @@ -187,7 +187,6 @@ serialize_up_to_size (TrackerSerializerTurtle *serializer_ttl, { TrackerSparqlCursor *cursor; TrackerNamespaceManager *namespaces; - TrackerSparqlConnection *conn; GError *inner_error = NULL; TrackerTriple *cur; @@ -195,8 +194,7 @@ serialize_up_to_size (TrackerSerializerTurtle *serializer_ttl, serializer_ttl->data = g_string_new (NULL); cursor = tracker_serializer_get_cursor (TRACKER_SERIALIZER (serializer_ttl)); - conn = tracker_sparql_cursor_get_connection (cursor); - namespaces = tracker_sparql_connection_get_namespace_manager (conn); + namespaces = tracker_serializer_get_namespaces (TRACKER_SERIALIZER (serializer_ttl)); if (!serializer_ttl->head_printed) { gchar *str; diff --git a/src/libtracker-sparql/tracker-serializer.c b/src/libtracker-sparql/tracker-serializer.c index c5ac3fe54..a95961d92 100644 --- a/src/libtracker-sparql/tracker-serializer.c +++ b/src/libtracker-sparql/tracker-serializer.c @@ -32,6 +32,7 @@ enum { PROP_0, PROP_CURSOR, + PROP_NAMESPACE_MANAGER, N_PROPS }; @@ -42,6 +43,7 @@ typedef struct _TrackerSerializerPrivate TrackerSerializerPrivate; struct _TrackerSerializerPrivate { TrackerSparqlCursor *cursor; + TrackerNamespaceManager *namespaces; }; G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (TrackerSerializer, tracker_serializer, @@ -55,6 +57,7 @@ tracker_serializer_finalize (GObject *object) tracker_serializer_get_instance_private (serializer); g_object_unref (priv->cursor); + g_object_unref (priv->namespaces); G_OBJECT_CLASS (tracker_serializer_parent_class)->finalize (object); } @@ -72,6 +75,9 @@ tracker_serializer_set_property (GObject *object, case PROP_CURSOR: priv->cursor = g_value_dup_object (value); break; + case PROP_NAMESPACE_MANAGER: + priv->namespaces = g_value_dup_object (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -92,6 +98,9 @@ tracker_serializer_get_property (GObject *object, case PROP_CURSOR: g_value_set_object (value, priv->cursor); break; + case PROP_NAMESPACE_MANAGER: + g_value_set_object (value, priv->namespaces); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -116,6 +125,15 @@ tracker_serializer_class_init (TrackerSerializerClass *klass) G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE); + props[PROP_NAMESPACE_MANAGER] = + g_param_spec_object ("namespace-manager", + "Namespace Manager", + "Namespace Manager", + TRACKER_TYPE_NAMESPACE_MANAGER, + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS | + G_PARAM_READABLE | + G_PARAM_WRITABLE); g_object_class_install_properties (object_class, N_PROPS, props); } @@ -127,6 +145,7 @@ tracker_serializer_init (TrackerSerializer *serializer) GInputStream * tracker_serializer_new (TrackerSparqlCursor *cursor, + TrackerNamespaceManager *namespaces, TrackerSerializerFormat format) { GType type; @@ -151,7 +170,10 @@ tracker_serializer_new (TrackerSparqlCursor *cursor, return NULL; } - return g_object_new (type, "cursor", cursor, NULL); + return g_object_new (type, + "cursor", cursor, + "namespace-manager", namespaces, + NULL); } TrackerSparqlCursor * @@ -164,3 +186,14 @@ tracker_serializer_get_cursor (TrackerSerializer *serializer) return priv->cursor; } + +TrackerNamespaceManager * +tracker_serializer_get_namespaces (TrackerSerializer *serializer) +{ + TrackerSerializerPrivate *priv = + tracker_serializer_get_instance_private (serializer); + + g_return_val_if_fail (TRACKER_IS_SERIALIZER (serializer), NULL); + + return priv->namespaces; +} diff --git a/src/libtracker-sparql/tracker-serializer.h b/src/libtracker-sparql/tracker-serializer.h index b0c54d8e0..37a58c8b6 100644 --- a/src/libtracker-sparql/tracker-serializer.h +++ b/src/libtracker-sparql/tracker-serializer.h @@ -33,8 +33,11 @@ G_DECLARE_DERIVABLE_TYPE (TrackerSerializer, GInputStream) GInputStream * tracker_serializer_new (TrackerSparqlCursor *cursor, + TrackerNamespaceManager *namespaces, TrackerSerializerFormat format); TrackerSparqlCursor * tracker_serializer_get_cursor (TrackerSerializer *serializer); +TrackerNamespaceManager * tracker_serializer_get_namespaces (TrackerSerializer *serializer); + #endif /* TRACKER_SERIALIZER_H */ |