[evolution-data-server] Make ESource::unset_last_credentials_required_arguments() virtual method
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Make ESource::unset_last_credentials_required_arguments() virtual method
- Date: Wed, 17 Jun 2015 14:54:08 +0000 (UTC)
commit 5649be0fff2e256febba984067246531c391ba57
Author: Milan Crha <mcrha redhat com>
Date: Wed Jun 17 16:52:14 2015 +0200
Make ESource::unset_last_credentials_required_arguments() virtual method
It's required to have different implementation for an ESource and
for an EServerSideSource, because the later doesn't have a GDBusProxy,
which was used in the initial implementation.
libebackend/e-server-side-source.c | 33 +++++++++++++++---
libedataserver/e-source.c | 62 ++++++++++++++++++++++-------------
libedataserver/e-source.h | 6 +++-
3 files changed, 71 insertions(+), 30 deletions(-)
---
diff --git a/libebackend/e-server-side-source.c b/libebackend/e-server-side-source.c
index f1a017e..36a038b 100644
--- a/libebackend/e-server-side-source.c
+++ b/libebackend/e-server-side-source.c
@@ -533,11 +533,11 @@ server_side_source_get_last_credentials_required_arguments_cb (EDBusSource *dbus
return TRUE;
}
-static gboolean
-server_side_source_unset_last_credentials_required_arguments_cb (EDBusSource *dbus_interface,
- GDBusMethodInvocation *invocation,
- EServerSideSource *source)
+static void
+server_side_source_unset_last_credentials_required_arguments (EServerSideSource *source)
{
+ g_return_if_fail (E_IS_SERVER_SIDE_SOURCE (source));
+
g_mutex_lock (&source->priv->last_values_lock);
g_free (source->priv->last_reason);
@@ -552,9 +552,17 @@ server_side_source_unset_last_credentials_required_arguments_cb (EDBusSource *db
source->priv->last_dbus_error_name = NULL;
source->priv->last_dbus_error_message = NULL;
- e_dbus_source_complete_unset_last_credentials_required_arguments (dbus_interface, invocation);
-
g_mutex_unlock (&source->priv->last_values_lock);
+}
+
+static gboolean
+server_side_source_unset_last_credentials_required_arguments_cb (EDBusSource *dbus_interface,
+ GDBusMethodInvocation *invocation,
+ EServerSideSource *source)
+{
+ server_side_source_unset_last_credentials_required_arguments (source);
+
+ e_dbus_source_complete_unset_last_credentials_required_arguments (dbus_interface, invocation);
return TRUE;
}
@@ -1516,6 +1524,18 @@ server_side_source_invoke_authenticate_impl (ESource *source,
}
static gboolean
+server_side_source_unset_last_credentials_required_arguments_impl (ESource *source,
+ GCancellable *cancellable,
+ GError **error)
+{
+ g_return_val_if_fail (E_IS_SERVER_SIDE_SOURCE (source), FALSE);
+
+ server_side_source_unset_last_credentials_required_arguments (E_SERVER_SIDE_SOURCE (source));
+
+ return TRUE;
+}
+
+static gboolean
server_side_source_initable_init (GInitable *initable,
GCancellable *cancellable,
GError **error)
@@ -1589,6 +1609,7 @@ e_server_side_source_class_init (EServerSideSourceClass *class)
source_class->get_oauth2_access_token_sync = server_side_source_get_oauth2_access_token_sync;
source_class->invoke_credentials_required_impl = server_side_source_invoke_credentials_required_impl;
source_class->invoke_authenticate_impl = server_side_source_invoke_authenticate_impl;
+ source_class->unset_last_credentials_required_arguments_impl =
server_side_source_unset_last_credentials_required_arguments_impl;
g_object_class_install_property (
object_class,
diff --git a/libedataserver/e-source.c b/libedataserver/e-source.c
index 13b931b..dfa4551 100644
--- a/libedataserver/e-source.c
+++ b/libedataserver/e-source.c
@@ -2190,6 +2190,40 @@ source_invoke_authenticate_impl (ESource *source,
}
static gboolean
+source_unset_last_credentials_required_arguments_impl (ESource *source,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GDBusObject *dbus_object;
+ EDBusSource *dbus_source = NULL;
+ gboolean success;
+ GError *local_error = NULL;
+
+ g_return_val_if_fail (E_IS_SOURCE (source), FALSE);
+
+ dbus_object = e_source_ref_dbus_object (source);
+ if (dbus_object != NULL) {
+ dbus_source = e_dbus_object_get_source (E_DBUS_OBJECT (dbus_object));
+ g_object_unref (dbus_object);
+ }
+
+ if (!dbus_source)
+ return FALSE;
+
+ success = e_dbus_source_call_unset_last_credentials_required_arguments_sync (dbus_source,
cancellable, &local_error);
+
+ g_object_unref (dbus_source);
+
+ if (local_error != NULL) {
+ g_dbus_error_strip_remote_error (local_error);
+ g_propagate_error (error, local_error);
+ return FALSE;
+ }
+
+ return success;
+}
+
+static gboolean
source_initable_init (GInitable *initable,
GCancellable *cancellable,
GError **error)
@@ -2386,6 +2420,7 @@ e_source_class_init (ESourceClass *class)
class->get_oauth2_access_token_finish = source_get_oauth2_access_token_finish;
class->invoke_credentials_required_impl = source_invoke_credentials_required_impl;
class->invoke_authenticate_impl = source_invoke_authenticate_impl;
+ class->unset_last_credentials_required_arguments_impl =
source_unset_last_credentials_required_arguments_impl;
g_object_class_install_property (
object_class,
@@ -5392,33 +5427,14 @@ e_source_unset_last_credentials_required_arguments_sync (ESource *source,
GCancellable *cancellable,
GError **error)
{
- GDBusObject *dbus_object;
- EDBusSource *dbus_source = NULL;
- gboolean success;
- GError *local_error = NULL;
+ ESourceClass *klass;
g_return_val_if_fail (E_IS_SOURCE (source), FALSE);
- dbus_object = e_source_ref_dbus_object (source);
- if (dbus_object != NULL) {
- dbus_source = e_dbus_object_get_source (E_DBUS_OBJECT (dbus_object));
- g_object_unref (dbus_object);
- }
-
- if (!dbus_source)
- return FALSE;
-
- success = e_dbus_source_call_unset_last_credentials_required_arguments_sync (dbus_source,
cancellable, &local_error);
-
- g_object_unref (dbus_source);
-
- if (local_error != NULL) {
- g_dbus_error_strip_remote_error (local_error);
- g_propagate_error (error, local_error);
- return FALSE;
- }
+ klass = E_SOURCE_GET_CLASS (source);
+ g_return_val_if_fail (klass->unset_last_credentials_required_arguments_impl != NULL, FALSE);
- return success;
+ return klass->unset_last_credentials_required_arguments_impl (source, cancellable, error);
}
static void
diff --git a/libedataserver/e-source.h b/libedataserver/e-source.h
index 8c645b5..e1d0112 100644
--- a/libedataserver/e-source.h
+++ b/libedataserver/e-source.h
@@ -207,9 +207,13 @@ struct _ESourceClass {
const gchar * const *arg_credentials,
GCancellable *cancellable,
GError **error);
+ gboolean (*unset_last_credentials_required_arguments_impl)
+ (ESource *source,
+ GCancellable *cancellable,
+ GError **error);
/* Reserved slots. */
- gpointer reserved[7];
+ gpointer reserved[6];
};
GType e_source_get_type (void) G_GNUC_CONST;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]