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/libtracker-sparql/tracker-serializer.c | |
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/libtracker-sparql/tracker-serializer.c')
-rw-r--r-- | src/libtracker-sparql/tracker-serializer.c | 35 |
1 files changed, 34 insertions, 1 deletions
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; +} |