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,


Reply via email to