Author: damitha
Date: Thu Oct 11 02:01:45 2007
New Revision: 583743
URL: http://svn.apache.org/viewvc?rev=583743&view=rev
Log:
Improving the code. Moving the database creation code from mod_savan.c to
db_mgr.c
Modified:
webservices/savan/trunk/c/include/savan_constants.h
webservices/savan/trunk/c/include/savan_db_mgr.h
webservices/savan/trunk/c/src/core/mod_savan.c
webservices/savan/trunk/c/src/util/db_mgr.c
Modified: webservices/savan/trunk/c/include/savan_constants.h
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_constants.h?rev=583743&r1=583742&r2=583743&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_constants.h (original)
+++ webservices/savan/trunk/c/include/savan_constants.h Thu Oct 11 02:01:45 2007
@@ -105,6 +105,8 @@
#define ELEM_NAME_REF_PARAM "ReferenceParameter"
#define ELEM_NAME_ID "Identifier"
#define ELEM_NAME_SUB_MGR "SubscriptionManager"
+#define SAVAN_IN_HANDLER "SavanInHandler"
+#define SAVAN_OUT_HANDLER "SavanOutHandler"
/* Keys to set options on the client side */
#define SAVAN_OP_KEY_ENDTO_EPR "savan_op_key_endto"
Modified: webservices/savan/trunk/c/include/savan_db_mgr.h
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_db_mgr.h?rev=583743&r1=583742&r2=583743&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_db_mgr.h (original)
+++ webservices/savan/trunk/c/include/savan_db_mgr.h Thu Oct 11 02:01:45 2007
@@ -146,6 +146,17 @@
savan_subscriber_t *subscriber,
axis2_conf_ctx_t *conf_ctx);
+/**
+ * This function will create the savan_db database if it is not aleardy exists
+ * @param db_mgr database manager instance
+ * @param env axis2c environment
+ * @return status AXIS2_SUCCESS if success, AXIS2_FAILURE if failed.
+ */
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+savan_db_mgr_create_db(
+ savan_db_mgr_t *db_mgr,
+ const axutil_env_t *env);
+
/** @} */
#ifdef __cplusplus
}
Modified: webservices/savan/trunk/c/src/core/mod_savan.c
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/core/mod_savan.c?rev=583743&r1=583742&r2=583743&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/core/mod_savan.c (original)
+++ webservices/savan/trunk/c/src/core/mod_savan.c Thu Oct 11 02:01:45 2007
@@ -19,6 +19,7 @@
#include <mod_savan.h>
#include <sqlite3.h>
#include <savan_db_mgr.h>
+#include <savan_constants.h>
/**************************** Function Prototypes
*****************************/
@@ -51,6 +52,14 @@
axis2_module_t *module = NULL;
module = AXIS2_MALLOC(env->allocator,
sizeof(axis2_module_t));
+ if(!module)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "[savan] Memory allocation failed for Savan Module");
+ return NULL;
+ }
+ /* Do the memset*/
module->ops = &savan_module_ops_var;
return module;
@@ -66,41 +75,30 @@
axis2_module_desc_t *module_desc)
{
/* Any initialization stuff of mod_savan goes here */
- int rc = -1;
- axis2_char_t *error_msg = NULL;
- sqlite3 *dbconn = NULL;
- axis2_char_t *sql_stmt1 = NULL;
- axis2_char_t *sql_stmt2 = NULL;
savan_db_mgr_t *db_mgr = NULL;
+ axis2_status_t status = AXIS2_FAILURE;
+
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[SAVAN] Start:mod_savan_init");
- sql_stmt1 = "create table if not exists topic(topic_name varchar(100) "\
- "primary key, topic_url varchar(200))";
- sql_stmt2 = "create table if not exists subscriber(id varchar(100) "\
- "primary key, end_to varchar(200), notify_to varchar(200), "\
- "delivery_mode varchar(100), expires varchar(100), "\
- "filter varchar(200), topic_name varchar(100), "\
- "renewed boolean)";
db_mgr = savan_db_mgr_create(env, conf_ctx);
- if(db_mgr)
- dbconn = savan_db_mgr_get_dbconn(db_mgr, env);
- if(dbconn)
+ if(!db_mgr)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "[SAVAN] Error creating db_mgr struct");
+ return status;
+ }
+ if(!savan_db_mgr_create_db(db_mgr, env))
{
- rc = sqlite3_exec(dbconn, sql_stmt1, NULL, 0, &error_msg);
- if( rc != SQLITE_OK )
- {
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "SQL Error: %s",
error_msg);
- sqlite3_free(error_msg);
- }
- rc = sqlite3_exec(dbconn, sql_stmt2, NULL, 0, &error_msg);
- if( rc != SQLITE_OK )
- {
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "SQL Error: %s",
error_msg);
- sqlite3_free(error_msg);
- }
- sqlite3_close(dbconn);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[SAVAN] Could not create "\
+ "the database. Check whether database path is correct and "\
+ "accessible. Exit loading the Savan module");
}
+ else
+ status = AXIS2_SUCCESS;
+ if(db_mgr)
+ savan_db_mgr_free(db_mgr, env);
+
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[SAVAN] End:mod_savan_init");
- return AXIS2_SUCCESS;
+ return status;
}
/******************************************************************************/
@@ -116,7 +114,6 @@
*/
axutil_hash_free(module->handler_create_func_map, env);
}
-
if(module)
{
AXIS2_FREE(env->allocator, module);
@@ -139,11 +136,12 @@
AXIS2_FAILURE);
return AXIS2_FAILURE;
}
- axutil_hash_set(module->handler_create_func_map, "SavanInHandler",
+ /* Remove the hard coded strings. Instead use macros */
+ axutil_hash_set(module->handler_create_func_map, SAVAN_IN_HANDLER,
AXIS2_HASH_KEY_STRING, savan_in_handler_create);
- axutil_hash_set(module->handler_create_func_map, "SavanOutHandler",
+ axutil_hash_set(module->handler_create_func_map, SAVAN_OUT_HANDLER,
AXIS2_HASH_KEY_STRING, savan_out_handler_create);
return AXIS2_SUCCESS;
@@ -181,3 +179,4 @@
}
return status;
}
+
Modified: webservices/savan/trunk/c/src/util/db_mgr.c
URL:
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/util/db_mgr.c?rev=583743&r1=583742&r2=583743&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/db_mgr.c (original)
+++ webservices/savan/trunk/c/src/util/db_mgr.c Thu Oct 11 02:01:45 2007
@@ -879,6 +879,54 @@
return data_list;
}
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+savan_db_mgr_create_db(
+ savan_db_mgr_t *db_mgr,
+ const axutil_env_t *env)
+{
+ int rc = -1;
+ axis2_char_t *error_msg = NULL;
+ sqlite3 *dbconn = NULL;
+ axis2_char_t *sql_stmt1 = NULL;
+ axis2_char_t *sql_stmt2 = NULL;
+ axis2_status_t status = AXIS2_FAILURE;
+
+ sql_stmt1 = "create table if not exists topic(topic_name varchar(100) "\
+ "primary key, topic_url varchar(200))";
+ sql_stmt2 = "create table if not exists subscriber(id varchar(100) "\
+ "primary key, end_to varchar(200), notify_to varchar(200), "\
+ "delivery_mode varchar(100), expires varchar(100), "\
+ "filter varchar(200), topic_name varchar(100), "\
+ "renewed boolean)";
+ if(db_mgr)
+ dbconn = savan_db_mgr_get_dbconn(db_mgr, env);
+ if(dbconn)
+ {
+ rc = sqlite3_exec(dbconn, sql_stmt1, NULL, 0, &error_msg);
+ if( rc != SQLITE_OK )
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "Error creating database table topic; SQL Error: %s",
error_msg);
+ sqlite3_free(error_msg);
+ sqlite3_close(dbconn);
+ return AXIS2_FAILURE;
+ }
+ rc = sqlite3_exec(dbconn, sql_stmt2, NULL, 0, &error_msg);
+ if( rc != SQLITE_OK )
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "Error creating database table subscriber; SQL Error: %s",
+ error_msg);
+ sqlite3_free(error_msg);
+ sqlite3_close(dbconn);
+ return AXIS2_FAILURE;
+ }
+ sqlite3_close(dbconn);
+ status = AXIS2_SUCCESS;
+ }
+ return status;
+}
+
int
savan_db_mgr_busy_handler(
sqlite3* dbconn,