Author: damitha
Date: Mon Jun  2 02:47:11 2008
New Revision: 662376

URL: http://svn.apache.org/viewvc?rev=662376&view=rev
Log:
Fixing database related issues

Modified:
    webservices/savan/trunk/c/INSTALL
    webservices/savan/trunk/c/build.sh
    webservices/savan/trunk/c/configure.ac
    webservices/savan/trunk/c/include/savan_constants.h
    webservices/savan/trunk/c/include/savan_db_mgr.h
    webservices/savan/trunk/c/include/savan_util.h
    webservices/savan/trunk/c/samples/build.sh
    webservices/savan/trunk/c/samples/configure.ac
    webservices/savan/trunk/c/src/client/savan_publishing_client.c
    webservices/savan/trunk/c/src/core/mod_savan.c
    webservices/savan/trunk/c/src/core/savan_sub_processor.c
    webservices/savan/trunk/c/src/data/module.xml
    webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c
    webservices/savan/trunk/c/src/subs_mgr/subs_mgr_skel.c
    webservices/savan/trunk/c/src/util/db_mgr.c
    webservices/savan/trunk/c/src/util/savan_util.c

Modified: webservices/savan/trunk/c/INSTALL
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/INSTALL?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/INSTALL (original)
+++ webservices/savan/trunk/c/INSTALL Mon Jun  2 02:47:11 2008
@@ -35,7 +35,7 @@
 This will install the Savan/C as a module in Axis2/C in <AXIS2C_HOME>/modules 
folder. The module
 folder contains the Savan/C libraries and the module.xml file. In the 
module.xml file give a valid path 
 for database storage. The database name should be savan_db.
-<parameter name="savan_db" locked="false">/axis2c/deploy/savan_db</parameter>
+<parameter name="savan_db" locked="false">/tmp/savan_db</parameter>
 It will also install libsavan_client.so savan client
 library in <AXIS2C_HOME>/lib folder. This client library is needed for savan 
clients to be linked with.
 To test the installation you can run the subscriber sample by running 
@@ -62,7 +62,7 @@
     To deploy Savan/C in Axis2/C running environment do the following
     1. Copy the modules/savan into <AXIS2C_HOME>/modules folder.
     2  In the module.xml file give a valid path for database storage. savan_db 
should be the database name.
-        <parameter name="savan_db" 
locked="false">/axis2c/deploy/savan_db</parameter>
+        <parameter name="savan_db" locked="false">/tmp/savan_db</parameter>
     3. Copy the libsavan_client.so into <AXIS2C_HOME>/lib folder. This client 
library is needed for savan clients 
         to be linked with.
     4. Copy the samples/server/axis2.xml into <AXIS2C_HOME> or do neccessary 
changes as described in README 
@@ -105,7 +105,7 @@
 
     1 Copy Savan directory ( containing savan dll and module.xml ) to 
<AXIS2C_HOME>\modules directory.
     2  In the module.xml file give a valid path for database storage. savan_db 
should be the database name.
-        <parameter name="savan_db" 
locked="false">/axis2c/deploy/savan_db</parameter>
+        <parameter name="savan_db" locked="false">/tmp/savan_db</parameter>
     3. Copy the savan_client.dll into <AXIS2C_HOME>/lib folder. This client 
library is needed for savan clients 
         to be linked with.
     4. Copy the samples/server/axis2.xml into <AXIS2C_HOME> or do neccessary 
changes as described in README 

Modified: webservices/savan/trunk/c/build.sh
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/build.sh?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/build.sh (original)
+++ webservices/savan/trunk/c/build.sh Mon Jun  2 02:47:11 2008
@@ -4,9 +4,9 @@
 make -j30
 make install
 
-cd samples
-sh autogen.sh
-./configure --prefix=${AXIS2C_HOME} 
--with-axis2=${AXIS2C_HOME}/include/axis2-1.4.0 
--with-savan=${AXIS2C_HOME}/include/savan-0.90
-make -j10
-make install
-cd ..
+#cd samples
+#sh autogen.sh
+#./configure --prefix=${AXIS2C_HOME} 
--with-axis2=${AXIS2C_HOME}/include/axis2-1.4.0 
--with-savan=${AXIS2C_HOME}/include/savan-0.90
+#make -j10
+#make install
+#cd ..

Modified: webservices/savan/trunk/c/configure.ac
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/configure.ac?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/configure.ac (original)
+++ webservices/savan/trunk/c/configure.ac Mon Jun  2 02:47:11 2008
@@ -26,7 +26,7 @@
 
 CFLAGS="$CFLAGS -D_LARGEFILE64_SOURCE"
 if test "$GCC" = "yes"; then
-    CFLAGS="$CFLAGS -ansi -Wall -Wno-implicit-function-declaration"
+    CFLAGS="$CFLAGS -ansi -Wall -Wno-implicit-function-declaration -Werror"
     #CFLAGS="$CFLAGS -ansi -Wall -Wno-implicit-function-declaration"
 fi
 LDFLAGS="-lpthread"

Modified: webservices/savan/trunk/c/include/savan_constants.h
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_constants.h?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_constants.h (original)
+++ webservices/savan/trunk/c/include/savan_constants.h Mon Jun  2 02:47:11 2008
@@ -123,6 +123,7 @@
 #define SAVAN_SUBSCRIBER       "savan_subscriber"
 #define SAVAN_TOPIC_LIST       "savan_topic_list"
 #define SAVAN_DB "savan_db"
+#define SAVAN_MODULE  "savan"
 
 /** @} */
 #ifdef __cplusplus

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=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_db_mgr.h (original)
+++ webservices/savan/trunk/c/include/savan_db_mgr.h Mon Jun  2 02:47:11 2008
@@ -29,7 +29,6 @@
 #include <axutil_string.h>
 #include <axutil_utils.h>
 #include <axutil_array_list.h>
-#include <axis2_conf_ctx.h>
 #include <savan_subscriber.h>
 #include <sqlite3.h>
 
@@ -50,13 +49,13 @@
  */
 typedef struct savan_db_mgr
 {
-    axis2_conf_ctx_t *conf_ctx;
+    axis2_char_t *dbname;
 }savan_db_mgr_t;
 
 AXIS2_EXTERN savan_db_mgr_t * AXIS2_CALL
 savan_db_mgr_create(
     const axutil_env_t *env,
-    axis2_conf_ctx_t *conf_ctx);
+    axis2_char_t *dbname);
 
 AXIS2_EXTERN void AXIS2_CALL
 savan_db_mgr_free(
@@ -134,17 +133,10 @@
     savan_db_mgr_t *db_mgr, 
     const axutil_env_t *env);
 
-AXIS2_EXTERN axis2_char_t *AXIS2_CALL
-savan_db_mgr_create_insert_sql(
-    const axutil_env_t *env,
-    savan_subscriber_t *subscriber,
-    axis2_conf_ctx_t *conf_ctx);
-
 axis2_char_t *AXIS2_CALL
 savan_db_mgr_create_update_sql(
     const axutil_env_t *env,
-    savan_subscriber_t *subscriber,
-    axis2_conf_ctx_t *conf_ctx);
+    savan_subscriber_t *subscriber);
 
 /**
  * This function will create the savan_db database if it is not aleardy exists

Modified: webservices/savan/trunk/c/include/savan_util.h
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/include/savan_util.h?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/include/savan_util.h (original)
+++ webservices/savan/trunk/c/include/savan_util.h Mon Jun  2 02:47:11 2008
@@ -296,6 +296,11 @@
     savan_util_get_svc_client(
         const axutil_env_t *env);
 
+    axis2_char_t *AXIS2_CALL
+    savan_util_get_dbname(
+        const axutil_env_t *env,
+        axis2_conf_ctx_t *conf_ctx);
+
 /** @} */
 #ifdef __cplusplus
 }

Modified: webservices/savan/trunk/c/samples/build.sh
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/samples/build.sh?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/samples/build.sh (original)
+++ webservices/savan/trunk/c/samples/build.sh Mon Jun  2 02:47:11 2008
@@ -2,6 +2,6 @@
 
 ./autogen.sh
 
-./configure --prefix=${AXIS2C_HOME} 
--with-axis2=${AXIS2C_HOME}/include/axis2-1.3.0 
--with-savan=${AXIS2C_HOME}/include/savan-0.90
-make -j30
-
+./configure --prefix=${AXIS2C_HOME} 
--with-axis2=${AXIS2C_HOME}/include/axis2-1.4.0 
--with-savan=${AXIS2C_HOME}/include/savan-0.90
+make -j10
+make install

Modified: webservices/savan/trunk/c/samples/configure.ac
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/samples/configure.ac?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/samples/configure.ac (original)
+++ webservices/savan/trunk/c/samples/configure.ac Mon Jun  2 02:47:11 2008
@@ -47,7 +47,7 @@
 dnl Checks for libraries.
 AC_CHECK_LIB(dl, dlopen)
 
-CFLAGS="$CFLAGS -ansi -Wall -D_LARGEFILE64_SOURCE "
+CFLAGS="$CFLAGS -ansi -Wall -D_LARGEFILE64_SOURCE -Werror"
 LDFLAGS="$LDFLAGS -lpthread"
 
 dnl Checks for header files.

Modified: webservices/savan/trunk/c/src/client/savan_publishing_client.c
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/client/savan_publishing_client.c?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/client/savan_publishing_client.c (original)
+++ webservices/savan/trunk/c/src/client/savan_publishing_client.c Mon Jun  2 
02:47:11 2008
@@ -156,7 +156,7 @@
             "expires, filter, renewed, topic_url from subscriber, topic"\
             " where topic.topic_name=subscriber.topic_name and"\
             " topic.topic_name='%s';", topic_name);
-        db_mgr = savan_db_mgr_create(env, conf_ctx);
+        db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, 
conf_ctx));
         if(!db_mgr)
         {
             AXIS2_LOG_ERROR (env->log, AXIS2_LOG_SI,

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=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/core/mod_savan.c (original)
+++ webservices/savan/trunk/c/src/core/mod_savan.c Mon Jun  2 02:47:11 2008
@@ -17,9 +17,11 @@
 #include <axis2_conf_ctx.h>
 
 #include <mod_savan.h>
-#include <sqlite3.h>
 #include <savan_db_mgr.h>
 #include <savan_constants.h>
+#include <savan_util.h>
+
+#include <sqlite3.h>
 
 /**************************** Function Prototypes 
*****************************/
 
@@ -44,8 +46,6 @@
        mod_savan_fill_handler_create_func_map
 };
 
-/*************************** End of Function Prototypes 
***********************/
-
 axis2_module_t *
 mod_savan_create(const axutil_env_t *env)
 {
@@ -65,8 +65,6 @@
     return module;
 }
 
-/******************************************************************************/
-
 axis2_status_t AXIS2_CALL
 mod_savan_init(
         axis2_module_t *module,
@@ -78,18 +76,17 @@
        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");
-    db_mgr = savan_db_mgr_create(env, conf_ctx);
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[SAVAN] Entry:mod_savan_init");
+    db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, conf_ctx));
     if(!db_mgr)
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, 
-            "[SAVAN] Error creating db_mgr struct");
+        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))
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[SAVAN] Could not create "\
+        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");
     }
@@ -103,12 +100,11 @@
         savan_db_mgr_free(db_mgr, env);
     }
 
-    AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[SAVAN] End:mod_savan_init");
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] Exit:mod_savan_init");
+
     return status;
 }
 
-/******************************************************************************/
-
 axis2_status_t AXIS2_CALL
 mod_savan_shutdown(axis2_module_t *module,
                         const axutil_env_t *env)
@@ -127,8 +123,6 @@
     return AXIS2_SUCCESS; 
 }
 
-/******************************************************************************/
-
 axis2_status_t AXIS2_CALL
 mod_savan_fill_handler_create_func_map(axis2_module_t *module,
                                             const axutil_env_t *env)
@@ -153,8 +147,6 @@
     return AXIS2_SUCCESS;
 }
 
-/******************************************************************************/
-
 /**
  * Following block distinguish the exposed part of the dll.
  */
@@ -172,8 +164,6 @@
     return AXIS2_SUCCESS;
 }
 
-/******************************************************************************/
-
 AXIS2_EXPORT int 
 axis2_remove_instance(axis2_module_t *inst,
                       const axutil_env_t *env)

Modified: webservices/savan/trunk/c/src/core/savan_sub_processor.c
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/core/savan_sub_processor.c?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/core/savan_sub_processor.c (original)
+++ webservices/savan/trunk/c/src/core/savan_sub_processor.c Mon Jun  2 
02:47:11 2008
@@ -249,7 +249,7 @@
     savan_subscriber_set_expires(subscriber, env, renewed_expires);
     savan_subscriber_set_renew_status(subscriber, env, AXIS2_TRUE);
     conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
-    db_mgr = savan_db_mgr_create(env, conf_ctx);
+    db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, conf_ctx));
     if(db_mgr)
         status = savan_db_mgr_update_subscriber(db_mgr, env, subscriber);
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 

Modified: webservices/savan/trunk/c/src/data/module.xml
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/data/module.xml?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/data/module.xml (original)
+++ webservices/savan/trunk/c/src/data/module.xml Mon Jun  2 02:47:11 2008
@@ -1,7 +1,7 @@
 <module name="savan" class="mod_savan">
     <!--parameter name="SubscriptionMgrURL" 
locked="xsd:false">http://localhost:9092/axis2/services/subscription</parameter-->
    <!-- Database connection parameters -->
-   <!--parameter name="savan_db" 
locked="false">/axis2c/deploy/savan_db</parameter-->
+   <!--parameter name="savan_db" locked="false">/tmp/savan_db</parameter-->
     <inflow>
         <handler name="SavanInHandler" class="mod_savan">
             <order phase="SavanPhase"/>

Modified: webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c (original)
+++ webservices/savan/trunk/c/src/subs_mgr/subs_mgr.c Mon Jun  2 02:47:11 2008
@@ -179,7 +179,7 @@
     {
         savan_db_mgr_t *db_mgr = NULL;
 
-        db_mgr = savan_db_mgr_create(env, conf_ctx);
+        db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, 
conf_ctx));
         if(savan_db_mgr_insert_subscriber(db_mgr, env, subscriber))
             AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
                 "[savan] Subscriber %s added to the topic:%s", id, topic_url);
@@ -247,7 +247,7 @@
     
     sprintf(sql_remove, "delete from subscriber where id='%s'",
         id);
-    db_mgr = savan_db_mgr_create(env, conf_ctx);
+    db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, conf_ctx));
     if(db_mgr)
         savan_db_mgr_remove(db_mgr, env, sql_remove);
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
@@ -339,7 +339,7 @@
     sprintf(sql_retrieve, "select id, end_to, notify_to, delivery_mode, "\
         "expires, filter, renewed, topic_url from subscriber, topic"\
         " where id='%s' and topic.topic_name=subscriber.topic_name;", subs_id);
-    db_mgr = savan_db_mgr_create(env, conf_ctx);
+    db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, conf_ctx));
     if(db_mgr)
         subscriber = savan_db_mgr_retrieve(db_mgr, env, 
         savan_db_mgr_subs_retrieve_callback, sql_retrieve);
@@ -498,7 +498,7 @@
         "expires, filter, topic_url, renewed from subscriber, topic where "\
         "subscriber.topic_name=topic.topic_name and topic.topic_name='%s';", 
             topic);
-    db_mgr = savan_db_mgr_create(env, conf_ctx);
+    db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, conf_ctx));
     if(db_mgr)
     {
         subs_store = savan_db_mgr_retrieve_all(db_mgr, env, 
@@ -653,7 +653,7 @@
     topic_list_elem = axiom_element_create(env, NULL, ELEM_NAME_TOPICS, ns1, 
         &topic_list_node);
     sprintf(sql_retrieve, "select topic_url from topic;");
-    db_mgr = savan_db_mgr_create(env, conf_ctx);
+    db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, conf_ctx));
     if(db_mgr)
         topic_store = savan_db_mgr_retrieve_all(db_mgr, env, 
             savan_db_mgr_topic_find_callback, sql_retrieve);

Modified: webservices/savan/trunk/c/src/subs_mgr/subs_mgr_skel.c
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/subs_mgr/subs_mgr_skel.c?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/subs_mgr/subs_mgr_skel.c (original)
+++ webservices/savan/trunk/c/src/subs_mgr/subs_mgr_skel.c Mon Jun  2 02:47:11 
2008
@@ -33,6 +33,7 @@
 #include "savan_subs_mgr.h"
 #include <savan_constants.h>
 #include <savan_db_mgr.h>
+#include <savan_util.h>
 
 int AXIS2_CALL
 savan_subs_mgr_free(
@@ -145,7 +146,7 @@
         if(0 == axutil_strcmp(topic_name, "wsamapping"))
             continue;
 
-        db_mgr = savan_db_mgr_create(env, conf_ctx);
+        db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, 
conf_ctx));
         if(savan_db_mgr_insert_topic(db_mgr, env, topic_name, topic_url_str))
             AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, 
                 "[SAVAN] Topic %s added", topic_url_str);

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=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/db_mgr.c (original)
+++ webservices/savan/trunk/c/src/util/db_mgr.c Mon Jun  2 02:47:11 2008
@@ -19,7 +19,6 @@
 #include <axutil_hash.h>
 #include <axutil_thread.h>
 #include <axutil_property.h>
-#include <axis2_conf_ctx.h>
 #include <axutil_types.h>
 #include <platforms/axutil_platform_auto_sense.h>
 #include <savan_constants.h>
@@ -57,13 +56,13 @@
 AXIS2_EXTERN savan_db_mgr_t * AXIS2_CALL
 savan_db_mgr_create(
     const axutil_env_t *env,
-    axis2_conf_ctx_t *conf_ctx)
+    axis2_char_t *dbname)
 {
     savan_db_mgr_t *db_mgr = NULL;
     
-    AXIS2_ENV_CHECK(env, NULL);
     db_mgr = AXIS2_MALLOC(env->allocator, sizeof(savan_db_mgr_t));
-    db_mgr->conf_ctx = conf_ctx;
+
+    db_mgr->dbname = axutil_strdup(env, dbname);
 
     return db_mgr;
 }
@@ -75,6 +74,13 @@
 {
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
         "[SAVAN] Start:savan_db_mgr_free");
+
+    if(db_mgr->dbname)
+    {
+        AXIS2_FREE(env->allocator, db_mgr->dbname);
+        db_mgr->dbname = NULL;
+    }
+
     if(db_mgr)
     {
         AXIS2_FREE(env->allocator, db_mgr);
@@ -895,6 +901,27 @@
     axis2_char_t *sql_stmt1 = NULL;
     axis2_char_t *sql_stmt2 = NULL;
     axis2_status_t status = AXIS2_FAILURE;
+    const axis2_char_t *dbname = NULL;
+
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] 
Entry:savan_db_mgr_create_db");
+
+    dbname = db_mgr->dbname;
+
+    if(AXIS2_SUCCESS == axutil_file_handler_access(dbname, AXIS2_F_OK))
+    {
+        AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[savan] Database %s already 
created.", dbname);
+        return AXIS2_SUCCESS;
+    }
+
+    dbconn = savan_db_mgr_get_dbconn(db_mgr, env);
+
+    #if !defined(WIN32)
+    {
+        axis2_char_t permission_str[256];
+        sprintf(permission_str, "chmod 777 %s", dbname);
+        system(permission_str);
+    }
+    #endif
 
     sql_stmt1 = "create table if not exists topic(topic_name varchar(100) "\
                  "primary key, topic_url varchar(200))";
@@ -903,25 +930,25 @@
                   "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);
+                "[savan] 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);
+                    "[savan] Error creating database table subscriber; SQL 
Error: %s", error_msg);
+
             sqlite3_free(error_msg);
             sqlite3_close(dbconn);
             return AXIS2_FAILURE;
@@ -929,6 +956,14 @@
         sqlite3_close(dbconn);
         status = AXIS2_SUCCESS;
     }
+    else
+    {
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Database %s creation 
failed", dbname);
+        return AXIS2_FAILURE;
+    }
+
+    AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[savan] 
Exit:savan_db_mgr_create_db");
+
     return status;
 }
 
@@ -961,49 +996,28 @@
     savan_db_mgr_t *db_mgr, 
     const axutil_env_t *env)
 {
-    axis2_conf_ctx_t *conf_ctx = db_mgr->conf_ctx;
-    axis2_conf_t *conf = NULL; 
-    axis2_char_t *path = "./savan_db";
     int rc = -1;
     sqlite3 *dbconn = NULL;
 
-    conf = axis2_conf_ctx_get_conf(conf_ctx, env);
-    {
-        axis2_module_desc_t *module_desc = NULL;
-        axutil_qname_t *qname = NULL;
-        qname = axutil_qname_create(env, "savan", NULL, NULL);
-        module_desc = axis2_conf_get_module(conf, env, qname);
-        if(module_desc)
-        {
-            axutil_param_t *db_param = NULL;
-            db_param = axis2_module_desc_get_param(module_desc, env, SAVAN_DB);
-            if(db_param)
-            {
-                path = (axis2_char_t *) axutil_param_get_value(db_param, env);
-            }
-        }
-        axutil_qname_free(qname, env);
-    }
-    rc = sqlite3_open(path, &dbconn);
+    rc = sqlite3_open(db_mgr->dbname, &dbconn);
     if(rc != SQLITE_OK)
     {
         AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Can't open database: %s"
-            " sqlite error: %s\n", path, sqlite3_errmsg(dbconn));
+            " sqlite error: %s\n", db_mgr->dbname, sqlite3_errmsg(dbconn));
         sqlite3_close(dbconn);
         dbconn = NULL;
         return NULL;
     }
+
     return dbconn;
 }
 
 axis2_char_t *AXIS2_CALL
 savan_db_mgr_create_update_sql(
     const axutil_env_t *env,
-    savan_subscriber_t *subscriber,
-    axis2_conf_ctx_t *conf_ctx)
+    savan_subscriber_t *subscriber)
 {
     axis2_char_t *sql_update = NULL;
-    savan_db_mgr_t *db_mgr = NULL;
     axis2_char_t *id = NULL;
     axis2_char_t *endto = NULL;
     axis2_char_t *notifyto = NULL;
@@ -1033,11 +1047,12 @@
         topic = savan_util_get_topic_name_from_topic_url(env, topic_url);
     }
     renewed = savan_subscriber_get_renew_status(subscriber, env);
-    db_mgr = savan_db_mgr_create(env, conf_ctx);
+
     sprintf(sql_update, "update subscriber set end_to='%s', notify_to='%s',"\
         "delivery_mode='%s', expires='%s', filter='%s', topic_name='%s', 
renewed=%d"\
         " where id='%s'", endto, notifyto, delivery_mode, expires, filter, 
topic, 
         renewed, id);
+
     return sql_update;
 }
 

Modified: webservices/savan/trunk/c/src/util/savan_util.c
URL: 
http://svn.apache.org/viewvc/webservices/savan/trunk/c/src/util/savan_util.c?rev=662376&r1=662375&r2=662376&view=diff
==============================================================================
--- webservices/savan/trunk/c/src/util/savan_util.c (original)
+++ webservices/savan/trunk/c/src/util/savan_util.c Mon Jun  2 02:47:11 2008
@@ -450,7 +450,7 @@
         sprintf(sql_retrieve, "select id, end_to, notify_to, delivery_mode, "\
             "expires, filter, renewed, topic_url from subscriber, topic"\
             " where id='%s' and topic.topic_name=subscriber.topic_name;", 
sub_id);
-        db_mgr = savan_db_mgr_create(env, conf_ctx);
+        db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, 
conf_ctx));
         if(db_mgr)
             subscriber = savan_db_mgr_retrieve(db_mgr, env, 
             savan_db_mgr_subs_retrieve_callback, sql_retrieve);
@@ -509,7 +509,7 @@
     {
         savan_db_mgr_t *db_mgr = NULL;
         axis2_conf_ctx_t *conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
-        db_mgr = savan_db_mgr_create(env, conf_ctx);
+        db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, 
conf_ctx));
         if(db_mgr)
             status = savan_db_mgr_insert_subscriber(db_mgr, env, subscriber);
     }
@@ -539,7 +539,7 @@
     {
         savan_db_mgr_t *db_mgr = NULL;
         axis2_conf_ctx_t *conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
-        db_mgr = savan_db_mgr_create(env, conf_ctx);
+        db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, 
conf_ctx));
         if(db_mgr)
             savan_db_mgr_update_subscriber(db_mgr, env, subscriber);
     } 
@@ -568,7 +568,7 @@
         /* Extract the store from the svc and remove the given subscriber */
         sprintf(sql_remove, "delete from subscriber where id='%s'",
             subs_id);
-        db_mgr = savan_db_mgr_create(env, conf_ctx);
+        db_mgr = savan_db_mgr_create(env, savan_util_get_dbname(env, 
conf_ctx));
         if(db_mgr)
             savan_db_mgr_remove(db_mgr, env, sql_remove);
     }
@@ -1386,3 +1386,31 @@
     return svc_client;
 }
 
+axis2_char_t *AXIS2_CALL
+savan_util_get_dbname(
+    const axutil_env_t *env,
+    axis2_conf_ctx_t *conf_ctx)
+{
+    axis2_conf_t *conf = NULL; 
+    axis2_char_t *path = "./savan_db";
+    axis2_module_desc_t *module_desc = NULL;
+    axutil_qname_t *qname = NULL;
+
+    conf = axis2_conf_ctx_get_conf(conf_ctx, env);
+    qname = axutil_qname_create(env, SAVAN_MODULE, NULL, NULL);
+    module_desc = axis2_conf_get_module(conf, env, qname);
+    if(module_desc)
+    {
+        axutil_param_t *db_param = NULL;
+        db_param = axis2_module_desc_get_param(module_desc, env, SAVAN_DB);
+        if(db_param)
+        {
+            path = (axis2_char_t *) axutil_param_get_value(db_param, env);
+        }
+    }
+    axutil_qname_free(qname, env);
+    
+    return path;
+}
+
+


Reply via email to