[libgda] Ensure proper virtual prepare_connection() is called
- From: Vivien Malerba <vivien src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] Ensure proper virtual prepare_connection() is called
- Date: Tue, 18 Nov 2014 19:23:22 +0000 (UTC)
commit 30fa6f4b51ede13b51bbabb8b0f96bcaec5a9516
Author: Vivien Malerba <malerba gnome-db org>
Date: Tue Nov 18 20:20:28 2014 +0100
Ensure proper virtual prepare_connection() is called
libgda/sqlite/virtual/gda-vprovider-data-model.c | 23 +++++++++++++++++++++-
providers/ldap/gda-ldap-provider.c | 12 +++++++++-
2 files changed, 32 insertions(+), 3 deletions(-)
---
diff --git a/libgda/sqlite/virtual/gda-vprovider-data-model.c
b/libgda/sqlite/virtual/gda-vprovider-data-model.c
index 0823d74..ac22473 100644
--- a/libgda/sqlite/virtual/gda-vprovider-data-model.c
+++ b/libgda/sqlite/virtual/gda-vprovider-data-model.c
@@ -49,6 +49,8 @@ static GObjectClass *parent_class = NULL;
static GdaConnection *gda_vprovider_data_model_create_connection (GdaServerProvider *provider);
static gboolean gda_vprovider_data_model_open_connection (GdaServerProvider *provider, GdaConnection
*cnc,
GdaQuarkList *params, GdaQuarkList *auth);
+static gboolean gda_vprovider_data_model_prepare_connection (GdaServerProvider *provider,
GdaConnection *cnc,
+ GdaQuarkList *params, GdaQuarkList *auth);
static gboolean gda_vprovider_data_model_close_connection (GdaServerProvider *provider,
GdaConnection *cnc);
static GObject *gda_vprovider_data_model_statement_execute (GdaServerProvider *provider,
GdaConnection *cnc,
@@ -81,7 +83,7 @@ GdaServerProviderBase data_model_base_functions = {
NULL,
NULL,
gda_vprovider_data_model_open_connection,
- NULL,
+ gda_vprovider_data_model_prepare_connection,
gda_vprovider_data_model_close_connection,
NULL,
NULL,
@@ -427,6 +429,25 @@ gda_vprovider_data_model_open_connection (GdaServerProvider *provider, GdaConnec
return TRUE;
}
+static gboolean
+gda_vprovider_data_model_prepare_connection (GdaServerProvider *provider, GdaConnection *cnc,
+ GdaQuarkList *params, GdaQuarkList *auth)
+{
+ g_return_val_if_fail (GDA_IS_VPROVIDER_DATA_MODEL (provider), FALSE);
+ g_return_val_if_fail (GDA_IS_CONNECTION (cnc), FALSE);
+
+ /* calling the parent's function first */
+ GdaServerProviderBase *parent_functions;
+ parent_functions = gda_server_provider_get_impl_functions_for_class (parent_class,
GDA_SERVER_PROVIDER_FUNCTIONS_BASE);
+ if (parent_functions->prepare_connection) {
+ if (! parent_functions->prepare_connection (GDA_SERVER_PROVIDER (provider), cnc, params,
auth))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
static void
cnc_close_foreach_func (G_GNUC_UNUSED GdaDataModel *model, const gchar *table_name, GdaVconnectionDataModel
*cnc)
{
diff --git a/providers/ldap/gda-ldap-provider.c b/providers/ldap/gda-ldap-provider.c
index 9a2dd96..cb0b091 100644
--- a/providers/ldap/gda-ldap-provider.c
+++ b/providers/ldap/gda-ldap-provider.c
@@ -374,7 +374,7 @@ fetch_user_dn (const gchar *url, const gchar *base, const gchar *username, LdapA
*/
static gboolean
gda_ldap_provider_prepare_connection (GdaServerProvider *provider, GdaConnection *cnc,
- GdaQuarkList *params, GdaQuarkList *auth)
+ GdaQuarkList *params, GdaQuarkList *auth)
{
g_return_val_if_fail (GDA_IS_LDAP_PROVIDER (provider), FALSE);
g_return_val_if_fail (GDA_IS_CONNECTION (cnc), FALSE);
@@ -395,6 +395,14 @@ gda_ldap_provider_prepare_connection (GdaServerProvider *provider, GdaConnection
gint rport;
gboolean use_ssl, use_cache;
+ /* calling the parent's function first */
+ GdaServerProviderBase *parent_functions;
+ parent_functions = gda_server_provider_get_impl_functions_for_class (parent_class,
GDA_SERVER_PROVIDER_FUNCTIONS_BASE);
+ if (parent_functions->prepare_connection) {
+ if (! parent_functions->prepare_connection (GDA_SERVER_PROVIDER (provider), cnc, params,
auth))
+ return FALSE;
+ }
+
base_dn = gda_quark_list_find (params, "DB_NAME");
if (!base_dn) {
gda_connection_add_event_string (cnc, "%s",
@@ -815,7 +823,7 @@ gda_ldap_provider_statement_execute (GdaServerProvider *provider, GdaConnection
cmde->table_name,
cmde->base_dn,
cmde->filter, cmde->attributes,
cmde->scope, &lerror))
- retval = (GObject*) gda_set_new (NULL);
+ retval = (GObject*) gda_set_new (NULL);
else {
event = gda_connection_point_available_event (cnc,
GDA_CONNECTION_EVENT_ERROR);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]